OSDN Git Service

camera: Add device info version
[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           </ul>
522         </li>
523         <li>
524           <span class="toc_kind_header">dynamic</span>
525           <ul class="toc_section">
526             <li
527             ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
528             <li
529             ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
530             <li
531             ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
532             <li
533             ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
534             <li
535             ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
536             <li
537             ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
538             <li
539             ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
540             <li
541             ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
542             <li
543             ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
544             <li
545             ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
546             <li
547             ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
548           </ul>
549         </li>
550       </ul> <!-- toc_section -->
551     </li>
552     <li>
553       <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
554       <ul class="toc_section">
555         <li>
556           <span class="toc_kind_header">controls</span>
557           <ul class="toc_section">
558             <li
559             ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
560             <li
561             ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
562           </ul>
563         </li>
564         <li>
565           <span class="toc_kind_header">static</span>
566           <ul class="toc_section">
567             <li
568             ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
569           </ul>
570         </li>
571         <li>
572           <span class="toc_kind_header">dynamic</span>
573           <ul class="toc_section">
574             <li
575             ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
576           </ul>
577         </li>
578       </ul> <!-- toc_section -->
579     </li>
580     <li>
581       <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
582       <ul class="toc_section">
583         <li>
584           <span class="toc_kind_header">static</span>
585           <ul class="toc_section">
586             <li
587                 class="toc_deprecated"
588             ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
589             <li
590                 class="toc_deprecated"
591             ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
592             <li
593                 class="toc_deprecated"
594             ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
595             <li
596                 class="toc_deprecated"
597             ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
598           </ul>
599         </li>
600         <li>
601           <span class="toc_kind_header">dynamic</span>
602           <ul class="toc_section">
603             <li
604                 class="toc_deprecated"
605             ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
606           </ul>
607         </li>
608       </ul> <!-- toc_section -->
609     </li>
610     <li>
611       <span class="toc_section_header"><a href="#section_request">request</a></span>
612       <ul class="toc_section">
613         <li>
614           <span class="toc_kind_header">controls</span>
615           <ul class="toc_section">
616             <li
617                 class="toc_deprecated"
618             ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
619             <li
620             ><a href="#controls_android.request.id">android.request.id</a></li>
621             <li
622                 class="toc_deprecated"
623             ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
624             <li
625             ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
626             <li
627                 class="toc_deprecated"
628             ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
629             <li
630                 class="toc_deprecated"
631             ><a href="#controls_android.request.type">android.request.type</a></li>
632           </ul>
633         </li>
634         <li>
635           <span class="toc_kind_header">static</span>
636           <ul class="toc_section">
637             <li
638             ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
639             <li
640             ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
641             <li
642             ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
643             <li
644             ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
645             <li
646                 class="toc_deprecated"
647             ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
648             <li
649             ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
650             <li
651             ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
652             <li
653             ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
654             <li
655             ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
656             <li
657             ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
658             <li
659             ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
660             <li
661             ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
662             <li
663             ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li>
664           </ul>
665         </li>
666         <li>
667           <span class="toc_kind_header">dynamic</span>
668           <ul class="toc_section">
669             <li
670                 class="toc_deprecated"
671             ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
672             <li
673             ><a href="#dynamic_android.request.id">android.request.id</a></li>
674             <li
675             ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
676             <li
677                 class="toc_deprecated"
678             ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
679             <li
680             ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
681           </ul>
682         </li>
683       </ul> <!-- toc_section -->
684     </li>
685     <li>
686       <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
687       <ul class="toc_section">
688         <li>
689           <span class="toc_kind_header">controls</span>
690           <ul class="toc_section">
691             <li
692             ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
693           </ul>
694         </li>
695         <li>
696           <span class="toc_kind_header">static</span>
697           <ul class="toc_section">
698             <li
699                 class="toc_deprecated"
700             ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
701             <li
702                 class="toc_deprecated"
703             ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
704             <li
705                 class="toc_deprecated"
706             ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
707             <li
708             ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
709             <li
710                 class="toc_deprecated"
711             ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
712             <li
713                 class="toc_deprecated"
714             ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
715             <li
716                 class="toc_deprecated"
717             ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
718             <li
719                 class="toc_deprecated"
720             ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
721             <li
722             ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
723             <li
724             ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
725             <li
726             ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
727             <li
728             ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
729             <li
730             ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
731             <li
732             ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
733           </ul>
734         </li>
735         <li>
736           <span class="toc_kind_header">dynamic</span>
737           <ul class="toc_section">
738             <li
739             ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
740           </ul>
741         </li>
742       </ul> <!-- toc_section -->
743     </li>
744     <li>
745       <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
746       <ul class="toc_section">
747         <li>
748           <span class="toc_kind_header">controls</span>
749           <ul class="toc_section">
750             <li
751             ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
752             <li
753             ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
754             <li
755             ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
756             <li
757             ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
758             <li
759             ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
760           </ul>
761         </li>
762         <li>
763           <span class="toc_kind_header">static</span>
764           <ul class="toc_section">
765
766             <li
767             ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
768             <li
769             ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
770             <li
771             ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
772             <li
773             ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
774             <li
775             ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
776             <li
777             ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
778             <li
779             ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
780             <li
781             ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
782             <li
783             ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
784             <li
785             ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
786             <li
787             ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
788
789             <li
790             ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
791             <li
792             ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
793             <li
794             ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
795             <li
796             ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
797             <li
798             ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
799             <li
800             ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
801             <li
802             ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
803             <li
804             ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
805             <li
806             ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
807             <li
808             ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
809             <li
810             ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
811             <li
812             ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
813             <li
814             ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
815             <li
816             ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
817             <li
818             ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
819             <li
820             ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
821           </ul>
822         </li>
823         <li>
824           <span class="toc_kind_header">dynamic</span>
825           <ul class="toc_section">
826             <li
827             ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
828             <li
829             ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
830             <li
831             ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
832             <li
833             ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
834             <li
835             ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
836             <li
837             ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
838             <li
839             ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
840             <li
841             ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
842             <li
843             ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
844             <li
845             ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
846             <li
847             ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
848             <li
849             ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
850             <li
851             ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
852             <li
853             ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
854             <li
855             ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
856           </ul>
857         </li>
858       </ul> <!-- toc_section -->
859     </li>
860     <li>
861       <span class="toc_section_header"><a href="#section_shading">shading</a></span>
862       <ul class="toc_section">
863         <li>
864           <span class="toc_kind_header">controls</span>
865           <ul class="toc_section">
866             <li
867             ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
868             <li
869             ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
870           </ul>
871         </li>
872         <li>
873           <span class="toc_kind_header">dynamic</span>
874           <ul class="toc_section">
875             <li
876             ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
877           </ul>
878         </li>
879         <li>
880           <span class="toc_kind_header">static</span>
881           <ul class="toc_section">
882             <li
883             ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
884           </ul>
885         </li>
886       </ul> <!-- toc_section -->
887     </li>
888     <li>
889       <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
890       <ul class="toc_section">
891         <li>
892           <span class="toc_kind_header">controls</span>
893           <ul class="toc_section">
894             <li
895             ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
896             <li
897             ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
898             <li
899             ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
900             <li
901             ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
902             <li
903             ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
904           </ul>
905         </li>
906         <li>
907           <span class="toc_kind_header">static</span>
908           <ul class="toc_section">
909
910             <li
911             ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
912             <li
913             ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
914             <li
915             ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
916             <li
917             ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
918             <li
919             ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
920             <li
921             ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
922             <li
923             ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
924             <li
925             ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
926
927           </ul>
928         </li>
929         <li>
930           <span class="toc_kind_header">dynamic</span>
931           <ul class="toc_section">
932             <li
933             ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
934             <li
935             ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
936             <li
937             ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
938             <li
939             ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
940             <li
941             ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
942             <li
943             ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
944             <li
945             ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
946             <li
947             ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
948             <li
949             ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
950             <li
951             ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
952             <li
953             ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
954             <li
955             ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
956             <li
957                 class="toc_deprecated"
958             ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
959             <li
960                 class="toc_deprecated"
961             ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
962             <li
963             ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
964             <li
965             ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
966             <li
967             ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
968             <li
969             ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
970           </ul>
971         </li>
972       </ul> <!-- toc_section -->
973     </li>
974     <li>
975       <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
976       <ul class="toc_section">
977         <li>
978           <span class="toc_kind_header">controls</span>
979           <ul class="toc_section">
980             <li
981             ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
982             <li
983             ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
984             <li
985             ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
986             <li
987             ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
988             <li
989             ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
990             <li
991             ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
992             <li
993             ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
994           </ul>
995         </li>
996         <li>
997           <span class="toc_kind_header">static</span>
998           <ul class="toc_section">
999             <li
1000             ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
1001             <li
1002             ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
1003           </ul>
1004         </li>
1005         <li>
1006           <span class="toc_kind_header">dynamic</span>
1007           <ul class="toc_section">
1008             <li
1009             ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1010             <li
1011             ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1012             <li
1013             ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1014             <li
1015             ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1016             <li
1017             ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1018             <li
1019             ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1020             <li
1021             ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1022           </ul>
1023         </li>
1024       </ul> <!-- toc_section -->
1025     </li>
1026     <li>
1027       <span class="toc_section_header"><a href="#section_led">led</a></span>
1028       <ul class="toc_section">
1029         <li>
1030           <span class="toc_kind_header">controls</span>
1031           <ul class="toc_section">
1032             <li
1033             ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1034           </ul>
1035         </li>
1036         <li>
1037           <span class="toc_kind_header">dynamic</span>
1038           <ul class="toc_section">
1039             <li
1040             ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1041           </ul>
1042         </li>
1043         <li>
1044           <span class="toc_kind_header">static</span>
1045           <ul class="toc_section">
1046             <li
1047             ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1048           </ul>
1049         </li>
1050       </ul> <!-- toc_section -->
1051     </li>
1052     <li>
1053       <span class="toc_section_header"><a href="#section_info">info</a></span>
1054       <ul class="toc_section">
1055         <li>
1056           <span class="toc_kind_header">static</span>
1057           <ul class="toc_section">
1058             <li
1059             ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1060             <li
1061             ><a href="#static_android.info.version">android.info.version</a></li>
1062           </ul>
1063         </li>
1064       </ul> <!-- toc_section -->
1065     </li>
1066     <li>
1067       <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1068       <ul class="toc_section">
1069         <li>
1070           <span class="toc_kind_header">controls</span>
1071           <ul class="toc_section">
1072             <li
1073             ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1074           </ul>
1075         </li>
1076         <li>
1077           <span class="toc_kind_header">dynamic</span>
1078           <ul class="toc_section">
1079             <li
1080             ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1081           </ul>
1082         </li>
1083       </ul> <!-- toc_section -->
1084     </li>
1085     <li>
1086       <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1087       <ul class="toc_section">
1088         <li>
1089           <span class="toc_kind_header">dynamic</span>
1090           <ul class="toc_section">
1091             <li
1092             ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1093           </ul>
1094         </li>
1095         <li>
1096           <span class="toc_kind_header">static</span>
1097           <ul class="toc_section">
1098             <li
1099             ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1100           </ul>
1101         </li>
1102       </ul> <!-- toc_section -->
1103     </li>
1104     <li>
1105       <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1106       <ul class="toc_section">
1107         <li>
1108           <span class="toc_kind_header">controls</span>
1109           <ul class="toc_section">
1110             <li
1111             ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1112           </ul>
1113         </li>
1114         <li>
1115           <span class="toc_kind_header">dynamic</span>
1116           <ul class="toc_section">
1117             <li
1118             ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1119           </ul>
1120         </li>
1121         <li>
1122           <span class="toc_kind_header">static</span>
1123           <ul class="toc_section">
1124             <li
1125             ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1126           </ul>
1127         </li>
1128       </ul> <!-- toc_section -->
1129     </li>
1130     <li>
1131       <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1132       <ul class="toc_section">
1133         <li>
1134           <span class="toc_kind_header">static</span>
1135           <ul class="toc_section">
1136             <li
1137             ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1138             <li
1139             ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1140             <li
1141             ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1142             <li
1143             ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1144             <li
1145             ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1146           </ul>
1147         </li>
1148       </ul> <!-- toc_section -->
1149     </li>
1150   </ul>
1151
1152
1153   <h1>Properties</h1>
1154   <table class="properties">
1155
1156     <thead class="thead_dummy">
1157       <tr>
1158         <th class="th_name">Property Name</th>
1159         <th class="th_type">Type</th>
1160         <th class="th_description">Description</th>
1161         <th class="th_units">Units</th>
1162         <th class="th_range">Range</th>
1163         <th class="th_hal_version">HIDL HAL version</th>
1164         <th class="th_tags">Tags</th>
1165       </tr>
1166     </thead> <!-- so that the first occurrence of thead is not
1167                          above the first occurrence of tr -->
1168 <!-- <namespace name="android"> -->
1169   <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1170
1171
1172       <tr><td colspan="7" class="kind">controls</td></tr>
1173
1174       <thead class="entries_header">
1175         <tr>
1176           <th class="th_name">Property Name</th>
1177           <th class="th_type">Type</th>
1178           <th class="th_description">Description</th>
1179           <th class="th_units">Units</th>
1180           <th class="th_range">Range</th>
1181           <th class="th_hal_version">Initial HIDL HAL version</th>
1182           <th class="th_tags">Tags</th>
1183         </tr>
1184       </thead>
1185
1186       <tbody>
1187
1188         
1189
1190         
1191
1192         
1193
1194         
1195
1196                 
1197           <tr class="entry" id="controls_android.colorCorrection.mode">
1198             <td class="entry_name
1199              " rowspan="5">
1200               android.<wbr/>color<wbr/>Correction.<wbr/>mode
1201             </td>
1202             <td class="entry_type">
1203                 <span class="entry_type_name entry_type_name_enum">byte</span>
1204
1205               <span class="entry_type_visibility"> [public]</span>
1206
1207
1208               <span class="entry_type_hwlevel">[full] </span>
1209
1210
1211
1212                 <ul class="entry_type_enum">
1213                   <li>
1214                     <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1215                     <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1216 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1217 <p>All advanced white balance adjustments (not specified
1218 by our white balance pipeline) must be disabled.<wbr/></p>
1219 <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
1220 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1221 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1222                   </li>
1223                   <li>
1224                     <span class="entry_type_enum_name">FAST (v3.2)</span>
1225                     <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1226 capture rate relative to sensor raw output.<wbr/></p>
1227 <p>Advanced white balance adjustments above and beyond
1228 the specified white balance pipeline may be applied.<wbr/></p>
1229 <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
1230 the camera device uses the last frame's AWB values
1231 (or defaults if AWB has never been run).<wbr/></p></span>
1232                   </li>
1233                   <li>
1234                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1235                     <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1236 quality but the capture rate might be reduced (relative to sensor
1237 raw output rate)</p>
1238 <p>Advanced white balance adjustments above and beyond
1239 the specified white balance pipeline may be applied.<wbr/></p>
1240 <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
1241 the camera device uses the last frame's AWB values
1242 (or defaults if AWB has never been run).<wbr/></p></span>
1243                   </li>
1244                 </ul>
1245
1246             </td> <!-- entry_type -->
1247
1248             <td class="entry_description">
1249               <p>The mode control selects how the image data is converted from the
1250 sensor's native color into linear sRGB color.<wbr/></p>
1251             </td>
1252
1253             <td class="entry_units">
1254             </td>
1255
1256             <td class="entry_range">
1257             </td>
1258
1259             <td class="entry_hal_version">
1260               <p>3.<wbr/>2</p>
1261             </td>
1262
1263             <td class="entry_tags">
1264             </td>
1265
1266           </tr>
1267           <tr class="entries_header">
1268             <th class="th_details" colspan="6">Details</th>
1269           </tr>
1270           <tr class="entry_cont">
1271             <td class="entry_details" colspan="6">
1272               <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
1273 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1274 application controls how the color mapping is performed.<wbr/></p>
1275 <p>We define the expected processing pipeline below.<wbr/> For consistency
1276 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1277 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1278 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1279 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1280 camera device (in the results) and be roughly correct.<wbr/></p>
1281 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1282 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1283 as what was produced by the camera device in the earlier frame.<wbr/></p>
1284 <p>The expected processing pipeline is as follows:</p>
1285 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1286 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1287 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1288 matrix (applied after demosaic).<wbr/></p>
1289 <p>The 4-channel white-balance gains are defined as:</p>
1290 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1291 </code></pre>
1292 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1293 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1294 These may be identical for a given camera device implementation; if
1295 the camera device does not support a separate gain for even/<wbr/>odd green
1296 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1297 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1298 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1299 <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 ]
1300 </code></pre>
1301 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1302 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1303 <p>with colors as follows:</p>
1304 <pre><code>r' = I0r + I1g + I2b
1305 g' = I3r + I4g + I5b
1306 b' = I6r + I7g + I8b
1307 </code></pre>
1308 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1309 values are clipped to fit within the range.<wbr/></p>
1310             </td>
1311           </tr>
1312
1313           <tr class="entries_header">
1314             <th class="th_details" colspan="6">HAL Implementation Details</th>
1315           </tr>
1316           <tr class="entry_cont">
1317             <td class="entry_details" colspan="6">
1318               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1319 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1320 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1321 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1322             </td>
1323           </tr>
1324
1325           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1326            <!-- end of entry -->
1327         
1328                 
1329           <tr class="entry" id="controls_android.colorCorrection.transform">
1330             <td class="entry_name
1331              " rowspan="3">
1332               android.<wbr/>color<wbr/>Correction.<wbr/>transform
1333             </td>
1334             <td class="entry_type">
1335                 <span class="entry_type_name">rational</span>
1336                 <span class="entry_type_container">x</span>
1337
1338                 <span class="entry_type_array">
1339                   3 x 3
1340                 </span>
1341               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1342
1343
1344               <span class="entry_type_hwlevel">[full] </span>
1345
1346
1347                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1348
1349
1350             </td> <!-- entry_type -->
1351
1352             <td class="entry_description">
1353               <p>A color transform matrix to use to transform
1354 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1355             </td>
1356
1357             <td class="entry_units">
1358               Unitless scale factors
1359             </td>
1360
1361             <td class="entry_range">
1362             </td>
1363
1364             <td class="entry_hal_version">
1365               <p>3.<wbr/>2</p>
1366             </td>
1367
1368             <td class="entry_tags">
1369             </td>
1370
1371           </tr>
1372           <tr class="entries_header">
1373             <th class="th_details" colspan="6">Details</th>
1374           </tr>
1375           <tr class="entry_cont">
1376             <td class="entry_details" colspan="6">
1377               <p>This matrix is either set by the camera device when the request
1378 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1379 directly by the application in the request when the
1380 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1381 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1382 for precision issues; the final rounded matrix should be reported back
1383 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1384 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1385 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1386 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1387 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1388             </td>
1389           </tr>
1390
1391
1392           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1393            <!-- end of entry -->
1394         
1395                 
1396           <tr class="entry" id="controls_android.colorCorrection.gains">
1397             <td class="entry_name
1398              " rowspan="5">
1399               android.<wbr/>color<wbr/>Correction.<wbr/>gains
1400             </td>
1401             <td class="entry_type">
1402                 <span class="entry_type_name">float</span>
1403                 <span class="entry_type_container">x</span>
1404
1405                 <span class="entry_type_array">
1406                   4
1407                 </span>
1408               <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1409
1410
1411               <span class="entry_type_hwlevel">[full] </span>
1412
1413
1414                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1415
1416
1417             </td> <!-- entry_type -->
1418
1419             <td class="entry_description">
1420               <p>Gains applying to Bayer raw color channels for
1421 white-balance.<wbr/></p>
1422             </td>
1423
1424             <td class="entry_units">
1425               Unitless gain factors
1426             </td>
1427
1428             <td class="entry_range">
1429             </td>
1430
1431             <td class="entry_hal_version">
1432               <p>3.<wbr/>2</p>
1433             </td>
1434
1435             <td class="entry_tags">
1436             </td>
1437
1438           </tr>
1439           <tr class="entries_header">
1440             <th class="th_details" colspan="6">Details</th>
1441           </tr>
1442           <tr class="entry_cont">
1443             <td class="entry_details" colspan="6">
1444               <p>These per-channel gains are either set by the camera device
1445 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1446 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1447 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1448 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1449 <p>The gains in the result metadata are the gains actually
1450 applied by the camera device to the current frame.<wbr/></p>
1451 <p>The valid range of gains varies on different devices,<wbr/> but gains
1452 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1453 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1454 this can create color artifacts.<wbr/></p>
1455             </td>
1456           </tr>
1457
1458           <tr class="entries_header">
1459             <th class="th_details" colspan="6">HAL Implementation Details</th>
1460           </tr>
1461           <tr class="entry_cont">
1462             <td class="entry_details" colspan="6">
1463               <p>The 4-channel white-balance gains are defined in
1464 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1465 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1466 is the gain for green pixels on the odd rows.<wbr/></p>
1467 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1468 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1469 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1470             </td>
1471           </tr>
1472
1473           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1474            <!-- end of entry -->
1475         
1476                 
1477           <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1478             <td class="entry_name
1479              " rowspan="3">
1480               android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1481             </td>
1482             <td class="entry_type">
1483                 <span class="entry_type_name entry_type_name_enum">byte</span>
1484
1485               <span class="entry_type_visibility"> [public]</span>
1486
1487
1488               <span class="entry_type_hwlevel">[legacy] </span>
1489
1490
1491
1492                 <ul class="entry_type_enum">
1493                   <li>
1494                     <span class="entry_type_enum_name">OFF (v3.2)</span>
1495                     <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1496                   </li>
1497                   <li>
1498                     <span class="entry_type_enum_name">FAST (v3.2)</span>
1499                     <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1500 relative to sensor raw output.<wbr/></p></span>
1501                   </li>
1502                   <li>
1503                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1504                     <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1505 reduced (relative to sensor raw output rate)</p></span>
1506                   </li>
1507                 </ul>
1508
1509             </td> <!-- entry_type -->
1510
1511             <td class="entry_description">
1512               <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1513             </td>
1514
1515             <td class="entry_units">
1516             </td>
1517
1518             <td class="entry_range">
1519               <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1520             </td>
1521
1522             <td class="entry_hal_version">
1523               <p>3.<wbr/>2</p>
1524             </td>
1525
1526             <td class="entry_tags">
1527             </td>
1528
1529           </tr>
1530           <tr class="entries_header">
1531             <th class="th_details" colspan="6">Details</th>
1532           </tr>
1533           <tr class="entry_cont">
1534             <td class="entry_details" colspan="6">
1535               <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1536 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1537 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1538 minimize the chromatic artifacts that may occur along the object boundaries in an
1539 image.<wbr/></p>
1540 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1541 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1542 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1543 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1544 applying aberration correction.<wbr/></p>
1545 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1546             </td>
1547           </tr>
1548
1549
1550           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1551            <!-- end of entry -->
1552         
1553         
1554
1555       <!-- end of kind -->
1556       </tbody>
1557       <tr><td colspan="7" class="kind">dynamic</td></tr>
1558
1559       <thead class="entries_header">
1560         <tr>
1561           <th class="th_name">Property Name</th>
1562           <th class="th_type">Type</th>
1563           <th class="th_description">Description</th>
1564           <th class="th_units">Units</th>
1565           <th class="th_range">Range</th>
1566           <th class="th_hal_version">Initial HIDL HAL version</th>
1567           <th class="th_tags">Tags</th>
1568         </tr>
1569       </thead>
1570
1571       <tbody>
1572
1573         
1574
1575         
1576
1577         
1578
1579         
1580
1581                 
1582           <tr class="entry" id="dynamic_android.colorCorrection.mode">
1583             <td class="entry_name
1584              " rowspan="5">
1585               android.<wbr/>color<wbr/>Correction.<wbr/>mode
1586             </td>
1587             <td class="entry_type">
1588                 <span class="entry_type_name entry_type_name_enum">byte</span>
1589
1590               <span class="entry_type_visibility"> [public]</span>
1591
1592
1593               <span class="entry_type_hwlevel">[full] </span>
1594
1595
1596
1597                 <ul class="entry_type_enum">
1598                   <li>
1599                     <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1600                     <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1601 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1602 <p>All advanced white balance adjustments (not specified
1603 by our white balance pipeline) must be disabled.<wbr/></p>
1604 <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
1605 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1606 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1607                   </li>
1608                   <li>
1609                     <span class="entry_type_enum_name">FAST (v3.2)</span>
1610                     <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1611 capture rate relative to sensor raw output.<wbr/></p>
1612 <p>Advanced white balance adjustments above and beyond
1613 the specified white balance pipeline may be applied.<wbr/></p>
1614 <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
1615 the camera device uses the last frame's AWB values
1616 (or defaults if AWB has never been run).<wbr/></p></span>
1617                   </li>
1618                   <li>
1619                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1620                     <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1621 quality but the capture rate might be reduced (relative to sensor
1622 raw output rate)</p>
1623 <p>Advanced white balance adjustments above and beyond
1624 the specified white balance pipeline may be applied.<wbr/></p>
1625 <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
1626 the camera device uses the last frame's AWB values
1627 (or defaults if AWB has never been run).<wbr/></p></span>
1628                   </li>
1629                 </ul>
1630
1631             </td> <!-- entry_type -->
1632
1633             <td class="entry_description">
1634               <p>The mode control selects how the image data is converted from the
1635 sensor's native color into linear sRGB color.<wbr/></p>
1636             </td>
1637
1638             <td class="entry_units">
1639             </td>
1640
1641             <td class="entry_range">
1642             </td>
1643
1644             <td class="entry_hal_version">
1645               <p>3.<wbr/>2</p>
1646             </td>
1647
1648             <td class="entry_tags">
1649             </td>
1650
1651           </tr>
1652           <tr class="entries_header">
1653             <th class="th_details" colspan="6">Details</th>
1654           </tr>
1655           <tr class="entry_cont">
1656             <td class="entry_details" colspan="6">
1657               <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
1658 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1659 application controls how the color mapping is performed.<wbr/></p>
1660 <p>We define the expected processing pipeline below.<wbr/> For consistency
1661 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1662 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1663 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1664 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1665 camera device (in the results) and be roughly correct.<wbr/></p>
1666 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1667 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1668 as what was produced by the camera device in the earlier frame.<wbr/></p>
1669 <p>The expected processing pipeline is as follows:</p>
1670 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1671 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1672 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1673 matrix (applied after demosaic).<wbr/></p>
1674 <p>The 4-channel white-balance gains are defined as:</p>
1675 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1676 </code></pre>
1677 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1678 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1679 These may be identical for a given camera device implementation; if
1680 the camera device does not support a separate gain for even/<wbr/>odd green
1681 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1682 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1683 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1684 <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 ]
1685 </code></pre>
1686 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1687 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1688 <p>with colors as follows:</p>
1689 <pre><code>r' = I0r + I1g + I2b
1690 g' = I3r + I4g + I5b
1691 b' = I6r + I7g + I8b
1692 </code></pre>
1693 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1694 values are clipped to fit within the range.<wbr/></p>
1695             </td>
1696           </tr>
1697
1698           <tr class="entries_header">
1699             <th class="th_details" colspan="6">HAL Implementation Details</th>
1700           </tr>
1701           <tr class="entry_cont">
1702             <td class="entry_details" colspan="6">
1703               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1704 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1705 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1706 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1707             </td>
1708           </tr>
1709
1710           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1711            <!-- end of entry -->
1712         
1713                 
1714           <tr class="entry" id="dynamic_android.colorCorrection.transform">
1715             <td class="entry_name
1716              " rowspan="3">
1717               android.<wbr/>color<wbr/>Correction.<wbr/>transform
1718             </td>
1719             <td class="entry_type">
1720                 <span class="entry_type_name">rational</span>
1721                 <span class="entry_type_container">x</span>
1722
1723                 <span class="entry_type_array">
1724                   3 x 3
1725                 </span>
1726               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1727
1728
1729               <span class="entry_type_hwlevel">[full] </span>
1730
1731
1732                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1733
1734
1735             </td> <!-- entry_type -->
1736
1737             <td class="entry_description">
1738               <p>A color transform matrix to use to transform
1739 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1740             </td>
1741
1742             <td class="entry_units">
1743               Unitless scale factors
1744             </td>
1745
1746             <td class="entry_range">
1747             </td>
1748
1749             <td class="entry_hal_version">
1750               <p>3.<wbr/>2</p>
1751             </td>
1752
1753             <td class="entry_tags">
1754             </td>
1755
1756           </tr>
1757           <tr class="entries_header">
1758             <th class="th_details" colspan="6">Details</th>
1759           </tr>
1760           <tr class="entry_cont">
1761             <td class="entry_details" colspan="6">
1762               <p>This matrix is either set by the camera device when the request
1763 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1764 directly by the application in the request when the
1765 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1766 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1767 for precision issues; the final rounded matrix should be reported back
1768 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1769 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1770 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1771 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1772 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1773             </td>
1774           </tr>
1775
1776
1777           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1778            <!-- end of entry -->
1779         
1780                 
1781           <tr class="entry" id="dynamic_android.colorCorrection.gains">
1782             <td class="entry_name
1783              " rowspan="5">
1784               android.<wbr/>color<wbr/>Correction.<wbr/>gains
1785             </td>
1786             <td class="entry_type">
1787                 <span class="entry_type_name">float</span>
1788                 <span class="entry_type_container">x</span>
1789
1790                 <span class="entry_type_array">
1791                   4
1792                 </span>
1793               <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1794
1795
1796               <span class="entry_type_hwlevel">[full] </span>
1797
1798
1799                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1800
1801
1802             </td> <!-- entry_type -->
1803
1804             <td class="entry_description">
1805               <p>Gains applying to Bayer raw color channels for
1806 white-balance.<wbr/></p>
1807             </td>
1808
1809             <td class="entry_units">
1810               Unitless gain factors
1811             </td>
1812
1813             <td class="entry_range">
1814             </td>
1815
1816             <td class="entry_hal_version">
1817               <p>3.<wbr/>2</p>
1818             </td>
1819
1820             <td class="entry_tags">
1821             </td>
1822
1823           </tr>
1824           <tr class="entries_header">
1825             <th class="th_details" colspan="6">Details</th>
1826           </tr>
1827           <tr class="entry_cont">
1828             <td class="entry_details" colspan="6">
1829               <p>These per-channel gains are either set by the camera device
1830 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1831 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1832 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1833 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1834 <p>The gains in the result metadata are the gains actually
1835 applied by the camera device to the current frame.<wbr/></p>
1836 <p>The valid range of gains varies on different devices,<wbr/> but gains
1837 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1838 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1839 this can create color artifacts.<wbr/></p>
1840             </td>
1841           </tr>
1842
1843           <tr class="entries_header">
1844             <th class="th_details" colspan="6">HAL Implementation Details</th>
1845           </tr>
1846           <tr class="entry_cont">
1847             <td class="entry_details" colspan="6">
1848               <p>The 4-channel white-balance gains are defined in
1849 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1850 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1851 is the gain for green pixels on the odd rows.<wbr/></p>
1852 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1853 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1854 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1855             </td>
1856           </tr>
1857
1858           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1859            <!-- end of entry -->
1860         
1861                 
1862           <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1863             <td class="entry_name
1864              " rowspan="3">
1865               android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1866             </td>
1867             <td class="entry_type">
1868                 <span class="entry_type_name entry_type_name_enum">byte</span>
1869
1870               <span class="entry_type_visibility"> [public]</span>
1871
1872
1873               <span class="entry_type_hwlevel">[legacy] </span>
1874
1875
1876
1877                 <ul class="entry_type_enum">
1878                   <li>
1879                     <span class="entry_type_enum_name">OFF (v3.2)</span>
1880                     <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1881                   </li>
1882                   <li>
1883                     <span class="entry_type_enum_name">FAST (v3.2)</span>
1884                     <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1885 relative to sensor raw output.<wbr/></p></span>
1886                   </li>
1887                   <li>
1888                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1889                     <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1890 reduced (relative to sensor raw output rate)</p></span>
1891                   </li>
1892                 </ul>
1893
1894             </td> <!-- entry_type -->
1895
1896             <td class="entry_description">
1897               <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1898             </td>
1899
1900             <td class="entry_units">
1901             </td>
1902
1903             <td class="entry_range">
1904               <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1905             </td>
1906
1907             <td class="entry_hal_version">
1908               <p>3.<wbr/>2</p>
1909             </td>
1910
1911             <td class="entry_tags">
1912             </td>
1913
1914           </tr>
1915           <tr class="entries_header">
1916             <th class="th_details" colspan="6">Details</th>
1917           </tr>
1918           <tr class="entry_cont">
1919             <td class="entry_details" colspan="6">
1920               <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1921 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1922 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1923 minimize the chromatic artifacts that may occur along the object boundaries in an
1924 image.<wbr/></p>
1925 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1926 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1927 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1928 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1929 applying aberration correction.<wbr/></p>
1930 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1931             </td>
1932           </tr>
1933
1934
1935           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1936            <!-- end of entry -->
1937         
1938         
1939
1940       <!-- end of kind -->
1941       </tbody>
1942       <tr><td colspan="7" class="kind">static</td></tr>
1943
1944       <thead class="entries_header">
1945         <tr>
1946           <th class="th_name">Property Name</th>
1947           <th class="th_type">Type</th>
1948           <th class="th_description">Description</th>
1949           <th class="th_units">Units</th>
1950           <th class="th_range">Range</th>
1951           <th class="th_hal_version">Initial HIDL HAL version</th>
1952           <th class="th_tags">Tags</th>
1953         </tr>
1954       </thead>
1955
1956       <tbody>
1957
1958         
1959
1960         
1961
1962         
1963
1964         
1965
1966                 
1967           <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1968             <td class="entry_name
1969              " rowspan="5">
1970               android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
1971             </td>
1972             <td class="entry_type">
1973                 <span class="entry_type_name">byte</span>
1974                 <span class="entry_type_container">x</span>
1975
1976                 <span class="entry_type_array">
1977                   n
1978                 </span>
1979               <span class="entry_type_visibility"> [public as enumList]</span>
1980
1981
1982               <span class="entry_type_hwlevel">[legacy] </span>
1983
1984
1985                 <div class="entry_type_notes">list of enums</div>
1986
1987
1988             </td> <!-- entry_type -->
1989
1990             <td class="entry_description">
1991               <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
1992 supported by this camera device.<wbr/></p>
1993             </td>
1994
1995             <td class="entry_units">
1996             </td>
1997
1998             <td class="entry_range">
1999               <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
2000             </td>
2001
2002             <td class="entry_hal_version">
2003               <p>3.<wbr/>2</p>
2004             </td>
2005
2006             <td class="entry_tags">
2007               <ul class="entry_tags">
2008                   <li><a href="#tag_V1">V1</a></li>
2009               </ul>
2010             </td>
2011
2012           </tr>
2013           <tr class="entries_header">
2014             <th class="th_details" colspan="6">Details</th>
2015           </tr>
2016           <tr class="entry_cont">
2017             <td class="entry_details" colspan="6">
2018               <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
2019 aberration correction modes are available for a device,<wbr/> this list will solely include
2020 OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
2021 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
2022 OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
2023 <p>LEGACY devices will always only support FAST mode.<wbr/></p>
2024             </td>
2025           </tr>
2026
2027           <tr class="entries_header">
2028             <th class="th_details" colspan="6">HAL Implementation Details</th>
2029           </tr>
2030           <tr class="entry_cont">
2031             <td class="entry_details" colspan="6">
2032               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
2033 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
2034 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
2035 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
2036             </td>
2037           </tr>
2038
2039           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2040            <!-- end of entry -->
2041         
2042         
2043
2044       <!-- end of kind -->
2045       </tbody>
2046
2047   <!-- end of section -->
2048   <tr><td colspan="7" id="section_control" class="section">control</td></tr>
2049
2050
2051       <tr><td colspan="7" class="kind">controls</td></tr>
2052
2053       <thead class="entries_header">
2054         <tr>
2055           <th class="th_name">Property Name</th>
2056           <th class="th_type">Type</th>
2057           <th class="th_description">Description</th>
2058           <th class="th_units">Units</th>
2059           <th class="th_range">Range</th>
2060           <th class="th_hal_version">Initial HIDL HAL version</th>
2061           <th class="th_tags">Tags</th>
2062         </tr>
2063       </thead>
2064
2065       <tbody>
2066
2067         
2068
2069         
2070
2071         
2072
2073         
2074
2075                 
2076           <tr class="entry" id="controls_android.control.aeAntibandingMode">
2077             <td class="entry_name
2078              " rowspan="5">
2079               android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2080             </td>
2081             <td class="entry_type">
2082                 <span class="entry_type_name entry_type_name_enum">byte</span>
2083
2084               <span class="entry_type_visibility"> [public]</span>
2085
2086
2087               <span class="entry_type_hwlevel">[legacy] </span>
2088
2089
2090
2091                 <ul class="entry_type_enum">
2092                   <li>
2093                     <span class="entry_type_enum_name">OFF (v3.2)</span>
2094                     <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2095 avoid banding problems.<wbr/></p></span>
2096                   </li>
2097                   <li>
2098                     <span class="entry_type_enum_name">50HZ (v3.2)</span>
2099                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2100 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2101                   </li>
2102                   <li>
2103                     <span class="entry_type_enum_name">60HZ (v3.2)</span>
2104                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2105 avoid banding problems with 60Hz illumination
2106 sources.<wbr/></p></span>
2107                   </li>
2108                   <li>
2109                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
2110                     <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2111 antibanding routine to the current illumination
2112 condition.<wbr/> This is the default mode if AUTO is
2113 available on given camera device.<wbr/></p></span>
2114                   </li>
2115                 </ul>
2116
2117             </td> <!-- entry_type -->
2118
2119             <td class="entry_description">
2120               <p>The desired setting for the camera device's auto-exposure
2121 algorithm's antibanding compensation.<wbr/></p>
2122             </td>
2123
2124             <td class="entry_units">
2125             </td>
2126
2127             <td class="entry_range">
2128               <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2129             </td>
2130
2131             <td class="entry_hal_version">
2132               <p>3.<wbr/>2</p>
2133             </td>
2134
2135             <td class="entry_tags">
2136               <ul class="entry_tags">
2137                   <li><a href="#tag_BC">BC</a></li>
2138               </ul>
2139             </td>
2140
2141           </tr>
2142           <tr class="entries_header">
2143             <th class="th_details" colspan="6">Details</th>
2144           </tr>
2145           <tr class="entry_cont">
2146             <td class="entry_details" colspan="6">
2147               <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2148 lights,<wbr/> flicker at the rate of the power supply frequency
2149 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2150 typically not noticeable to a person,<wbr/> it can be visible to
2151 a camera device.<wbr/> If a camera sets its exposure time to the
2152 wrong value,<wbr/> the flicker may become visible in the
2153 viewfinder as flicker or in a final captured image,<wbr/> as a
2154 set of variable-brightness bands across the image.<wbr/></p>
2155 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
2156 include antibanding routines that ensure that the chosen
2157 exposure value will not cause such banding.<wbr/> The choice of
2158 exposure time depends on the rate of flicker,<wbr/> which the
2159 camera device can detect automatically,<wbr/> or the expected
2160 rate can be selected by the application using this
2161 control.<wbr/></p>
2162 <p>A given camera device may not support all of the possible
2163 options for the antibanding mode.<wbr/> The
2164 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2165 the available modes for a given camera device.<wbr/></p>
2166 <p>AUTO mode is the default if it is available on given
2167 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2168 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2169 and 60HZ will be available.<wbr/></p>
2170 <p>If manual exposure control is enabled (by setting
2171 <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/>
2172 then this setting has no effect,<wbr/> and the application must
2173 ensure it selects exposure times that do not cause banding
2174 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2175 the application in this.<wbr/></p>
2176             </td>
2177           </tr>
2178
2179           <tr class="entries_header">
2180             <th class="th_details" colspan="6">HAL Implementation Details</th>
2181           </tr>
2182           <tr class="entry_cont">
2183             <td class="entry_details" colspan="6">
2184               <p>For all capture request templates,<wbr/> this field must be set
2185 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2186 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
2187 60HZ must be available.<wbr/></p>
2188 <p>If manual exposure control is enabled (by setting
2189 <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/>
2190 then the exposure values provided by the application must not be
2191 adjusted for antibanding.<wbr/></p>
2192             </td>
2193           </tr>
2194
2195           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2196            <!-- end of entry -->
2197         
2198                 
2199           <tr class="entry" id="controls_android.control.aeExposureCompensation">
2200             <td class="entry_name
2201              " rowspan="3">
2202               android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2203             </td>
2204             <td class="entry_type">
2205                 <span class="entry_type_name">int32</span>
2206
2207               <span class="entry_type_visibility"> [public]</span>
2208
2209
2210               <span class="entry_type_hwlevel">[legacy] </span>
2211
2212
2213
2214
2215             </td> <!-- entry_type -->
2216
2217             <td class="entry_description">
2218               <p>Adjustment to auto-exposure (AE) target image
2219 brightness.<wbr/></p>
2220             </td>
2221
2222             <td class="entry_units">
2223               Compensation steps
2224             </td>
2225
2226             <td class="entry_range">
2227               <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2228             </td>
2229
2230             <td class="entry_hal_version">
2231               <p>3.<wbr/>2</p>
2232             </td>
2233
2234             <td class="entry_tags">
2235               <ul class="entry_tags">
2236                   <li><a href="#tag_BC">BC</a></li>
2237               </ul>
2238             </td>
2239
2240           </tr>
2241           <tr class="entries_header">
2242             <th class="th_details" colspan="6">Details</th>
2243           </tr>
2244           <tr class="entry_cont">
2245             <td class="entry_details" colspan="6">
2246               <p>The adjustment is measured as a count of steps,<wbr/> with the
2247 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2248 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2249 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2250 will mean an exposure compensation of +2 EV; -3 will mean an
2251 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2252 of image brightness.<wbr/> Note that this control will only be
2253 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2254 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2255 <p>In the event of exposure compensation value being changed,<wbr/> camera device
2256 may take several frames to reach the newly requested exposure target.<wbr/>
2257 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2258 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
2259 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2260 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2261             </td>
2262           </tr>
2263
2264
2265           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2266            <!-- end of entry -->
2267         
2268                 
2269           <tr class="entry" id="controls_android.control.aeLock">
2270             <td class="entry_name
2271              " rowspan="3">
2272               android.<wbr/>control.<wbr/>ae<wbr/>Lock
2273             </td>
2274             <td class="entry_type">
2275                 <span class="entry_type_name entry_type_name_enum">byte</span>
2276
2277               <span class="entry_type_visibility"> [public as boolean]</span>
2278
2279
2280               <span class="entry_type_hwlevel">[legacy] </span>
2281
2282
2283
2284                 <ul class="entry_type_enum">
2285                   <li>
2286                     <span class="entry_type_enum_name">OFF (v3.2)</span>
2287                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2288 is free to update its parameters.<wbr/></p></span>
2289                   </li>
2290                   <li>
2291                     <span class="entry_type_enum_name">ON (v3.2)</span>
2292                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2293 must not update the exposure and sensitivity parameters
2294 while the lock is active.<wbr/></p>
2295 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2296 will still take effect while auto-exposure is locked.<wbr/></p>
2297 <p>Some rare LEGACY devices may not support
2298 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2299                   </li>
2300                 </ul>
2301
2302             </td> <!-- entry_type -->
2303
2304             <td class="entry_description">
2305               <p>Whether auto-exposure (AE) is currently locked to its latest
2306 calculated values.<wbr/></p>
2307             </td>
2308
2309             <td class="entry_units">
2310             </td>
2311
2312             <td class="entry_range">
2313             </td>
2314
2315             <td class="entry_hal_version">
2316               <p>3.<wbr/>2</p>
2317             </td>
2318
2319             <td class="entry_tags">
2320               <ul class="entry_tags">
2321                   <li><a href="#tag_BC">BC</a></li>
2322               </ul>
2323             </td>
2324
2325           </tr>
2326           <tr class="entries_header">
2327             <th class="th_details" colspan="6">Details</th>
2328           </tr>
2329           <tr class="entry_cont">
2330             <td class="entry_details" colspan="6">
2331               <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2332 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2333 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
2334 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2335 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2336 <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
2337 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2338 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2339 when AE is already locked,<wbr/> the camera device will not change the exposure time
2340 (<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>)
2341 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2342 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2343 <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/>
2344 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2345 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2346 the AE if AE is locked by the camera device internally during precapture metering
2347 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2348 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2349 will never succeed in a sequence of preview requests where AE lock is always set
2350 to <code>false</code>.<wbr/></p>
2351 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2352 get locked do not necessarily correspond to the settings that were present in the
2353 latest capture result received from the camera device,<wbr/> since additional captures
2354 and AE updates may have occurred even before the result was sent out.<wbr/> If an
2355 application is switching between automatic and manual control and wishes to eliminate
2356 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2357 <ol>
2358 <li>Starting in auto-AE mode:</li>
2359 <li>Lock AE</li>
2360 <li>Wait for the first result to be output that has the AE locked</li>
2361 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2362 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2363 </ol>
2364 <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>
2365             </td>
2366           </tr>
2367
2368
2369           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2370            <!-- end of entry -->
2371         
2372                 
2373           <tr class="entry" id="controls_android.control.aeMode">
2374             <td class="entry_name
2375              " rowspan="3">
2376               android.<wbr/>control.<wbr/>ae<wbr/>Mode
2377             </td>
2378             <td class="entry_type">
2379                 <span class="entry_type_name entry_type_name_enum">byte</span>
2380
2381               <span class="entry_type_visibility"> [public]</span>
2382
2383
2384               <span class="entry_type_hwlevel">[legacy] </span>
2385
2386
2387
2388                 <ul class="entry_type_enum">
2389                   <li>
2390                     <span class="entry_type_enum_name">OFF (v3.2)</span>
2391                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2392 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2393 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2394 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2395 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2396 a flash unit for this camera device.<wbr/></p>
2397 <p>Note that auto-white balance (AWB) and auto-focus (AF)
2398 behavior is device dependent when AE is in OFF mode.<wbr/>
2399 To have consistent behavior across different devices,<wbr/>
2400 it is recommended to either set AWB and AF to OFF mode
2401 or lock AWB and AF before setting AE to OFF.<wbr/>
2402 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/>
2403 <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>
2404 for more details.<wbr/></p>
2405 <p>LEGACY devices do not support the OFF mode and will
2406 override attempts to use this value to ON.<wbr/></p></span>
2407                   </li>
2408                   <li>
2409                     <span class="entry_type_enum_name">ON (v3.2)</span>
2410                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2411 with no flash control.<wbr/></p>
2412 <p>The application's values for
2413 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2414 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2415 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2416 application has control over the various
2417 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2418                   </li>
2419                   <li>
2420                     <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
2421                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2422 the camera's flash unit,<wbr/> firing it in low-light
2423 conditions.<wbr/></p>
2424 <p>The flash may be fired during a precapture sequence
2425 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2426 may be fired for captures for which the
2427 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2428 STILL_<wbr/>CAPTURE</p></span>
2429                   </li>
2430                   <li>
2431                     <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
2432                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2433 the camera's flash unit,<wbr/> always firing it for still
2434 captures.<wbr/></p>
2435 <p>The flash may be fired during a precapture sequence
2436 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2437 will always be fired for captures for which the
2438 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2439 STILL_<wbr/>CAPTURE</p></span>
2440                   </li>
2441                   <li>
2442                     <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
2443                     <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2444 reduction.<wbr/></p>
2445 <p>If deemed necessary by the camera device,<wbr/> a red eye
2446 reduction flash will fire during the precapture
2447 sequence.<wbr/></p></span>
2448                   </li>
2449                 </ul>
2450
2451             </td> <!-- entry_type -->
2452
2453             <td class="entry_description">
2454               <p>The desired mode for the camera device's
2455 auto-exposure routine.<wbr/></p>
2456             </td>
2457
2458             <td class="entry_units">
2459             </td>
2460
2461             <td class="entry_range">
2462               <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2463             </td>
2464
2465             <td class="entry_hal_version">
2466               <p>3.<wbr/>2</p>
2467             </td>
2468
2469             <td class="entry_tags">
2470               <ul class="entry_tags">
2471                   <li><a href="#tag_BC">BC</a></li>
2472               </ul>
2473             </td>
2474
2475           </tr>
2476           <tr class="entries_header">
2477             <th class="th_details" colspan="6">Details</th>
2478           </tr>
2479           <tr class="entry_cont">
2480             <td class="entry_details" colspan="6">
2481               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2482 AUTO.<wbr/></p>
2483 <p>When set to any of the ON modes,<wbr/> the camera device's
2484 auto-exposure routine is enabled,<wbr/> overriding the
2485 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2486 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2487 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2488 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2489 is selected,<wbr/> the camera device's flash unit controls are
2490 also overridden.<wbr/></p>
2491 <p>The FLASH modes are only available if the camera device
2492 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>
2493 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
2494 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2495 <p>When set to any of the ON modes,<wbr/> the values chosen by the
2496 camera device auto-exposure routine for the overridden
2497 fields for a given capture will be available in its
2498 CaptureResult.<wbr/></p>
2499             </td>
2500           </tr>
2501
2502
2503           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2504            <!-- end of entry -->
2505         
2506                 
2507           <tr class="entry" id="controls_android.control.aeRegions">
2508             <td class="entry_name
2509              " rowspan="5">
2510               android.<wbr/>control.<wbr/>ae<wbr/>Regions
2511             </td>
2512             <td class="entry_type">
2513                 <span class="entry_type_name">int32</span>
2514                 <span class="entry_type_container">x</span>
2515
2516                 <span class="entry_type_array">
2517                   5 x area_count
2518                 </span>
2519               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2520
2521
2522
2523
2524
2525
2526             </td> <!-- entry_type -->
2527
2528             <td class="entry_description">
2529               <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2530             </td>
2531
2532             <td class="entry_units">
2533               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2534             </td>
2535
2536             <td class="entry_range">
2537               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2538 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2539             </td>
2540
2541             <td class="entry_hal_version">
2542               <p>3.<wbr/>2</p>
2543             </td>
2544
2545             <td class="entry_tags">
2546               <ul class="entry_tags">
2547                   <li><a href="#tag_BC">BC</a></li>
2548               </ul>
2549             </td>
2550
2551           </tr>
2552           <tr class="entries_header">
2553             <th class="th_details" colspan="6">Details</th>
2554           </tr>
2555           <tr class="entry_cont">
2556             <td class="entry_details" colspan="6">
2557               <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2558 Otherwise will always be present.<wbr/></p>
2559 <p>The maximum number of regions supported by the device is determined by the value
2560 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2561 <p>The coordinate system is based on the active pixel array,<wbr/>
2562 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2563 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2564 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2565 bottom-right pixel in the active pixel array.<wbr/></p>
2566 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2567 for every pixel in the area.<wbr/> This means that a large metering area
2568 with the same weight as a smaller area will have more effect in
2569 the metering result.<wbr/> Metering areas can partially overlap and the
2570 camera device will add the weights in the overlap region.<wbr/></p>
2571 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2572 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2573 weight is ignored.<wbr/></p>
2574 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2575 camera device.<wbr/></p>
2576 <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
2577 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2578 region and output only the intersection rectangle as the metering region in the result
2579 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
2580 not reported in the result metadata.<wbr/></p>
2581             </td>
2582           </tr>
2583
2584           <tr class="entries_header">
2585             <th class="th_details" colspan="6">HAL Implementation Details</th>
2586           </tr>
2587           <tr class="entry_cont">
2588             <td class="entry_details" colspan="6">
2589               <p>The HAL level representation of MeteringRectangle[] is a
2590 int[5 * area_<wbr/>count].<wbr/>
2591 Every five elements represent a metering region of
2592 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2593 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2594 exclusive on xmax and ymax.<wbr/></p>
2595             </td>
2596           </tr>
2597
2598           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2599            <!-- end of entry -->
2600         
2601                 
2602           <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2603             <td class="entry_name
2604              " rowspan="3">
2605               android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2606             </td>
2607             <td class="entry_type">
2608                 <span class="entry_type_name">int32</span>
2609                 <span class="entry_type_container">x</span>
2610
2611                 <span class="entry_type_array">
2612                   2
2613                 </span>
2614               <span class="entry_type_visibility"> [public as rangeInt]</span>
2615
2616
2617               <span class="entry_type_hwlevel">[legacy] </span>
2618
2619
2620
2621
2622             </td> <!-- entry_type -->
2623
2624             <td class="entry_description">
2625               <p>Range over which the auto-exposure routine can
2626 adjust the capture frame rate to maintain good
2627 exposure.<wbr/></p>
2628             </td>
2629
2630             <td class="entry_units">
2631               Frames per second (FPS)
2632             </td>
2633
2634             <td class="entry_range">
2635               <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>
2636             </td>
2637
2638             <td class="entry_hal_version">
2639               <p>3.<wbr/>2</p>
2640             </td>
2641
2642             <td class="entry_tags">
2643               <ul class="entry_tags">
2644                   <li><a href="#tag_BC">BC</a></li>
2645               </ul>
2646             </td>
2647
2648           </tr>
2649           <tr class="entries_header">
2650             <th class="th_details" colspan="6">Details</th>
2651           </tr>
2652           <tr class="entry_cont">
2653             <td class="entry_details" colspan="6">
2654               <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2655 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2656 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2657             </td>
2658           </tr>
2659
2660
2661           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2662            <!-- end of entry -->
2663         
2664                 
2665           <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2666             <td class="entry_name
2667              " rowspan="5">
2668               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2669             </td>
2670             <td class="entry_type">
2671                 <span class="entry_type_name entry_type_name_enum">byte</span>
2672
2673               <span class="entry_type_visibility"> [public]</span>
2674
2675
2676               <span class="entry_type_hwlevel">[limited] </span>
2677
2678
2679
2680                 <ul class="entry_type_enum">
2681                   <li>
2682                     <span class="entry_type_enum_name">IDLE (v3.2)</span>
2683                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2684                   </li>
2685                   <li>
2686                     <span class="entry_type_enum_name">START (v3.2)</span>
2687                     <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2688 by the camera device.<wbr/></p>
2689 <p>The exact effect of the precapture trigger depends on
2690 the current AE mode and state.<wbr/></p></span>
2691                   </li>
2692                   <li>
2693                     <span class="entry_type_enum_name">CANCEL (v3.2)</span>
2694                     <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2695 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2696 initial state.<wbr/></p></span>
2697                   </li>
2698                 </ul>
2699
2700             </td> <!-- entry_type -->
2701
2702             <td class="entry_description">
2703               <p>Whether the camera device will trigger a precapture
2704 metering sequence when it processes this request.<wbr/></p>
2705             </td>
2706
2707             <td class="entry_units">
2708             </td>
2709
2710             <td class="entry_range">
2711             </td>
2712
2713             <td class="entry_hal_version">
2714               <p>3.<wbr/>2</p>
2715             </td>
2716
2717             <td class="entry_tags">
2718               <ul class="entry_tags">
2719                   <li><a href="#tag_BC">BC</a></li>
2720               </ul>
2721             </td>
2722
2723           </tr>
2724           <tr class="entries_header">
2725             <th class="th_details" colspan="6">Details</th>
2726           </tr>
2727           <tr class="entry_cont">
2728             <td class="entry_details" colspan="6">
2729               <p>This entry is normally set to IDLE,<wbr/> or is not
2730 included at all in the request settings.<wbr/> When included and
2731 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2732 precapture metering sequence.<wbr/></p>
2733 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
2734 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2735 If a precapture metering sequence is already completed,<wbr/> and the camera
2736 device has implicitly locked the AE for subsequent still capture,<wbr/> the
2737 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2738 <p>The precapture sequence should be triggered before starting a
2739 high-quality still capture for final metering decisions to
2740 be made,<wbr/> and for firing pre-capture flash pulses to estimate
2741 scene brightness and required final capture flash power,<wbr/> when
2742 the flash is enabled.<wbr/></p>
2743 <p>Normally,<wbr/> this entry should be set to START for only a
2744 single request,<wbr/> and the application should wait until the
2745 sequence completes before starting a new one.<wbr/></p>
2746 <p>When a precapture metering sequence is finished,<wbr/> the camera device
2747 may lock the auto-exposure routine internally to be able to accurately expose the
2748 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2749 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2750 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2751 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
2752 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
2753 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2754 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2755 internally locked AE if the application doesn't submit a still capture request after
2756 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2757 be used in devices that have earlier API levels.<wbr/></p>
2758 <p>The exact effect of auto-exposure (AE) precapture trigger
2759 depends on the current AE mode and state; see
2760 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2761 details.<wbr/></p>
2762 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2763 capturing a high-resolution JPEG image will automatically trigger a
2764 precapture sequence before the high-resolution capture,<wbr/> including
2765 potentially firing a pre-capture flash.<wbr/></p>
2766 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2767 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2768 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2769 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2770 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2771 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
2772 example.<wbr/></p>
2773 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2774 the camera device will complete them in the optimal order for that device.<wbr/></p>
2775             </td>
2776           </tr>
2777
2778           <tr class="entries_header">
2779             <th class="th_details" colspan="6">HAL Implementation Details</th>
2780           </tr>
2781           <tr class="entry_cont">
2782             <td class="entry_details" colspan="6">
2783               <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2784 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
2785 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2786 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2787 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2788             </td>
2789           </tr>
2790
2791           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2792            <!-- end of entry -->
2793         
2794                 
2795           <tr class="entry" id="controls_android.control.afMode">
2796             <td class="entry_name
2797              " rowspan="5">
2798               android.<wbr/>control.<wbr/>af<wbr/>Mode
2799             </td>
2800             <td class="entry_type">
2801                 <span class="entry_type_name entry_type_name_enum">byte</span>
2802
2803               <span class="entry_type_visibility"> [public]</span>
2804
2805
2806               <span class="entry_type_hwlevel">[legacy] </span>
2807
2808
2809
2810                 <ul class="entry_type_enum">
2811                   <li>
2812                     <span class="entry_type_enum_name">OFF (v3.2)</span>
2813                     <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2814 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2815 application.<wbr/></p></span>
2816                   </li>
2817                   <li>
2818                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
2819                     <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2820 <p>In this mode,<wbr/> the lens does not move unless
2821 the autofocus trigger action is called.<wbr/> When that trigger
2822 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2823 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2824 <p>Always supported if lens is not fixed focus.<wbr/></p>
2825 <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
2826 is fixed-focus.<wbr/></p>
2827 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2828 and sets the AF state to INACTIVE.<wbr/></p></span>
2829                   </li>
2830                   <li>
2831                     <span class="entry_type_enum_name">MACRO (v3.2)</span>
2832                     <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2833 <p>In this mode,<wbr/> the lens does not move unless the
2834 autofocus trigger action is called.<wbr/> When that trigger is
2835 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2836 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2837 mode is optimized for focusing on objects very close to
2838 the camera.<wbr/></p>
2839 <p>When that trigger is activated,<wbr/> AF will transition to
2840 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2841 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2842 position to default,<wbr/> and sets the AF state to
2843 INACTIVE.<wbr/></p></span>
2844                   </li>
2845                   <li>
2846                     <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
2847                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2848 position continually to attempt to provide a
2849 constantly-in-focus image stream.<wbr/></p>
2850 <p>The focusing behavior should be suitable for good quality
2851 video recording; typically this means slower focus
2852 movement and no overshoots.<wbr/> When the AF trigger is not
2853 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2854 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2855 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2856 the algorithm should immediately transition into
2857 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2858 lens position until a cancel AF trigger is received.<wbr/></p>
2859 <p>Once cancel is received,<wbr/> the algorithm should transition
2860 back to INACTIVE and resume passive scan.<wbr/> Note that this
2861 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2862 ongoing PASSIVE_<wbr/>SCAN must immediately be
2863 canceled.<wbr/></p></span>
2864                   </li>
2865                   <li>
2866                     <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
2867                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2868 position continually to attempt to provide a
2869 constantly-in-focus image stream.<wbr/></p>
2870 <p>The focusing behavior should be suitable for still image
2871 capture; typically this means focusing as fast as
2872 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2873 algorithm should start in INACTIVE state,<wbr/> and then
2874 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2875 appropriate as it attempts to maintain focus.<wbr/> When the AF
2876 trigger is activated,<wbr/> the algorithm should finish its
2877 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2878 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2879 lens position until a cancel AF trigger is received.<wbr/></p>
2880 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
2881 should transition back to INACTIVE and then act as if it
2882 has just been started.<wbr/></p></span>
2883                   </li>
2884                   <li>
2885                     <span class="entry_type_enum_name">EDOF (v3.2)</span>
2886                     <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2887 <p>The camera device will produce images with an extended
2888 depth of field automatically; no special focusing
2889 operations need to be done before taking a picture.<wbr/></p>
2890 <p>AF triggers are ignored,<wbr/> and the AF state will always be
2891 INACTIVE.<wbr/></p></span>
2892                   </li>
2893                 </ul>
2894
2895             </td> <!-- entry_type -->
2896
2897             <td class="entry_description">
2898               <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2899 mode it is set to.<wbr/></p>
2900             </td>
2901
2902             <td class="entry_units">
2903             </td>
2904
2905             <td class="entry_range">
2906               <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2907             </td>
2908
2909             <td class="entry_hal_version">
2910               <p>3.<wbr/>2</p>
2911             </td>
2912
2913             <td class="entry_tags">
2914               <ul class="entry_tags">
2915                   <li><a href="#tag_BC">BC</a></li>
2916               </ul>
2917             </td>
2918
2919           </tr>
2920           <tr class="entries_header">
2921             <th class="th_details" colspan="6">Details</th>
2922           </tr>
2923           <tr class="entry_cont">
2924             <td class="entry_details" colspan="6">
2925               <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2926 (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
2927 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2928 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
2929 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>
2930 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2931 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2932 in result metadata.<wbr/></p>
2933             </td>
2934           </tr>
2935
2936           <tr class="entries_header">
2937             <th class="th_details" colspan="6">HAL Implementation Details</th>
2938           </tr>
2939           <tr class="entry_cont">
2940             <td class="entry_details" colspan="6">
2941               <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2942 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
2943 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2944 <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
2945 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2946 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2947 the same focal plane remains in focus.<wbr/></p>
2948 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2949 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2950 (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
2951 same lock behavior as above.<wbr/></p>
2952 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2953 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/>
2954 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2955 manual control.<wbr/></p>
2956 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2957 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
2958 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
2959 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
2960 that will arise on camera modules with open-loop VCMs.<wbr/></p>
2961             </td>
2962           </tr>
2963
2964           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2965            <!-- end of entry -->
2966         
2967                 
2968           <tr class="entry" id="controls_android.control.afRegions">
2969             <td class="entry_name
2970              " rowspan="5">
2971               android.<wbr/>control.<wbr/>af<wbr/>Regions
2972             </td>
2973             <td class="entry_type">
2974                 <span class="entry_type_name">int32</span>
2975                 <span class="entry_type_container">x</span>
2976
2977                 <span class="entry_type_array">
2978                   5 x area_count
2979                 </span>
2980               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2981
2982
2983
2984
2985
2986
2987             </td> <!-- entry_type -->
2988
2989             <td class="entry_description">
2990               <p>List of metering areas to use for auto-focus.<wbr/></p>
2991             </td>
2992
2993             <td class="entry_units">
2994               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2995             </td>
2996
2997             <td class="entry_range">
2998               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2999 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3000             </td>
3001
3002             <td class="entry_hal_version">
3003               <p>3.<wbr/>2</p>
3004             </td>
3005
3006             <td class="entry_tags">
3007               <ul class="entry_tags">
3008                   <li><a href="#tag_BC">BC</a></li>
3009               </ul>
3010             </td>
3011
3012           </tr>
3013           <tr class="entries_header">
3014             <th class="th_details" colspan="6">Details</th>
3015           </tr>
3016           <tr class="entry_cont">
3017             <td class="entry_details" colspan="6">
3018               <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
3019 Otherwise will always be present.<wbr/></p>
3020 <p>The maximum number of focus areas supported by the device is determined by the value
3021 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
3022 <p>The coordinate system is based on the active pixel array,<wbr/>
3023 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3024 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3025 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3026 bottom-right pixel in the active pixel array.<wbr/></p>
3027 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
3028 for every pixel in the area.<wbr/> This means that a large metering area
3029 with the same weight as a smaller area will have more effect in
3030 the metering result.<wbr/> Metering areas can partially overlap and the
3031 camera device will add the weights in the overlap region.<wbr/></p>
3032 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
3033 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
3034 ignored.<wbr/></p>
3035 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3036 camera device.<wbr/></p>
3037 <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
3038 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3039 region and output only the intersection rectangle as the metering region in the result
3040 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3041 not reported in the result metadata.<wbr/></p>
3042             </td>
3043           </tr>
3044
3045           <tr class="entries_header">
3046             <th class="th_details" colspan="6">HAL Implementation Details</th>
3047           </tr>
3048           <tr class="entry_cont">
3049             <td class="entry_details" colspan="6">
3050               <p>The HAL level representation of MeteringRectangle[] is a
3051 int[5 * area_<wbr/>count].<wbr/>
3052 Every five elements represent a metering region of
3053 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3054 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3055 exclusive on xmax and ymax.<wbr/></p>
3056             </td>
3057           </tr>
3058
3059           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3060            <!-- end of entry -->
3061         
3062                 
3063           <tr class="entry" id="controls_android.control.afTrigger">
3064             <td class="entry_name
3065              " rowspan="5">
3066               android.<wbr/>control.<wbr/>af<wbr/>Trigger
3067             </td>
3068             <td class="entry_type">
3069                 <span class="entry_type_name entry_type_name_enum">byte</span>
3070
3071               <span class="entry_type_visibility"> [public]</span>
3072
3073
3074               <span class="entry_type_hwlevel">[legacy] </span>
3075
3076
3077
3078                 <ul class="entry_type_enum">
3079                   <li>
3080                     <span class="entry_type_enum_name">IDLE (v3.2)</span>
3081                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
3082                   </li>
3083                   <li>
3084                     <span class="entry_type_enum_name">START (v3.2)</span>
3085                     <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
3086                   </li>
3087                   <li>
3088                     <span class="entry_type_enum_name">CANCEL (v3.2)</span>
3089                     <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
3090 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
3091                   </li>
3092                 </ul>
3093
3094             </td> <!-- entry_type -->
3095
3096             <td class="entry_description">
3097               <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
3098             </td>
3099
3100             <td class="entry_units">
3101             </td>
3102
3103             <td class="entry_range">
3104             </td>
3105
3106             <td class="entry_hal_version">
3107               <p>3.<wbr/>2</p>
3108             </td>
3109
3110             <td class="entry_tags">
3111               <ul class="entry_tags">
3112                   <li><a href="#tag_BC">BC</a></li>
3113               </ul>
3114             </td>
3115
3116           </tr>
3117           <tr class="entries_header">
3118             <th class="th_details" colspan="6">Details</th>
3119           </tr>
3120           <tr class="entry_cont">
3121             <td class="entry_details" colspan="6">
3122               <p>This entry is normally set to IDLE,<wbr/> or is not
3123 included at all in the request settings.<wbr/></p>
3124 <p>When included and set to START,<wbr/> the camera device will trigger the
3125 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3126 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3127 and return to its initial AF state.<wbr/></p>
3128 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3129 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3130 START for multiple captures in a row means restarting the AF operation over
3131 and over again.<wbr/></p>
3132 <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>
3133 <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>
3134 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3135 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3136 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3137 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3138 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3139             </td>
3140           </tr>
3141
3142           <tr class="entries_header">
3143             <th class="th_details" colspan="6">HAL Implementation Details</th>
3144           </tr>
3145           <tr class="entry_cont">
3146             <td class="entry_details" colspan="6">
3147               <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3148 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
3149 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3150 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3151 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3152             </td>
3153           </tr>
3154
3155           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3156            <!-- end of entry -->
3157         
3158                 
3159           <tr class="entry" id="controls_android.control.awbLock">
3160             <td class="entry_name
3161              " rowspan="3">
3162               android.<wbr/>control.<wbr/>awb<wbr/>Lock
3163             </td>
3164             <td class="entry_type">
3165                 <span class="entry_type_name entry_type_name_enum">byte</span>
3166
3167               <span class="entry_type_visibility"> [public as boolean]</span>
3168
3169
3170               <span class="entry_type_hwlevel">[legacy] </span>
3171
3172
3173
3174                 <ul class="entry_type_enum">
3175                   <li>
3176                     <span class="entry_type_enum_name">OFF (v3.2)</span>
3177                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3178 algorithm is free to update its parameters if in AUTO
3179 mode.<wbr/></p></span>
3180                   </li>
3181                   <li>
3182                     <span class="entry_type_enum_name">ON (v3.2)</span>
3183                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3184 algorithm will not update its parameters while the lock
3185 is active.<wbr/></p></span>
3186                   </li>
3187                 </ul>
3188
3189             </td> <!-- entry_type -->
3190
3191             <td class="entry_description">
3192               <p>Whether auto-white balance (AWB) is currently locked to its
3193 latest calculated values.<wbr/></p>
3194             </td>
3195
3196             <td class="entry_units">
3197             </td>
3198
3199             <td class="entry_range">
3200             </td>
3201
3202             <td class="entry_hal_version">
3203               <p>3.<wbr/>2</p>
3204             </td>
3205
3206             <td class="entry_tags">
3207               <ul class="entry_tags">
3208                   <li><a href="#tag_BC">BC</a></li>
3209               </ul>
3210             </td>
3211
3212           </tr>
3213           <tr class="entries_header">
3214             <th class="th_details" colspan="6">Details</th>
3215           </tr>
3216           <tr class="entry_cont">
3217             <td class="entry_details" colspan="6">
3218               <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3219 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3220 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3221 get locked do not necessarily correspond to the settings that were present in the
3222 latest capture result received from the camera device,<wbr/> since additional captures
3223 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3224 application is switching between automatic and manual control and wishes to eliminate
3225 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3226 <ol>
3227 <li>Starting in auto-AWB mode:</li>
3228 <li>Lock AWB</li>
3229 <li>Wait for the first result to be output that has the AWB locked</li>
3230 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3231 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3232 </ol>
3233 <p>Note that AWB lock is only meaningful when
3234 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3235 AWB is already fixed to a specific setting.<wbr/></p>
3236 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3237             </td>
3238           </tr>
3239
3240
3241           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3242            <!-- end of entry -->
3243         
3244                 
3245           <tr class="entry" id="controls_android.control.awbMode">
3246             <td class="entry_name
3247              " rowspan="3">
3248               android.<wbr/>control.<wbr/>awb<wbr/>Mode
3249             </td>
3250             <td class="entry_type">
3251                 <span class="entry_type_name entry_type_name_enum">byte</span>
3252
3253               <span class="entry_type_visibility"> [public]</span>
3254
3255
3256               <span class="entry_type_hwlevel">[legacy] </span>
3257
3258
3259
3260                 <ul class="entry_type_enum">
3261                   <li>
3262                     <span class="entry_type_enum_name">OFF (v3.2)</span>
3263                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3264 <p>The application-selected color transform matrix
3265 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3266 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3267 device for manual white balance control.<wbr/></p></span>
3268                   </li>
3269                   <li>
3270                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
3271                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3272 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3273 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3274 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3275 values used by the camera device for the transform and gains
3276 will be available in the capture result for this request.<wbr/></p></span>
3277                   </li>
3278                   <li>
3279                     <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
3280                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3281 the camera device uses incandescent light as the assumed scene
3282 illumination for white balance.<wbr/></p>
3283 <p>While the exact white balance transforms are up to the
3284 camera device,<wbr/> they will approximately match the CIE
3285 standard illuminant A.<wbr/></p>
3286 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3287 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3288 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3289 values used by the camera device for the transform and gains
3290 will be available in the capture result for this request.<wbr/></p></span>
3291                   </li>
3292                   <li>
3293                     <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
3294                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3295 the camera device uses fluorescent light as the assumed scene
3296 illumination for white balance.<wbr/></p>
3297 <p>While the exact white balance transforms are up to the
3298 camera device,<wbr/> they will approximately match the CIE
3299 standard illuminant F2.<wbr/></p>
3300 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3301 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3302 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3303 values used by the camera device for the transform and gains
3304 will be available in the capture result for this request.<wbr/></p></span>
3305                   </li>
3306                   <li>
3307                     <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
3308                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3309 the camera device uses warm fluorescent light as the assumed scene
3310 illumination for white balance.<wbr/></p>
3311 <p>While the exact white balance transforms are up to the
3312 camera device,<wbr/> they will approximately match the CIE
3313 standard illuminant F4.<wbr/></p>
3314 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3315 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3316 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3317 values used by the camera device for the transform and gains
3318 will be available in the capture result for this request.<wbr/></p></span>
3319                   </li>
3320                   <li>
3321                     <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
3322                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3323 the camera device uses daylight light as the assumed scene
3324 illumination for white balance.<wbr/></p>
3325 <p>While the exact white balance transforms are up to the
3326 camera device,<wbr/> they will approximately match the CIE
3327 standard illuminant D65.<wbr/></p>
3328 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3329 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3330 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3331 values used by the camera device for the transform and gains
3332 will be available in the capture result for this request.<wbr/></p></span>
3333                   </li>
3334                   <li>
3335                     <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
3336                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3337 the camera device uses cloudy daylight light as the assumed scene
3338 illumination for white balance.<wbr/></p>
3339 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3340 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3341 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3342 values used by the camera device for the transform and gains
3343 will be available in the capture result for this request.<wbr/></p></span>
3344                   </li>
3345                   <li>
3346                     <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
3347                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3348 the camera device uses twilight light as the assumed scene
3349 illumination for white balance.<wbr/></p>
3350 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3351 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3352 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3353 values used by the camera device for the transform and gains
3354 will be available in the capture result for this request.<wbr/></p></span>
3355                   </li>
3356                   <li>
3357                     <span class="entry_type_enum_name">SHADE (v3.2)</span>
3358                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3359 the camera device uses shade light as the assumed scene
3360 illumination for white balance.<wbr/></p>
3361 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3362 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3363 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3364 values used by the camera device for the transform and gains
3365 will be available in the capture result for this request.<wbr/></p></span>
3366                   </li>
3367                 </ul>
3368
3369             </td> <!-- entry_type -->
3370
3371             <td class="entry_description">
3372               <p>Whether auto-white balance (AWB) is currently setting the color
3373 transform fields,<wbr/> and what its illumination target
3374 is.<wbr/></p>
3375             </td>
3376
3377             <td class="entry_units">
3378             </td>
3379
3380             <td class="entry_range">
3381               <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3382             </td>
3383
3384             <td class="entry_hal_version">
3385               <p>3.<wbr/>2</p>
3386             </td>
3387
3388             <td class="entry_tags">
3389               <ul class="entry_tags">
3390                   <li><a href="#tag_BC">BC</a></li>
3391               </ul>
3392             </td>
3393
3394           </tr>
3395           <tr class="entries_header">
3396             <th class="th_details" colspan="6">Details</th>
3397           </tr>
3398           <tr class="entry_cont">
3399             <td class="entry_details" colspan="6">
3400               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3401 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3402 routine is enabled,<wbr/> overriding the application's selected
3403 <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
3404 <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>
3405 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3406 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
3407 setting AE mode to OFF.<wbr/></p>
3408 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3409 routine is disabled.<wbr/> The application manually controls the white
3410 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>
3411 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3412 <p>When set to any other modes,<wbr/> the camera device's auto-white
3413 balance routine is disabled.<wbr/> The camera device uses each
3414 particular illumination target for white balance
3415 adjustment.<wbr/> The application's values for
3416 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3417 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3418 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3419             </td>
3420           </tr>
3421
3422
3423           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3424            <!-- end of entry -->
3425         
3426                 
3427           <tr class="entry" id="controls_android.control.awbRegions">
3428             <td class="entry_name
3429              " rowspan="5">
3430               android.<wbr/>control.<wbr/>awb<wbr/>Regions
3431             </td>
3432             <td class="entry_type">
3433                 <span class="entry_type_name">int32</span>
3434                 <span class="entry_type_container">x</span>
3435
3436                 <span class="entry_type_array">
3437                   5 x area_count
3438                 </span>
3439               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3440
3441
3442
3443
3444
3445
3446             </td> <!-- entry_type -->
3447
3448             <td class="entry_description">
3449               <p>List of metering areas to use for auto-white-balance illuminant
3450 estimation.<wbr/></p>
3451             </td>
3452
3453             <td class="entry_units">
3454               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3455             </td>
3456
3457             <td class="entry_range">
3458               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3459 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3460             </td>
3461
3462             <td class="entry_hal_version">
3463               <p>3.<wbr/>2</p>
3464             </td>
3465
3466             <td class="entry_tags">
3467               <ul class="entry_tags">
3468                   <li><a href="#tag_BC">BC</a></li>
3469               </ul>
3470             </td>
3471
3472           </tr>
3473           <tr class="entries_header">
3474             <th class="th_details" colspan="6">Details</th>
3475           </tr>
3476           <tr class="entry_cont">
3477             <td class="entry_details" colspan="6">
3478               <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3479 Otherwise will always be present.<wbr/></p>
3480 <p>The maximum number of regions supported by the device is determined by the value
3481 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3482 <p>The coordinate system is based on the active pixel array,<wbr/>
3483 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3484 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3485 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3486 bottom-right pixel in the active pixel array.<wbr/></p>
3487 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3488 for every pixel in the area.<wbr/> This means that a large metering area
3489 with the same weight as a smaller area will have more effect in
3490 the metering result.<wbr/> Metering areas can partially overlap and the
3491 camera device will add the weights in the overlap region.<wbr/></p>
3492 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3493 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
3494 0 weight is ignored.<wbr/></p>
3495 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3496 camera device.<wbr/></p>
3497 <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
3498 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3499 region and output only the intersection rectangle as the metering region in the result
3500 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3501 not reported in the result metadata.<wbr/></p>
3502             </td>
3503           </tr>
3504
3505           <tr class="entries_header">
3506             <th class="th_details" colspan="6">HAL Implementation Details</th>
3507           </tr>
3508           <tr class="entry_cont">
3509             <td class="entry_details" colspan="6">
3510               <p>The HAL level representation of MeteringRectangle[] is a
3511 int[5 * area_<wbr/>count].<wbr/>
3512 Every five elements represent a metering region of
3513 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3514 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3515 exclusive on xmax and ymax.<wbr/></p>
3516             </td>
3517           </tr>
3518
3519           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3520            <!-- end of entry -->
3521         
3522                 
3523           <tr class="entry" id="controls_android.control.captureIntent">
3524             <td class="entry_name
3525              " rowspan="3">
3526               android.<wbr/>control.<wbr/>capture<wbr/>Intent
3527             </td>
3528             <td class="entry_type">
3529                 <span class="entry_type_name entry_type_name_enum">byte</span>
3530
3531               <span class="entry_type_visibility"> [public]</span>
3532
3533
3534               <span class="entry_type_hwlevel">[legacy] </span>
3535
3536
3537
3538                 <ul class="entry_type_enum">
3539                   <li>
3540                     <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
3541                     <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3542 categories.<wbr/> The camera device will default to preview-like
3543 behavior.<wbr/></p></span>
3544                   </li>
3545                   <li>
3546                     <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
3547                     <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3548 <p>The precapture trigger may be used to start off a metering
3549 w/<wbr/>flash sequence.<wbr/></p></span>
3550                   </li>
3551                   <li>
3552                     <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
3553                     <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3554 use case.<wbr/></p>
3555 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3556                   </li>
3557                   <li>
3558                     <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
3559                     <span class="entry_type_enum_notes"><p>This request is for a video recording
3560 use case.<wbr/></p></span>
3561                   </li>
3562                   <li>
3563                     <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
3564                     <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3565 image while recording video) use case.<wbr/></p>
3566 <p>The camera device should take the highest-quality image
3567 possible (given the other settings) without disrupting the
3568 frame rate of video recording.<wbr/>  </p></span>
3569                   </li>
3570                   <li>
3571                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
3572                     <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3573 application will stream full-resolution images and
3574 reprocess one or several later for a final
3575 capture.<wbr/></p></span>
3576                   </li>
3577                   <li>
3578                     <span class="entry_type_enum_name">MANUAL (v3.2)</span>
3579                     <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3580 the applications want to directly control the capture parameters.<wbr/></p>
3581 <p>For example,<wbr/> the application may wish to manually control
3582 <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>
3583                   </li>
3584                 </ul>
3585
3586             </td> <!-- entry_type -->
3587
3588             <td class="entry_description">
3589               <p>Information to the camera device 3A (auto-exposure,<wbr/>
3590 auto-focus,<wbr/> auto-white balance) routines about the purpose
3591 of this capture,<wbr/> to help the camera device to decide optimal 3A
3592 strategy.<wbr/></p>
3593             </td>
3594
3595             <td class="entry_units">
3596             </td>
3597
3598             <td class="entry_range">
3599             </td>
3600
3601             <td class="entry_hal_version">
3602               <p>3.<wbr/>2</p>
3603             </td>
3604
3605             <td class="entry_tags">
3606               <ul class="entry_tags">
3607                   <li><a href="#tag_BC">BC</a></li>
3608               </ul>
3609             </td>
3610
3611           </tr>
3612           <tr class="entries_header">
3613             <th class="th_details" colspan="6">Details</th>
3614           </tr>
3615           <tr class="entry_cont">
3616             <td class="entry_details" colspan="6">
3617               <p>This control (except for MANUAL) is only effective if
3618 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3619 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
3620 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
3621 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
3622 always supported.<wbr/></p>
3623             </td>
3624           </tr>
3625
3626
3627           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3628            <!-- end of entry -->
3629         
3630                 
3631           <tr class="entry" id="controls_android.control.effectMode">
3632             <td class="entry_name
3633              " rowspan="3">
3634               android.<wbr/>control.<wbr/>effect<wbr/>Mode
3635             </td>
3636             <td class="entry_type">
3637                 <span class="entry_type_name entry_type_name_enum">byte</span>
3638
3639               <span class="entry_type_visibility"> [public]</span>
3640
3641
3642               <span class="entry_type_hwlevel">[legacy] </span>
3643
3644
3645
3646                 <ul class="entry_type_enum">
3647                   <li>
3648                     <span class="entry_type_enum_name">OFF (v3.2)</span>
3649                     <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3650                   </li>
3651                   <li>
3652                     <span class="entry_type_enum_name">MONO (v3.2)</span>
3653                     <span class="entry_type_enum_optional">[optional]</span>
3654                     <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3655 a single color.<wbr/></p>
3656 <p>This will typically be grayscale.<wbr/></p></span>
3657                   </li>
3658                   <li>
3659                     <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
3660                     <span class="entry_type_enum_optional">[optional]</span>
3661                     <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3662 are inverted.<wbr/></p></span>
3663                   </li>
3664                   <li>
3665                     <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
3666                     <span class="entry_type_enum_optional">[optional]</span>
3667                     <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3668 image is wholly or partially reversed in
3669 tone.<wbr/></p></span>
3670                   </li>
3671                   <li>
3672                     <span class="entry_type_enum_name">SEPIA (v3.2)</span>
3673                     <span class="entry_type_enum_optional">[optional]</span>
3674                     <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3675 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3676                   </li>
3677                   <li>
3678                     <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
3679                     <span class="entry_type_enum_optional">[optional]</span>
3680                     <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3681 discrete regions of tone rather than a continuous
3682 gradient of tones.<wbr/></p></span>
3683                   </li>
3684                   <li>
3685                     <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
3686                     <span class="entry_type_enum_optional">[optional]</span>
3687                     <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3688 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3689                   </li>
3690                   <li>
3691                     <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
3692                     <span class="entry_type_enum_optional">[optional]</span>
3693                     <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3694 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3695                   </li>
3696                   <li>
3697                     <span class="entry_type_enum_name">AQUA (v3.2)</span>
3698                     <span class="entry_type_enum_optional">[optional]</span>
3699                     <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3700                   </li>
3701                 </ul>
3702
3703             </td> <!-- entry_type -->
3704
3705             <td class="entry_description">
3706               <p>A special color effect to apply.<wbr/></p>
3707             </td>
3708
3709             <td class="entry_units">
3710             </td>
3711
3712             <td class="entry_range">
3713               <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3714             </td>
3715
3716             <td class="entry_hal_version">
3717               <p>3.<wbr/>2</p>
3718             </td>
3719
3720             <td class="entry_tags">
3721               <ul class="entry_tags">
3722                   <li><a href="#tag_BC">BC</a></li>
3723               </ul>
3724             </td>
3725
3726           </tr>
3727           <tr class="entries_header">
3728             <th class="th_details" colspan="6">Details</th>
3729           </tr>
3730           <tr class="entry_cont">
3731             <td class="entry_details" colspan="6">
3732               <p>When this mode is set,<wbr/> a color effect will be applied
3733 to images produced by the camera device.<wbr/> The interpretation
3734 and implementation of these color effects is left to the
3735 implementor of the camera device,<wbr/> and should not be
3736 depended on to be consistent (or present) across all
3737 devices.<wbr/></p>
3738             </td>
3739           </tr>
3740
3741
3742           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3743            <!-- end of entry -->
3744         
3745                 
3746           <tr class="entry" id="controls_android.control.mode">
3747             <td class="entry_name
3748              " rowspan="3">
3749               android.<wbr/>control.<wbr/>mode
3750             </td>
3751             <td class="entry_type">
3752                 <span class="entry_type_name entry_type_name_enum">byte</span>
3753
3754               <span class="entry_type_visibility"> [public]</span>
3755
3756
3757               <span class="entry_type_hwlevel">[legacy] </span>
3758
3759
3760
3761                 <ul class="entry_type_enum">
3762                   <li>
3763                     <span class="entry_type_enum_name">OFF (v3.2)</span>
3764                     <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3765 <p>All control by the device's metering and focusing (3A)
3766 routines is disabled,<wbr/> and no other settings in
3767 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3768 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3769 device to select post-processing values for processing
3770 blocks that do not allow for manual control,<wbr/> or are not
3771 exposed by the camera API.<wbr/></p>
3772 <p>However,<wbr/> the camera device's 3A routines may continue to
3773 collect statistics and update their internal state so that
3774 when control is switched to AUTO mode,<wbr/> good control values
3775 can be immediately applied.<wbr/></p></span>
3776                   </li>
3777                   <li>
3778                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
3779                     <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3780 <p>Manual control of capture parameters is disabled.<wbr/> All
3781 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3782 effect.<wbr/></p></span>
3783                   </li>
3784                   <li>
3785                     <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
3786                     <span class="entry_type_enum_optional">[optional]</span>
3787                     <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3788 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3789 control.<wbr/>afMode controls; the camera device will ignore
3790 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3791 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3792 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3793 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3794 contain some modes other than DISABLED).<wbr/></p></span>
3795                   </li>
3796                   <li>
3797                     <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
3798                     <span class="entry_type_enum_optional">[optional]</span>
3799                     <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3800 used by camera device background auto-exposure,<wbr/> auto-white balance and
3801 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3802 <p>Specifically,<wbr/> the 3A routines are locked to the last
3803 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3804 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3805 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3806 discarded by the camera device.<wbr/></p></span>
3807                   </li>
3808                 </ul>
3809
3810             </td> <!-- entry_type -->
3811
3812             <td class="entry_description">
3813               <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3814 routines.<wbr/></p>
3815             </td>
3816
3817             <td class="entry_units">
3818             </td>
3819
3820             <td class="entry_range">
3821               <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3822             </td>
3823
3824             <td class="entry_hal_version">
3825               <p>3.<wbr/>2</p>
3826             </td>
3827
3828             <td class="entry_tags">
3829               <ul class="entry_tags">
3830                   <li><a href="#tag_BC">BC</a></li>
3831               </ul>
3832             </td>
3833
3834           </tr>
3835           <tr class="entries_header">
3836             <th class="th_details" colspan="6">Details</th>
3837           </tr>
3838           <tr class="entry_cont">
3839             <td class="entry_details" colspan="6">
3840               <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3841 by the camera device is disabled.<wbr/> The application must set the fields for
3842 capture parameters itself.<wbr/></p>
3843 <p>When set to AUTO,<wbr/> the individual algorithm controls in
3844 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>
3845 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3846 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
3847 implements one of the scene mode settings (such as ACTION,<wbr/>
3848 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
3849 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3850 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3851 is that this frame will not be used by camera device background 3A statistics
3852 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3853 where the application doesn't want a 3A manual control capture to affect
3854 the subsequent auto 3A capture results.<wbr/></p>
3855             </td>
3856           </tr>
3857
3858
3859           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3860            <!-- end of entry -->
3861         
3862                 
3863           <tr class="entry" id="controls_android.control.sceneMode">
3864             <td class="entry_name
3865              " rowspan="5">
3866               android.<wbr/>control.<wbr/>scene<wbr/>Mode
3867             </td>
3868             <td class="entry_type">
3869                 <span class="entry_type_name entry_type_name_enum">byte</span>
3870
3871               <span class="entry_type_visibility"> [public]</span>
3872
3873
3874               <span class="entry_type_hwlevel">[legacy] </span>
3875
3876
3877
3878                 <ul class="entry_type_enum">
3879                   <li>
3880                     <span class="entry_type_enum_name">DISABLED (v3.2)</span>
3881                     <span class="entry_type_enum_value">0</span>
3882                     <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3883                   </li>
3884                   <li>
3885                     <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
3886                     <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3887 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3888 auto-exposure routines.<wbr/></p>
3889 <p>If face detection statistics are disabled
3890 (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/>
3891 this should still operate correctly (but will not return
3892 face detection statistics to the framework).<wbr/></p>
3893 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3894 <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>
3895 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3896                   </li>
3897                   <li>
3898                     <span class="entry_type_enum_name">ACTION (v3.2)</span>
3899                     <span class="entry_type_enum_optional">[optional]</span>
3900                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3901 <p>Similar to SPORTS.<wbr/></p></span>
3902                   </li>
3903                   <li>
3904                     <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
3905                     <span class="entry_type_enum_optional">[optional]</span>
3906                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3907                   </li>
3908                   <li>
3909                     <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
3910                     <span class="entry_type_enum_optional">[optional]</span>
3911                     <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3912                   </li>
3913                   <li>
3914                     <span class="entry_type_enum_name">NIGHT (v3.2)</span>
3915                     <span class="entry_type_enum_optional">[optional]</span>
3916                     <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3917                   </li>
3918                   <li>
3919                     <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
3920                     <span class="entry_type_enum_optional">[optional]</span>
3921                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3922 settings.<wbr/></p></span>
3923                   </li>
3924                   <li>
3925                     <span class="entry_type_enum_name">THEATRE (v3.2)</span>
3926                     <span class="entry_type_enum_optional">[optional]</span>
3927                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3928 remain off.<wbr/></p></span>
3929                   </li>
3930                   <li>
3931                     <span class="entry_type_enum_name">BEACH (v3.2)</span>
3932                     <span class="entry_type_enum_optional">[optional]</span>
3933                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3934                   </li>
3935                   <li>
3936                     <span class="entry_type_enum_name">SNOW (v3.2)</span>
3937                     <span class="entry_type_enum_optional">[optional]</span>
3938                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3939                   </li>
3940                   <li>
3941                     <span class="entry_type_enum_name">SUNSET (v3.2)</span>
3942                     <span class="entry_type_enum_optional">[optional]</span>
3943                     <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3944                   </li>
3945                   <li>
3946                     <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
3947                     <span class="entry_type_enum_optional">[optional]</span>
3948                     <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
3949 device motion (for example: due to hand shake).<wbr/></p></span>
3950                   </li>
3951                   <li>
3952                     <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
3953                     <span class="entry_type_enum_optional">[optional]</span>
3954                     <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
3955                   </li>
3956                   <li>
3957                     <span class="entry_type_enum_name">SPORTS (v3.2)</span>
3958                     <span class="entry_type_enum_optional">[optional]</span>
3959                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
3960 <p>Similar to ACTION.<wbr/></p></span>
3961                   </li>
3962                   <li>
3963                     <span class="entry_type_enum_name">PARTY (v3.2)</span>
3964                     <span class="entry_type_enum_optional">[optional]</span>
3965                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
3966 people.<wbr/></p></span>
3967                   </li>
3968                   <li>
3969                     <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
3970                     <span class="entry_type_enum_optional">[optional]</span>
3971                     <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
3972 is a flame.<wbr/></p></span>
3973                   </li>
3974                   <li>
3975                     <span class="entry_type_enum_name">BARCODE (v3.2)</span>
3976                     <span class="entry_type_enum_optional">[optional]</span>
3977                     <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
3978 for use by camera applications that wish to read the
3979 barcode value.<wbr/></p></span>
3980                   </li>
3981                   <li>
3982                     <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
3983                     <span class="entry_type_enum_deprecated">[deprecated]</span>
3984                     <span class="entry_type_enum_optional">[optional]</span>
3985                     <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>
3986 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
3987 for high speed video recording.<wbr/></p>
3988 <p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
3989 <p>The supported high speed video sizes and fps ranges are specified in
3990 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
3991 output frame rates,<wbr/> the application is only allowed to select video size
3992 and fps range combinations listed in this static metadata.<wbr/> The fps range
3993 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
3994 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
3995 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
3996 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
3997 and post-processing parameters is possible.<wbr/> All other controls operate the
3998 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
3999 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
4000 <ul>
4001 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
4002 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
4003 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
4004 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
4005 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
4006 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
4007 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
4008 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
4009 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
4010 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
4011 </ul>
4012 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
4013 <ul>
4014 <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>
4015 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
4016 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
4017 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
4018 </ul>
4019 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
4020 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
4021 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
4022 the application need check if the video encoder is capable of supporting the
4023 high frame rate for a given video size,<wbr/> or it will end up with lower recording
4024 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
4025 rate will be bounded by the screen refresh rate.<wbr/></p>
4026 <p>The camera device will only support up to 2 output high speed streams
4027 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
4028 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
4029 <ul>
4030 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
4031 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
4032 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>
4033 <li>The stream sizes are selected from the sizes reported by
4034 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
4035 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
4036 </ul>
4037 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
4038 <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/>
4039 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
4040 and the returned capture result metadata will give the fps range choosen
4041 by the camera device.<wbr/></p>
4042 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
4043 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
4044 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
4045                   </li>
4046                   <li>
4047                     <span class="entry_type_enum_name">HDR (v3.2)</span>
4048                     <span class="entry_type_enum_optional">[optional]</span>
4049                     <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
4050 <p>In this scene mode,<wbr/> the camera device captures images
4051 that keep a larger range of scene illumination levels
4052 visible in the final image.<wbr/> For example,<wbr/> when taking a
4053 picture of a object in front of a bright window,<wbr/> both
4054 the object and the scene through the window may be
4055 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
4056 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
4057 HDR mode generally takes much longer to capture a single
4058 image,<wbr/> has no user control,<wbr/> and may have other artifacts
4059 depending on the HDR method used.<wbr/></p>
4060 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
4061 than regular captures.<wbr/></p>
4062 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
4063 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
4064 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
4065 using a high dynamic range capture technique.<wbr/>  On LEGACY
4066 devices,<wbr/> captures that target a JPEG-format output will
4067 be captured with HDR,<wbr/> and the capture intent is not
4068 relevant.<wbr/></p>
4069 <p>The HDR capture may involve the device capturing a burst
4070 of images internally and combining them into one,<wbr/> or it
4071 may involve the device using specialized high dynamic
4072 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
4073 produced in response to a capture request submitted
4074 while in HDR mode.<wbr/></p>
4075 <p>Since substantial post-processing is generally needed to
4076 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
4077 outputs are supported for LIMITED/<wbr/>FULL device HDR
4078 captures,<wbr/> and only JPEG outputs are supported for LEGACY
4079 HDR captures.<wbr/> Using a RAW output for HDR capture is not
4080 supported.<wbr/></p>
4081 <p>Some devices may also support always-on HDR,<wbr/> which
4082 applies HDR processing at full frame rate.<wbr/>  For these
4083 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
4084 produce an HDR output with no frame rate impact compared
4085 to normal operation,<wbr/> though the quality may be lower
4086 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
4087 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
4088 or capture intents,<wbr/> the images captured will be as if
4089 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
4090                   </li>
4091                   <li>
4092                     <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
4093                     <span class="entry_type_enum_optional">[optional]</span>
4094                     <span class="entry_type_enum_hidden">[hidden]</span>
4095                     <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
4096 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
4097 under low light conditions.<wbr/></p>
4098 <p>The camera device may be tuned to expose the images in a reduced
4099 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
4100 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/>
4101 the camera device auto-exposure routine tuning process may limit the actual
4102 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
4103 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
4104 low light may be under-exposed when the sensor max exposure time (bounded by the
4105 <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
4106 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
4107 camera device auto-exposure routine to increase the sensitivity up to the max
4108 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
4109 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
4110 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
4111 recommended that the application only use this scene mode when it is capable of
4112 reducing the noise level of the captured images.<wbr/></p>
4113 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4114 <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>
4115 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
4116                   </li>
4117                   <li>
4118                     <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
4119                     <span class="entry_type_enum_optional">[optional]</span>
4120                     <span class="entry_type_enum_hidden">[hidden]</span>
4121                     <span class="entry_type_enum_value">100</span>
4122                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4123 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4124 customized scene modes.<wbr/></p></span>
4125                   </li>
4126                   <li>
4127                     <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
4128                     <span class="entry_type_enum_optional">[optional]</span>
4129                     <span class="entry_type_enum_hidden">[hidden]</span>
4130                     <span class="entry_type_enum_value">127</span>
4131                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4132 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4133 customized scene modes.<wbr/></p></span>
4134                   </li>
4135                 </ul>
4136
4137             </td> <!-- entry_type -->
4138
4139             <td class="entry_description">
4140               <p>Control for which scene mode is currently active.<wbr/></p>
4141             </td>
4142
4143             <td class="entry_units">
4144             </td>
4145
4146             <td class="entry_range">
4147               <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
4148             </td>
4149
4150             <td class="entry_hal_version">
4151               <p>3.<wbr/>2</p>
4152             </td>
4153
4154             <td class="entry_tags">
4155               <ul class="entry_tags">
4156                   <li><a href="#tag_BC">BC</a></li>
4157               </ul>
4158             </td>
4159
4160           </tr>
4161           <tr class="entries_header">
4162             <th class="th_details" colspan="6">Details</th>
4163           </tr>
4164           <tr class="entry_cont">
4165             <td class="entry_details" colspan="6">
4166               <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4167 capture settings.<wbr/></p>
4168 <p>This is the mode that that is active when
4169 <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
4170 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>
4171 while in use.<wbr/></p>
4172 <p>The interpretation and implementation of these scene modes is left
4173 to the implementor of the camera device.<wbr/> Their behavior will not be
4174 consistent across all devices,<wbr/> and any given device may only implement
4175 a subset of these modes.<wbr/></p>
4176             </td>
4177           </tr>
4178
4179           <tr class="entries_header">
4180             <th class="th_details" colspan="6">HAL Implementation Details</th>
4181           </tr>
4182           <tr class="entry_cont">
4183             <td class="entry_details" colspan="6">
4184               <p>HAL implementations that include scene modes are expected to provide
4185 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4186 <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
4187 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4188 <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
4189 HAL must list supported video size and fps range in
4190 <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/>
4191 if the HAL has two different sensor configurations for normal streaming mode and high
4192 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
4193 HAL may have to switch between different sensor modes.<wbr/>  This mode is deprecated in legacy
4194 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4195 <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
4196 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4197             </td>
4198           </tr>
4199
4200           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4201            <!-- end of entry -->
4202         
4203                 
4204           <tr class="entry" id="controls_android.control.videoStabilizationMode">
4205             <td class="entry_name
4206              " rowspan="3">
4207               android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4208             </td>
4209             <td class="entry_type">
4210                 <span class="entry_type_name entry_type_name_enum">byte</span>
4211
4212               <span class="entry_type_visibility"> [public]</span>
4213
4214
4215               <span class="entry_type_hwlevel">[legacy] </span>
4216
4217
4218
4219                 <ul class="entry_type_enum">
4220                   <li>
4221                     <span class="entry_type_enum_name">OFF (v3.2)</span>
4222                     <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4223                   </li>
4224                   <li>
4225                     <span class="entry_type_enum_name">ON (v3.2)</span>
4226                     <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4227                   </li>
4228                 </ul>
4229
4230             </td> <!-- entry_type -->
4231
4232             <td class="entry_description">
4233               <p>Whether video stabilization is
4234 active.<wbr/></p>
4235             </td>
4236
4237             <td class="entry_units">
4238             </td>
4239
4240             <td class="entry_range">
4241             </td>
4242
4243             <td class="entry_hal_version">
4244               <p>3.<wbr/>2</p>
4245             </td>
4246
4247             <td class="entry_tags">
4248               <ul class="entry_tags">
4249                   <li><a href="#tag_BC">BC</a></li>
4250               </ul>
4251             </td>
4252
4253           </tr>
4254           <tr class="entries_header">
4255             <th class="th_details" colspan="6">Details</th>
4256           </tr>
4257           <tr class="entry_cont">
4258             <td class="entry_details" colspan="6">
4259               <p>Video stabilization automatically warps images from
4260 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4261 <p>If enabled,<wbr/> video stabilization can modify the
4262 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4263 <p>Switching between different video stabilization modes may take several
4264 frames to initialize,<wbr/> the camera device will report the current mode
4265 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4266 the video stabilization modes in the first several capture results may
4267 still be "OFF",<wbr/> and it will become "ON" when the initialization is
4268 done.<wbr/></p>
4269 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4270 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4271 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4272 the recording resolution is less than or equal to 1920 x 1080 (width less than
4273 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4274 frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
4275 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4276 OFF if the recording output is not stabilized,<wbr/> or if there are no output
4277 Surface types that can be stabilized.<wbr/></p>
4278 <p>If a camera device supports both this mode and OIS
4279 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4280 produce undesirable interaction,<wbr/> so it is recommended not to enable
4281 both at the same time.<wbr/></p>
4282             </td>
4283           </tr>
4284
4285
4286           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4287            <!-- end of entry -->
4288         
4289                 
4290           <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
4291             <td class="entry_name
4292              " rowspan="3">
4293               android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
4294             </td>
4295             <td class="entry_type">
4296                 <span class="entry_type_name">int32</span>
4297
4298               <span class="entry_type_visibility"> [public]</span>
4299
4300
4301
4302
4303
4304
4305             </td> <!-- entry_type -->
4306
4307             <td class="entry_description">
4308               <p>The amount of additional sensitivity boost applied to output images
4309 after RAW sensor data is captured.<wbr/></p>
4310             </td>
4311
4312             <td class="entry_units">
4313               ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
4314             </td>
4315
4316             <td class="entry_range">
4317               <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
4318             </td>
4319
4320             <td class="entry_hal_version">
4321               <p>3.<wbr/>2</p>
4322             </td>
4323
4324             <td class="entry_tags">
4325             </td>
4326
4327           </tr>
4328           <tr class="entries_header">
4329             <th class="th_details" colspan="6">Details</th>
4330           </tr>
4331           <tr class="entry_cont">
4332             <td class="entry_details" colspan="6">
4333               <p>Some camera devices support additional digital sensitivity boosting in the
4334 camera processing pipeline after sensor RAW image is captured.<wbr/>
4335 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
4336 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
4337 <p>This key will be <code>null</code> for devices that do not support any RAW format
4338 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
4339 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
4340 list <code>100</code> in this key.<wbr/></p>
4341 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
4342 boost to the nearest supported value.<wbr/>
4343 The final boost value used will be available in the output capture result.<wbr/></p>
4344 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
4345 of such device will have the total sensitivity of
4346 <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>
4347 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
4348 <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
4349 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
4350             </td>
4351           </tr>
4352
4353
4354           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4355            <!-- end of entry -->
4356         
4357                 
4358           <tr class="entry" id="controls_android.control.enableZsl">
4359             <td class="entry_name
4360              " rowspan="5">
4361               android.<wbr/>control.<wbr/>enable<wbr/>Zsl
4362             </td>
4363             <td class="entry_type">
4364                 <span class="entry_type_name entry_type_name_enum">byte</span>
4365
4366               <span class="entry_type_visibility"> [public as boolean]</span>
4367
4368
4369
4370
4371
4372                 <ul class="entry_type_enum">
4373                   <li>
4374                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
4375                     <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
4376 after previous requests.<wbr/></p></span>
4377                   </li>
4378                   <li>
4379                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
4380                     <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
4381 captured before previous requests.<wbr/></p></span>
4382                   </li>
4383                 </ul>
4384
4385             </td> <!-- entry_type -->
4386
4387             <td class="entry_description">
4388               <p>Allow camera device to enable zero-shutter-lag mode for requests with
4389 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
4390             </td>
4391
4392             <td class="entry_units">
4393             </td>
4394
4395             <td class="entry_range">
4396             </td>
4397
4398             <td class="entry_hal_version">
4399               <p>3.<wbr/>2</p>
4400             </td>
4401
4402             <td class="entry_tags">
4403             </td>
4404
4405           </tr>
4406           <tr class="entries_header">
4407             <th class="th_details" colspan="6">Details</th>
4408           </tr>
4409           <tr class="entry_cont">
4410             <td class="entry_details" colspan="6">
4411               <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
4412 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
4413 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
4414 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
4415 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
4416 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
4417 capture intents.<wbr/></p>
4418 <p>For example,<wbr/> when requests are submitted in the following order:
4419   Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
4420   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>
4421 <p>The output images for request B may have contents captured before the output images for
4422 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
4423 request A.<wbr/></p>
4424 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
4425 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
4426 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
4427 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
4428 <code>false</code> if present.<wbr/></p>
4429 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
4430 capture templates is always <code>false</code> if present.<wbr/></p>
4431 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
4432             </td>
4433           </tr>
4434
4435           <tr class="entries_header">
4436             <th class="th_details" colspan="6">HAL Implementation Details</th>
4437           </tr>
4438           <tr class="entry_cont">
4439             <td class="entry_details" colspan="6">
4440               <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
4441 capture intent.<wbr/></p>
4442             </td>
4443           </tr>
4444
4445           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4446            <!-- end of entry -->
4447         
4448         
4449
4450       <!-- end of kind -->
4451       </tbody>
4452       <tr><td colspan="7" class="kind">static</td></tr>
4453
4454       <thead class="entries_header">
4455         <tr>
4456           <th class="th_name">Property Name</th>
4457           <th class="th_type">Type</th>
4458           <th class="th_description">Description</th>
4459           <th class="th_units">Units</th>
4460           <th class="th_range">Range</th>
4461           <th class="th_hal_version">Initial HIDL HAL version</th>
4462           <th class="th_tags">Tags</th>
4463         </tr>
4464       </thead>
4465
4466       <tbody>
4467
4468         
4469
4470         
4471
4472         
4473
4474         
4475
4476                 
4477           <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4478             <td class="entry_name
4479              " rowspan="3">
4480               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4481             </td>
4482             <td class="entry_type">
4483                 <span class="entry_type_name">byte</span>
4484                 <span class="entry_type_container">x</span>
4485
4486                 <span class="entry_type_array">
4487                   n
4488                 </span>
4489               <span class="entry_type_visibility"> [public as enumList]</span>
4490
4491
4492               <span class="entry_type_hwlevel">[legacy] </span>
4493
4494
4495                 <div class="entry_type_notes">list of enums</div>
4496
4497
4498             </td> <!-- entry_type -->
4499
4500             <td class="entry_description">
4501               <p>List of auto-exposure antibanding modes for <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> that are
4502 supported by this camera device.<wbr/></p>
4503             </td>
4504
4505             <td class="entry_units">
4506             </td>
4507
4508             <td class="entry_range">
4509               <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4510             </td>
4511
4512             <td class="entry_hal_version">
4513               <p>3.<wbr/>2</p>
4514             </td>
4515
4516             <td class="entry_tags">
4517               <ul class="entry_tags">
4518                   <li><a href="#tag_BC">BC</a></li>
4519               </ul>
4520             </td>
4521
4522           </tr>
4523           <tr class="entries_header">
4524             <th class="th_details" colspan="6">Details</th>
4525           </tr>
4526           <tr class="entry_cont">
4527             <td class="entry_details" colspan="6">
4528               <p>Not all of the auto-exposure anti-banding modes may be
4529 supported by a given camera device.<wbr/> This field lists the
4530 valid anti-banding modes that the application may request
4531 for this camera device with the
4532 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4533             </td>
4534           </tr>
4535
4536
4537           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4538            <!-- end of entry -->
4539         
4540                 
4541           <tr class="entry" id="static_android.control.aeAvailableModes">
4542             <td class="entry_name
4543              " rowspan="3">
4544               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4545             </td>
4546             <td class="entry_type">
4547                 <span class="entry_type_name">byte</span>
4548                 <span class="entry_type_container">x</span>
4549
4550                 <span class="entry_type_array">
4551                   n
4552                 </span>
4553               <span class="entry_type_visibility"> [public as enumList]</span>
4554
4555
4556               <span class="entry_type_hwlevel">[legacy] </span>
4557
4558
4559                 <div class="entry_type_notes">list of enums</div>
4560
4561
4562             </td> <!-- entry_type -->
4563
4564             <td class="entry_description">
4565               <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
4566 device.<wbr/></p>
4567             </td>
4568
4569             <td class="entry_units">
4570             </td>
4571
4572             <td class="entry_range">
4573               <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4574             </td>
4575
4576             <td class="entry_hal_version">
4577               <p>3.<wbr/>2</p>
4578             </td>
4579
4580             <td class="entry_tags">
4581               <ul class="entry_tags">
4582                   <li><a href="#tag_BC">BC</a></li>
4583               </ul>
4584             </td>
4585
4586           </tr>
4587           <tr class="entries_header">
4588             <th class="th_details" colspan="6">Details</th>
4589           </tr>
4590           <tr class="entry_cont">
4591             <td class="entry_details" colspan="6">
4592               <p>Not all the auto-exposure modes may be supported by a
4593 given camera device,<wbr/> especially if no flash unit is
4594 available.<wbr/> This entry lists the valid modes for
4595 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4596 <p>All camera devices support ON,<wbr/> and all camera devices with flash
4597 units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4598 <p>FULL mode camera devices always support OFF mode,<wbr/>
4599 which enables application control of camera exposure time,<wbr/>
4600 sensitivity,<wbr/> and frame duration.<wbr/></p>
4601 <p>LEGACY mode camera devices never support OFF mode.<wbr/>
4602 LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4603 capability.<wbr/></p>
4604             </td>
4605           </tr>
4606
4607
4608           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4609            <!-- end of entry -->
4610         
4611                 
4612           <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4613             <td class="entry_name
4614              " rowspan="3">
4615               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4616             </td>
4617             <td class="entry_type">
4618                 <span class="entry_type_name">int32</span>
4619                 <span class="entry_type_container">x</span>
4620
4621                 <span class="entry_type_array">
4622                   2 x n
4623                 </span>
4624               <span class="entry_type_visibility"> [public as rangeInt]</span>
4625
4626
4627               <span class="entry_type_hwlevel">[legacy] </span>
4628
4629
4630                 <div class="entry_type_notes">list of pairs of frame rates</div>
4631
4632
4633             </td> <!-- entry_type -->
4634
4635             <td class="entry_description">
4636               <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
4637 this camera device.<wbr/></p>
4638             </td>
4639
4640             <td class="entry_units">
4641               Frames per second (FPS)
4642             </td>
4643
4644             <td class="entry_range">
4645             </td>
4646
4647             <td class="entry_hal_version">
4648               <p>3.<wbr/>2</p>
4649             </td>
4650
4651             <td class="entry_tags">
4652               <ul class="entry_tags">
4653                   <li><a href="#tag_BC">BC</a></li>
4654               </ul>
4655             </td>
4656
4657           </tr>
4658           <tr class="entries_header">
4659             <th class="th_details" colspan="6">Details</th>
4660           </tr>
4661           <tr class="entry_cont">
4662             <td class="entry_details" colspan="6">
4663               <p>For devices at the LEGACY level or above:</p>
4664 <ul>
4665 <li>
4666 <p>For constant-framerate recording,<wbr/> for each normal
4667 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4668 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4669 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4670 the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4671 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4672 supported by the device and has
4673 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4674 always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4675 </li>
4676 <li>
4677 <p>Also,<wbr/> a camera device must either not support any
4678 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4679 or support at least one
4680 normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4681 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> &gt;= 24.<wbr/></p>
4682 </li>
4683 </ul>
4684 <p>For devices at the LIMITED level or above:</p>
4685 <ul>
4686 <li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4687 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
4688 maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4689 </ul>
4690             </td>
4691           </tr>
4692
4693
4694           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4695            <!-- end of entry -->
4696         
4697                 
4698           <tr class="entry" id="static_android.control.aeCompensationRange">
4699             <td class="entry_name
4700              " rowspan="1">
4701               android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4702             </td>
4703             <td class="entry_type">
4704                 <span class="entry_type_name">int32</span>
4705                 <span class="entry_type_container">x</span>
4706
4707                 <span class="entry_type_array">
4708                   2
4709                 </span>
4710               <span class="entry_type_visibility"> [public as rangeInt]</span>
4711
4712
4713               <span class="entry_type_hwlevel">[legacy] </span>
4714
4715
4716
4717
4718             </td> <!-- entry_type -->
4719
4720             <td class="entry_description">
4721               <p>Maximum and minimum exposure compensation values for
4722 <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/>
4723 that are supported by this camera device.<wbr/></p>
4724             </td>
4725
4726             <td class="entry_units">
4727             </td>
4728
4729             <td class="entry_range">
4730               <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4731 <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4732 compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4733 <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>
4734 <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>
4735 <p>LEGACY devices may support a smaller range than this.<wbr/></p>
4736             </td>
4737
4738             <td class="entry_hal_version">
4739               <p>3.<wbr/>2</p>
4740             </td>
4741
4742             <td class="entry_tags">
4743               <ul class="entry_tags">
4744                   <li><a href="#tag_BC">BC</a></li>
4745               </ul>
4746             </td>
4747
4748           </tr>
4749
4750
4751           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4752            <!-- end of entry -->
4753         
4754                 
4755           <tr class="entry" id="static_android.control.aeCompensationStep">
4756             <td class="entry_name
4757              " rowspan="5">
4758               android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4759             </td>
4760             <td class="entry_type">
4761                 <span class="entry_type_name">rational</span>
4762
4763               <span class="entry_type_visibility"> [public]</span>
4764
4765
4766               <span class="entry_type_hwlevel">[legacy] </span>
4767
4768
4769
4770
4771             </td> <!-- entry_type -->
4772
4773             <td class="entry_description">
4774               <p>Smallest step by which the exposure compensation
4775 can be changed.<wbr/></p>
4776             </td>
4777
4778             <td class="entry_units">
4779               Exposure Value (EV)
4780             </td>
4781
4782             <td class="entry_range">
4783             </td>
4784
4785             <td class="entry_hal_version">
4786               <p>3.<wbr/>2</p>
4787             </td>
4788
4789             <td class="entry_tags">
4790               <ul class="entry_tags">
4791                   <li><a href="#tag_BC">BC</a></li>
4792               </ul>
4793             </td>
4794
4795           </tr>
4796           <tr class="entries_header">
4797             <th class="th_details" colspan="6">Details</th>
4798           </tr>
4799           <tr class="entry_cont">
4800             <td class="entry_details" colspan="6">
4801               <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
4802 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
4803 that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4804 <p>One unit of EV compensation changes the brightness of the captured image by a factor
4805 of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4806             </td>
4807           </tr>
4808
4809           <tr class="entries_header">
4810             <th class="th_details" colspan="6">HAL Implementation Details</th>
4811           </tr>
4812           <tr class="entry_cont">
4813             <td class="entry_details" colspan="6">
4814               <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4815             </td>
4816           </tr>
4817
4818           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4819            <!-- end of entry -->
4820         
4821                 
4822           <tr class="entry" id="static_android.control.afAvailableModes">
4823             <td class="entry_name
4824              " rowspan="3">
4825               android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4826             </td>
4827             <td class="entry_type">
4828                 <span class="entry_type_name">byte</span>
4829                 <span class="entry_type_container">x</span>
4830
4831                 <span class="entry_type_array">
4832                   n
4833                 </span>
4834               <span class="entry_type_visibility"> [public as enumList]</span>
4835
4836
4837               <span class="entry_type_hwlevel">[legacy] </span>
4838
4839
4840                 <div class="entry_type_notes">List of enums</div>
4841
4842
4843             </td> <!-- entry_type -->
4844
4845             <td class="entry_description">
4846               <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4847 supported by this camera device.<wbr/></p>
4848             </td>
4849
4850             <td class="entry_units">
4851             </td>
4852
4853             <td class="entry_range">
4854               <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4855             </td>
4856
4857             <td class="entry_hal_version">
4858               <p>3.<wbr/>2</p>
4859             </td>
4860
4861             <td class="entry_tags">
4862               <ul class="entry_tags">
4863                   <li><a href="#tag_BC">BC</a></li>
4864               </ul>
4865             </td>
4866
4867           </tr>
4868           <tr class="entries_header">
4869             <th class="th_details" colspan="6">Details</th>
4870           </tr>
4871           <tr class="entry_cont">
4872             <td class="entry_details" colspan="6">
4873               <p>Not all the auto-focus modes may be supported by a
4874 given camera device.<wbr/> This entry lists the valid modes for
4875 <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4876 <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4877 camera devices with adjustable focuser units
4878 (<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>
4879 <p>LEGACY devices will support OFF mode only if they support
4880 focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4881 <code>0.<wbr/>0f</code>).<wbr/></p>
4882             </td>
4883           </tr>
4884
4885
4886           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4887            <!-- end of entry -->
4888         
4889                 
4890           <tr class="entry" id="static_android.control.availableEffects">
4891             <td class="entry_name
4892              " rowspan="3">
4893               android.<wbr/>control.<wbr/>available<wbr/>Effects
4894             </td>
4895             <td class="entry_type">
4896                 <span class="entry_type_name">byte</span>
4897                 <span class="entry_type_container">x</span>
4898
4899                 <span class="entry_type_array">
4900                   n
4901                 </span>
4902               <span class="entry_type_visibility"> [public as enumList]</span>
4903
4904
4905               <span class="entry_type_hwlevel">[legacy] </span>
4906
4907
4908                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4909
4910
4911             </td> <!-- entry_type -->
4912
4913             <td class="entry_description">
4914               <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
4915 device.<wbr/></p>
4916             </td>
4917
4918             <td class="entry_units">
4919             </td>
4920
4921             <td class="entry_range">
4922               <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4923             </td>
4924
4925             <td class="entry_hal_version">
4926               <p>3.<wbr/>2</p>
4927             </td>
4928
4929             <td class="entry_tags">
4930               <ul class="entry_tags">
4931                   <li><a href="#tag_BC">BC</a></li>
4932               </ul>
4933             </td>
4934
4935           </tr>
4936           <tr class="entries_header">
4937             <th class="th_details" colspan="6">Details</th>
4938           </tr>
4939           <tr class="entry_cont">
4940             <td class="entry_details" colspan="6">
4941               <p>This list contains the color effect modes that can be applied to
4942 images produced by the camera device.<wbr/>
4943 Implementations are not expected to be consistent across all devices.<wbr/>
4944 If no color effect modes are available for a device,<wbr/> this will only list
4945 OFF.<wbr/></p>
4946 <p>A color effect will only be applied if
4947 <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
4948 <p>This control has no effect on the operation of other control routines such
4949 as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
4950             </td>
4951           </tr>
4952
4953
4954           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4955            <!-- end of entry -->
4956         
4957                 
4958           <tr class="entry" id="static_android.control.availableSceneModes">
4959             <td class="entry_name
4960              " rowspan="3">
4961               android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
4962             </td>
4963             <td class="entry_type">
4964                 <span class="entry_type_name">byte</span>
4965                 <span class="entry_type_container">x</span>
4966
4967                 <span class="entry_type_array">
4968                   n
4969                 </span>
4970               <span class="entry_type_visibility"> [public as enumList]</span>
4971
4972
4973               <span class="entry_type_hwlevel">[legacy] </span>
4974
4975
4976                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
4977
4978
4979             </td> <!-- entry_type -->
4980
4981             <td class="entry_description">
4982               <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
4983 device.<wbr/></p>
4984             </td>
4985
4986             <td class="entry_units">
4987             </td>
4988
4989             <td class="entry_range">
4990               <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
4991             </td>
4992
4993             <td class="entry_hal_version">
4994               <p>3.<wbr/>2</p>
4995             </td>
4996
4997             <td class="entry_tags">
4998               <ul class="entry_tags">
4999                   <li><a href="#tag_BC">BC</a></li>
5000               </ul>
5001             </td>
5002
5003           </tr>
5004           <tr class="entries_header">
5005             <th class="th_details" colspan="6">Details</th>
5006           </tr>
5007           <tr class="entry_cont">
5008             <td class="entry_details" colspan="6">
5009               <p>This list contains scene modes that can be set for the camera device.<wbr/>
5010 Only scene modes that have been fully implemented for the
5011 camera device may be included here.<wbr/> Implementations are not expected
5012 to be consistent across all devices.<wbr/></p>
5013 <p>If no scene modes are supported by the camera device,<wbr/> this
5014 will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
5015 <p>FACE_<wbr/>PRIORITY is always listed if face detection is
5016 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;
5017 0</code>).<wbr/></p>
5018             </td>
5019           </tr>
5020
5021
5022           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5023            <!-- end of entry -->
5024         
5025                 
5026           <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
5027             <td class="entry_name
5028              " rowspan="3">
5029               android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
5030             </td>
5031             <td class="entry_type">
5032                 <span class="entry_type_name">byte</span>
5033                 <span class="entry_type_container">x</span>
5034
5035                 <span class="entry_type_array">
5036                   n
5037                 </span>
5038               <span class="entry_type_visibility"> [public as enumList]</span>
5039
5040
5041               <span class="entry_type_hwlevel">[legacy] </span>
5042
5043
5044                 <div class="entry_type_notes">List of enums.<wbr/></div>
5045
5046
5047             </td> <!-- entry_type -->
5048
5049             <td class="entry_description">
5050               <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
5051 that are supported by this camera device.<wbr/></p>
5052             </td>
5053
5054             <td class="entry_units">
5055             </td>
5056
5057             <td class="entry_range">
5058               <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
5059             </td>
5060
5061             <td class="entry_hal_version">
5062               <p>3.<wbr/>2</p>
5063             </td>
5064
5065             <td class="entry_tags">
5066               <ul class="entry_tags">
5067                   <li><a href="#tag_BC">BC</a></li>
5068               </ul>
5069             </td>
5070
5071           </tr>
5072           <tr class="entries_header">
5073             <th class="th_details" colspan="6">Details</th>
5074           </tr>
5075           <tr class="entry_cont">
5076             <td class="entry_details" colspan="6">
5077               <p>OFF will always be listed.<wbr/></p>
5078             </td>
5079           </tr>
5080
5081
5082           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5083            <!-- end of entry -->
5084         
5085                 
5086           <tr class="entry" id="static_android.control.awbAvailableModes">
5087             <td class="entry_name
5088              " rowspan="3">
5089               android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
5090             </td>
5091             <td class="entry_type">
5092                 <span class="entry_type_name">byte</span>
5093                 <span class="entry_type_container">x</span>
5094
5095                 <span class="entry_type_array">
5096                   n
5097                 </span>
5098               <span class="entry_type_visibility"> [public as enumList]</span>
5099
5100
5101               <span class="entry_type_hwlevel">[legacy] </span>
5102
5103
5104                 <div class="entry_type_notes">List of enums</div>
5105
5106
5107             </td> <!-- entry_type -->
5108
5109             <td class="entry_description">
5110               <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
5111 camera device.<wbr/></p>
5112             </td>
5113
5114             <td class="entry_units">
5115             </td>
5116
5117             <td class="entry_range">
5118               <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
5119             </td>
5120
5121             <td class="entry_hal_version">
5122               <p>3.<wbr/>2</p>
5123             </td>
5124
5125             <td class="entry_tags">
5126               <ul class="entry_tags">
5127                   <li><a href="#tag_BC">BC</a></li>
5128               </ul>
5129             </td>
5130
5131           </tr>
5132           <tr class="entries_header">
5133             <th class="th_details" colspan="6">Details</th>
5134           </tr>
5135           <tr class="entry_cont">
5136             <td class="entry_details" colspan="6">
5137               <p>Not all the auto-white-balance modes may be supported by a
5138 given camera device.<wbr/> This entry lists the valid modes for
5139 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
5140 <p>All camera devices will support ON mode.<wbr/></p>
5141 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
5142 mode,<wbr/> which enables application control of white balance,<wbr/> by using
5143 <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
5144 mode camera devices.<wbr/></p>
5145             </td>
5146           </tr>
5147
5148
5149           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5150            <!-- end of entry -->
5151         
5152                 
5153           <tr class="entry" id="static_android.control.maxRegions">
5154             <td class="entry_name
5155              " rowspan="1">
5156               android.<wbr/>control.<wbr/>max<wbr/>Regions
5157             </td>
5158             <td class="entry_type">
5159                 <span class="entry_type_name">int32</span>
5160                 <span class="entry_type_container">x</span>
5161
5162                 <span class="entry_type_array">
5163                   3
5164                 </span>
5165               <span class="entry_type_visibility"> [ndk_public]</span>
5166
5167
5168               <span class="entry_type_hwlevel">[legacy] </span>
5169
5170
5171
5172
5173             </td> <!-- entry_type -->
5174
5175             <td class="entry_description">
5176               <p>List of the maximum number of regions that can be used for metering in
5177 auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
5178 this corresponds to the the maximum number of elements in
5179 <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/>
5180 and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5181             </td>
5182
5183             <td class="entry_units">
5184             </td>
5185
5186             <td class="entry_range">
5187               <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
5188 this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
5189 <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
5190             </td>
5191
5192             <td class="entry_hal_version">
5193               <p>3.<wbr/>2</p>
5194             </td>
5195
5196             <td class="entry_tags">
5197               <ul class="entry_tags">
5198                   <li><a href="#tag_BC">BC</a></li>
5199               </ul>
5200             </td>
5201
5202           </tr>
5203
5204
5205           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5206            <!-- end of entry -->
5207         
5208                 
5209           <tr class="entry" id="static_android.control.maxRegionsAe">
5210             <td class="entry_name
5211              " rowspan="5">
5212               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
5213             </td>
5214             <td class="entry_type">
5215                 <span class="entry_type_name">int32</span>
5216
5217               <span class="entry_type_visibility"> [java_public]</span>
5218
5219               <span class="entry_type_synthetic">[synthetic] </span>
5220
5221               <span class="entry_type_hwlevel">[legacy] </span>
5222
5223
5224
5225
5226             </td> <!-- entry_type -->
5227
5228             <td class="entry_description">
5229               <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
5230 routine.<wbr/></p>
5231             </td>
5232
5233             <td class="entry_units">
5234             </td>
5235
5236             <td class="entry_range">
5237               <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5238 value will be &gt;= 1.<wbr/></p>
5239             </td>
5240
5241             <td class="entry_hal_version">
5242               <p>3.<wbr/>2</p>
5243             </td>
5244
5245             <td class="entry_tags">
5246             </td>
5247
5248           </tr>
5249           <tr class="entries_header">
5250             <th class="th_details" colspan="6">Details</th>
5251           </tr>
5252           <tr class="entry_cont">
5253             <td class="entry_details" colspan="6">
5254               <p>This corresponds to the the maximum allowed number of elements in
5255 <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
5256             </td>
5257           </tr>
5258
5259           <tr class="entries_header">
5260             <th class="th_details" colspan="6">HAL Implementation Details</th>
5261           </tr>
5262           <tr class="entry_cont">
5263             <td class="entry_details" colspan="6">
5264               <p>This entry is private to the framework.<wbr/> Fill in
5265 maxRegions to have this entry be automatically populated.<wbr/></p>
5266             </td>
5267           </tr>
5268
5269           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5270            <!-- end of entry -->
5271         
5272                 
5273           <tr class="entry" id="static_android.control.maxRegionsAwb">
5274             <td class="entry_name
5275              " rowspan="5">
5276               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
5277             </td>
5278             <td class="entry_type">
5279                 <span class="entry_type_name">int32</span>
5280
5281               <span class="entry_type_visibility"> [java_public]</span>
5282
5283               <span class="entry_type_synthetic">[synthetic] </span>
5284
5285               <span class="entry_type_hwlevel">[legacy] </span>
5286
5287
5288
5289
5290             </td> <!-- entry_type -->
5291
5292             <td class="entry_description">
5293               <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
5294 routine.<wbr/></p>
5295             </td>
5296
5297             <td class="entry_units">
5298             </td>
5299
5300             <td class="entry_range">
5301               <p>Value will be &gt;= 0.<wbr/></p>
5302             </td>
5303
5304             <td class="entry_hal_version">
5305               <p>3.<wbr/>2</p>
5306             </td>
5307
5308             <td class="entry_tags">
5309             </td>
5310
5311           </tr>
5312           <tr class="entries_header">
5313             <th class="th_details" colspan="6">Details</th>
5314           </tr>
5315           <tr class="entry_cont">
5316             <td class="entry_details" colspan="6">
5317               <p>This corresponds to the the maximum allowed number of elements in
5318 <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5319             </td>
5320           </tr>
5321
5322           <tr class="entries_header">
5323             <th class="th_details" colspan="6">HAL Implementation Details</th>
5324           </tr>
5325           <tr class="entry_cont">
5326             <td class="entry_details" colspan="6">
5327               <p>This entry is private to the framework.<wbr/> Fill in
5328 maxRegions to have this entry be automatically populated.<wbr/></p>
5329             </td>
5330           </tr>
5331
5332           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5333            <!-- end of entry -->
5334         
5335                 
5336           <tr class="entry" id="static_android.control.maxRegionsAf">
5337             <td class="entry_name
5338              " rowspan="5">
5339               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
5340             </td>
5341             <td class="entry_type">
5342                 <span class="entry_type_name">int32</span>
5343
5344               <span class="entry_type_visibility"> [java_public]</span>
5345
5346               <span class="entry_type_synthetic">[synthetic] </span>
5347
5348               <span class="entry_type_hwlevel">[legacy] </span>
5349
5350
5351
5352
5353             </td> <!-- entry_type -->
5354
5355             <td class="entry_description">
5356               <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
5357             </td>
5358
5359             <td class="entry_units">
5360             </td>
5361
5362             <td class="entry_range">
5363               <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5364 value will be &gt;= 1.<wbr/></p>
5365             </td>
5366
5367             <td class="entry_hal_version">
5368               <p>3.<wbr/>2</p>
5369             </td>
5370
5371             <td class="entry_tags">
5372             </td>
5373
5374           </tr>
5375           <tr class="entries_header">
5376             <th class="th_details" colspan="6">Details</th>
5377           </tr>
5378           <tr class="entry_cont">
5379             <td class="entry_details" colspan="6">
5380               <p>This corresponds to the the maximum allowed number of elements in
5381 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5382             </td>
5383           </tr>
5384
5385           <tr class="entries_header">
5386             <th class="th_details" colspan="6">HAL Implementation Details</th>
5387           </tr>
5388           <tr class="entry_cont">
5389             <td class="entry_details" colspan="6">
5390               <p>This entry is private to the framework.<wbr/> Fill in
5391 maxRegions to have this entry be automatically populated.<wbr/></p>
5392             </td>
5393           </tr>
5394
5395           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5396            <!-- end of entry -->
5397         
5398                 
5399           <tr class="entry" id="static_android.control.sceneModeOverrides">
5400             <td class="entry_name
5401              " rowspan="5">
5402               android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5403             </td>
5404             <td class="entry_type">
5405                 <span class="entry_type_name">byte</span>
5406                 <span class="entry_type_container">x</span>
5407
5408                 <span class="entry_type_array">
5409                   3 x length(availableSceneModes)
5410                 </span>
5411               <span class="entry_type_visibility"> [system]</span>
5412
5413
5414               <span class="entry_type_hwlevel">[limited] </span>
5415
5416
5417
5418
5419             </td> <!-- entry_type -->
5420
5421             <td class="entry_description">
5422               <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5423 settings to use with each available scene mode.<wbr/></p>
5424             </td>
5425
5426             <td class="entry_units">
5427             </td>
5428
5429             <td class="entry_range">
5430               <p>For each available scene mode,<wbr/> the list must contain three
5431 entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5432 <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
5433 by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5434 where aeMode has the lowest index position.<wbr/></p>
5435             </td>
5436
5437             <td class="entry_hal_version">
5438               <p>3.<wbr/>2</p>
5439             </td>
5440
5441             <td class="entry_tags">
5442               <ul class="entry_tags">
5443                   <li><a href="#tag_BC">BC</a></li>
5444               </ul>
5445             </td>
5446
5447           </tr>
5448           <tr class="entries_header">
5449             <th class="th_details" colspan="6">Details</th>
5450           </tr>
5451           <tr class="entry_cont">
5452             <td class="entry_details" colspan="6">
5453               <p>When a scene mode is enabled,<wbr/> the camera device is expected
5454 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/>
5455 and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5456 that scene mode.<wbr/></p>
5457 <p>The order of this list matches that of availableSceneModes,<wbr/>
5458 with 3 entries for each mode.<wbr/>  The overrides listed
5459 for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5460 since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5461 <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
5462 used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5463 is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5464 FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5465 <p>For example,<wbr/> if availableSceneModes contains
5466 <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
5467 expects sceneModeOverrides to have 9 entries formatted like:
5468 <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5469 ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5470             </td>
5471           </tr>
5472
5473           <tr class="entries_header">
5474             <th class="th_details" colspan="6">HAL Implementation Details</th>
5475           </tr>
5476           <tr class="entry_cont">
5477             <td class="entry_details" colspan="6">
5478               <p>To maintain backward compatibility,<wbr/> this list will be made available
5479 in the static metadata of the camera service.<wbr/>  The camera service will
5480 use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5481 <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
5482 mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5483             </td>
5484           </tr>
5485
5486           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5487            <!-- end of entry -->
5488         
5489                 
5490           <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5491             <td class="entry_name
5492              " rowspan="5">
5493               android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5494             </td>
5495             <td class="entry_type">
5496                 <span class="entry_type_name">int32</span>
5497                 <span class="entry_type_container">x</span>
5498
5499                 <span class="entry_type_array">
5500                   5 x n
5501                 </span>
5502               <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5503
5504
5505               <span class="entry_type_hwlevel">[limited] </span>
5506
5507
5508
5509
5510             </td> <!-- entry_type -->
5511
5512             <td class="entry_description">
5513               <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5514 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>
5515             </td>
5516
5517             <td class="entry_units">
5518             </td>
5519
5520             <td class="entry_range">
5521               <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
5522             </td>
5523
5524             <td class="entry_hal_version">
5525               <p>3.<wbr/>2</p>
5526             </td>
5527
5528             <td class="entry_tags">
5529               <ul class="entry_tags">
5530                   <li><a href="#tag_V1">V1</a></li>
5531               </ul>
5532             </td>
5533
5534           </tr>
5535           <tr class="entries_header">
5536             <th class="th_details" colspan="6">Details</th>
5537           </tr>
5538           <tr class="entry_cont">
5539             <td class="entry_details" colspan="6">
5540               <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/>
5541 this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5542 configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5543 reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5544 for processed non-stalling formats.<wbr/></p>
5545 <p>For the high speed video use case,<wbr/> the application must
5546 select the video size and fps range from this metadata to configure the recording and
5547 preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5548 to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5549 configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5550 by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5551 recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5552 must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5553 must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5554 <p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5555 <p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5556 to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5557 multiple frames together and send to camera device for processing where the request
5558 controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5559 the max possible number of frames the camera device will group together for this high
5560 speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5561 recording request list by
5562 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5563 The max batch size for each configuration will satisfy below conditions:</p>
5564 <ul>
5565 <li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5566 if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5567 <li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5568 the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5569 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>
5570 <li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5571 </ul>
5572 <p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5573 in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5574 <p>This fps ranges in this configuration list can only be used to create requests
5575 that are submitted to a high speed camera capture session created by
5576 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5577 The fps ranges reported in this metadata must not be used to setup capture requests for
5578 normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5579             </td>
5580           </tr>
5581
5582           <tr class="entries_header">
5583             <th class="th_details" colspan="6">HAL Implementation Details</th>
5584           </tr>
5585           <tr class="entry_cont">
5586             <td class="entry_details" colspan="6">
5587               <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5588 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5589 Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5590 of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5591 <p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5592 sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5593 usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5594 stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5595 the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5596 the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5597 For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5598 [30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5599 do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5600 recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5601 values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5602 values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5603 switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5604             </td>
5605           </tr>
5606
5607           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5608            <!-- end of entry -->
5609         
5610                 
5611           <tr class="entry" id="static_android.control.aeLockAvailable">
5612             <td class="entry_name
5613              " rowspan="3">
5614               android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5615             </td>
5616             <td class="entry_type">
5617                 <span class="entry_type_name entry_type_name_enum">byte</span>
5618
5619               <span class="entry_type_visibility"> [public as boolean]</span>
5620
5621
5622               <span class="entry_type_hwlevel">[legacy] </span>
5623
5624
5625
5626                 <ul class="entry_type_enum">
5627                   <li>
5628                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
5629                   </li>
5630                   <li>
5631                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
5632                   </li>
5633                 </ul>
5634
5635             </td> <!-- entry_type -->
5636
5637             <td class="entry_description">
5638               <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5639             </td>
5640
5641             <td class="entry_units">
5642             </td>
5643
5644             <td class="entry_range">
5645             </td>
5646
5647             <td class="entry_hal_version">
5648               <p>3.<wbr/>2</p>
5649             </td>
5650
5651             <td class="entry_tags">
5652               <ul class="entry_tags">
5653                   <li><a href="#tag_BC">BC</a></li>
5654               </ul>
5655             </td>
5656
5657           </tr>
5658           <tr class="entries_header">
5659             <th class="th_details" colspan="6">Details</th>
5660           </tr>
5661           <tr class="entry_cont">
5662             <td class="entry_details" colspan="6">
5663               <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5664 list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5665             </td>
5666           </tr>
5667
5668
5669           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5670            <!-- end of entry -->
5671         
5672                 
5673           <tr class="entry" id="static_android.control.awbLockAvailable">
5674             <td class="entry_name
5675              " rowspan="3">
5676               android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5677             </td>
5678             <td class="entry_type">
5679                 <span class="entry_type_name entry_type_name_enum">byte</span>
5680
5681               <span class="entry_type_visibility"> [public as boolean]</span>
5682
5683
5684               <span class="entry_type_hwlevel">[legacy] </span>
5685
5686
5687
5688                 <ul class="entry_type_enum">
5689                   <li>
5690                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
5691                   </li>
5692                   <li>
5693                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
5694                   </li>
5695                 </ul>
5696
5697             </td> <!-- entry_type -->
5698
5699             <td class="entry_description">
5700               <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5701             </td>
5702
5703             <td class="entry_units">
5704             </td>
5705
5706             <td class="entry_range">
5707             </td>
5708
5709             <td class="entry_hal_version">
5710               <p>3.<wbr/>2</p>
5711             </td>
5712
5713             <td class="entry_tags">
5714               <ul class="entry_tags">
5715                   <li><a href="#tag_BC">BC</a></li>
5716               </ul>
5717             </td>
5718
5719           </tr>
5720           <tr class="entries_header">
5721             <th class="th_details" colspan="6">Details</th>
5722           </tr>
5723           <tr class="entry_cont">
5724             <td class="entry_details" colspan="6">
5725               <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5726 always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5727             </td>
5728           </tr>
5729
5730
5731           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5732            <!-- end of entry -->
5733         
5734                 
5735           <tr class="entry" id="static_android.control.availableModes">
5736             <td class="entry_name
5737              " rowspan="3">
5738               android.<wbr/>control.<wbr/>available<wbr/>Modes
5739             </td>
5740             <td class="entry_type">
5741                 <span class="entry_type_name">byte</span>
5742                 <span class="entry_type_container">x</span>
5743
5744                 <span class="entry_type_array">
5745                   n
5746                 </span>
5747               <span class="entry_type_visibility"> [public as enumList]</span>
5748
5749
5750               <span class="entry_type_hwlevel">[legacy] </span>
5751
5752
5753                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5754
5755
5756             </td> <!-- entry_type -->
5757
5758             <td class="entry_description">
5759               <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5760 device.<wbr/></p>
5761             </td>
5762
5763             <td class="entry_units">
5764             </td>
5765
5766             <td class="entry_range">
5767               <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5768             </td>
5769
5770             <td class="entry_hal_version">
5771               <p>3.<wbr/>2</p>
5772             </td>
5773
5774             <td class="entry_tags">
5775             </td>
5776
5777           </tr>
5778           <tr class="entries_header">
5779             <th class="th_details" colspan="6">Details</th>
5780           </tr>
5781           <tr class="entry_cont">
5782             <td class="entry_details" colspan="6">
5783               <p>This list contains control modes that can be set for the camera device.<wbr/>
5784 LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5785 devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5786             </td>
5787           </tr>
5788
5789
5790           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5791            <!-- end of entry -->
5792         
5793                 
5794           <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
5795             <td class="entry_name
5796              " rowspan="5">
5797               android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
5798             </td>
5799             <td class="entry_type">
5800                 <span class="entry_type_name">int32</span>
5801                 <span class="entry_type_container">x</span>
5802
5803                 <span class="entry_type_array">
5804                   2
5805                 </span>
5806               <span class="entry_type_visibility"> [public as rangeInt]</span>
5807
5808
5809
5810
5811                 <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div>
5812
5813
5814             </td> <!-- entry_type -->
5815
5816             <td class="entry_description">
5817               <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
5818 by this camera device.<wbr/></p>
5819             </td>
5820
5821             <td class="entry_units">
5822               ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
5823             </td>
5824
5825             <td class="entry_range">
5826             </td>
5827
5828             <td class="entry_hal_version">
5829               <p>3.<wbr/>2</p>
5830             </td>
5831
5832             <td class="entry_tags">
5833             </td>
5834
5835           </tr>
5836           <tr class="entries_header">
5837             <th class="th_details" colspan="6">Details</th>
5838           </tr>
5839           <tr class="entry_cont">
5840             <td class="entry_details" colspan="6">
5841               <p>Devices support post RAW sensitivity boost  will advertise
5842 <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling
5843 post RAW sensitivity boost.<wbr/></p>
5844 <p>This key will be <code>null</code> for devices that do not support any RAW format
5845 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
5846 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
5847 list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
5848             </td>
5849           </tr>
5850
5851           <tr class="entries_header">
5852             <th class="th_details" colspan="6">HAL Implementation Details</th>
5853           </tr>
5854           <tr class="entry_cont">
5855             <td class="entry_details" colspan="6">
5856               <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera
5857 framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output
5858 formats.<wbr/>  All legacy HAL3.<wbr/>4 and above devices should list this key if device supports
5859 any of RAW output formats.<wbr/></p>
5860             </td>
5861           </tr>
5862
5863           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5864            <!-- end of entry -->
5865         
5866         
5867
5868       <!-- end of kind -->
5869       </tbody>
5870       <tr><td colspan="7" class="kind">dynamic</td></tr>
5871
5872       <thead class="entries_header">
5873         <tr>
5874           <th class="th_name">Property Name</th>
5875           <th class="th_type">Type</th>
5876           <th class="th_description">Description</th>
5877           <th class="th_units">Units</th>
5878           <th class="th_range">Range</th>
5879           <th class="th_hal_version">Initial HIDL HAL version</th>
5880           <th class="th_tags">Tags</th>
5881         </tr>
5882       </thead>
5883
5884       <tbody>
5885
5886         
5887
5888         
5889
5890         
5891
5892         
5893
5894                 
5895           <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5896             <td class="entry_name
5897                 entry_name_deprecated
5898              " rowspan="3">
5899               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5900             </td>
5901             <td class="entry_type">
5902                 <span class="entry_type_name">int32</span>
5903
5904               <span class="entry_type_visibility"> [system]</span>
5905
5906
5907
5908               <span class="entry_type_deprecated">[deprecated] </span>
5909
5910
5911
5912             </td> <!-- entry_type -->
5913
5914             <td class="entry_description">
5915               <p>The ID sent with the latest
5916 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
5917             </td>
5918
5919             <td class="entry_units">
5920             </td>
5921
5922             <td class="entry_range">
5923               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5924             </td>
5925
5926             <td class="entry_hal_version">
5927               <p>3.<wbr/>2</p>
5928             </td>
5929
5930             <td class="entry_tags">
5931             </td>
5932
5933           </tr>
5934           <tr class="entries_header">
5935             <th class="th_details" colspan="6">Details</th>
5936           </tr>
5937           <tr class="entry_cont">
5938             <td class="entry_details" colspan="6">
5939               <p>Must be 0 if no
5940 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5941 by HAL.<wbr/> Always updated even if AE algorithm ignores the
5942 trigger</p>
5943             </td>
5944           </tr>
5945
5946
5947           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5948            <!-- end of entry -->
5949         
5950                 
5951           <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
5952             <td class="entry_name
5953              " rowspan="5">
5954               android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
5955             </td>
5956             <td class="entry_type">
5957                 <span class="entry_type_name entry_type_name_enum">byte</span>
5958
5959               <span class="entry_type_visibility"> [public]</span>
5960
5961
5962               <span class="entry_type_hwlevel">[legacy] </span>
5963
5964
5965
5966                 <ul class="entry_type_enum">
5967                   <li>
5968                     <span class="entry_type_enum_name">OFF (v3.2)</span>
5969                     <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
5970 avoid banding problems.<wbr/></p></span>
5971                   </li>
5972                   <li>
5973                     <span class="entry_type_enum_name">50HZ (v3.2)</span>
5974                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5975 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
5976                   </li>
5977                   <li>
5978                     <span class="entry_type_enum_name">60HZ (v3.2)</span>
5979                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5980 avoid banding problems with 60Hz illumination
5981 sources.<wbr/></p></span>
5982                   </li>
5983                   <li>
5984                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
5985                     <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
5986 antibanding routine to the current illumination
5987 condition.<wbr/> This is the default mode if AUTO is
5988 available on given camera device.<wbr/></p></span>
5989                   </li>
5990                 </ul>
5991
5992             </td> <!-- entry_type -->
5993
5994             <td class="entry_description">
5995               <p>The desired setting for the camera device's auto-exposure
5996 algorithm's antibanding compensation.<wbr/></p>
5997             </td>
5998
5999             <td class="entry_units">
6000             </td>
6001
6002             <td class="entry_range">
6003               <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
6004             </td>
6005
6006             <td class="entry_hal_version">
6007               <p>3.<wbr/>2</p>
6008             </td>
6009
6010             <td class="entry_tags">
6011               <ul class="entry_tags">
6012                   <li><a href="#tag_BC">BC</a></li>
6013               </ul>
6014             </td>
6015
6016           </tr>
6017           <tr class="entries_header">
6018             <th class="th_details" colspan="6">Details</th>
6019           </tr>
6020           <tr class="entry_cont">
6021             <td class="entry_details" colspan="6">
6022               <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
6023 lights,<wbr/> flicker at the rate of the power supply frequency
6024 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
6025 typically not noticeable to a person,<wbr/> it can be visible to
6026 a camera device.<wbr/> If a camera sets its exposure time to the
6027 wrong value,<wbr/> the flicker may become visible in the
6028 viewfinder as flicker or in a final captured image,<wbr/> as a
6029 set of variable-brightness bands across the image.<wbr/></p>
6030 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
6031 include antibanding routines that ensure that the chosen
6032 exposure value will not cause such banding.<wbr/> The choice of
6033 exposure time depends on the rate of flicker,<wbr/> which the
6034 camera device can detect automatically,<wbr/> or the expected
6035 rate can be selected by the application using this
6036 control.<wbr/></p>
6037 <p>A given camera device may not support all of the possible
6038 options for the antibanding mode.<wbr/> The
6039 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
6040 the available modes for a given camera device.<wbr/></p>
6041 <p>AUTO mode is the default if it is available on given
6042 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
6043 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
6044 and 60HZ will be available.<wbr/></p>
6045 <p>If manual exposure control is enabled (by setting
6046 <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/>
6047 then this setting has no effect,<wbr/> and the application must
6048 ensure it selects exposure times that do not cause banding
6049 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
6050 the application in this.<wbr/></p>
6051             </td>
6052           </tr>
6053
6054           <tr class="entries_header">
6055             <th class="th_details" colspan="6">HAL Implementation Details</th>
6056           </tr>
6057           <tr class="entry_cont">
6058             <td class="entry_details" colspan="6">
6059               <p>For all capture request templates,<wbr/> this field must be set
6060 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
6061 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
6062 60HZ must be available.<wbr/></p>
6063 <p>If manual exposure control is enabled (by setting
6064 <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/>
6065 then the exposure values provided by the application must not be
6066 adjusted for antibanding.<wbr/></p>
6067             </td>
6068           </tr>
6069
6070           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6071            <!-- end of entry -->
6072         
6073                 
6074           <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
6075             <td class="entry_name
6076              " rowspan="3">
6077               android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
6078             </td>
6079             <td class="entry_type">
6080                 <span class="entry_type_name">int32</span>
6081
6082               <span class="entry_type_visibility"> [public]</span>
6083
6084
6085               <span class="entry_type_hwlevel">[legacy] </span>
6086
6087
6088
6089
6090             </td> <!-- entry_type -->
6091
6092             <td class="entry_description">
6093               <p>Adjustment to auto-exposure (AE) target image
6094 brightness.<wbr/></p>
6095             </td>
6096
6097             <td class="entry_units">
6098               Compensation steps
6099             </td>
6100
6101             <td class="entry_range">
6102               <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
6103             </td>
6104
6105             <td class="entry_hal_version">
6106               <p>3.<wbr/>2</p>
6107             </td>
6108
6109             <td class="entry_tags">
6110               <ul class="entry_tags">
6111                   <li><a href="#tag_BC">BC</a></li>
6112               </ul>
6113             </td>
6114
6115           </tr>
6116           <tr class="entries_header">
6117             <th class="th_details" colspan="6">Details</th>
6118           </tr>
6119           <tr class="entry_cont">
6120             <td class="entry_details" colspan="6">
6121               <p>The adjustment is measured as a count of steps,<wbr/> with the
6122 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
6123 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
6124 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
6125 will mean an exposure compensation of +2 EV; -3 will mean an
6126 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
6127 of image brightness.<wbr/> Note that this control will only be
6128 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
6129 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
6130 <p>In the event of exposure compensation value being changed,<wbr/> camera device
6131 may take several frames to reach the newly requested exposure target.<wbr/>
6132 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
6133 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
6134 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
6135 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
6136             </td>
6137           </tr>
6138
6139
6140           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6141            <!-- end of entry -->
6142         
6143                 
6144           <tr class="entry" id="dynamic_android.control.aeLock">
6145             <td class="entry_name
6146              " rowspan="3">
6147               android.<wbr/>control.<wbr/>ae<wbr/>Lock
6148             </td>
6149             <td class="entry_type">
6150                 <span class="entry_type_name entry_type_name_enum">byte</span>
6151
6152               <span class="entry_type_visibility"> [public as boolean]</span>
6153
6154
6155               <span class="entry_type_hwlevel">[legacy] </span>
6156
6157
6158
6159                 <ul class="entry_type_enum">
6160                   <li>
6161                     <span class="entry_type_enum_name">OFF (v3.2)</span>
6162                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
6163 is free to update its parameters.<wbr/></p></span>
6164                   </li>
6165                   <li>
6166                     <span class="entry_type_enum_name">ON (v3.2)</span>
6167                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
6168 must not update the exposure and sensitivity parameters
6169 while the lock is active.<wbr/></p>
6170 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
6171 will still take effect while auto-exposure is locked.<wbr/></p>
6172 <p>Some rare LEGACY devices may not support
6173 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
6174                   </li>
6175                 </ul>
6176
6177             </td> <!-- entry_type -->
6178
6179             <td class="entry_description">
6180               <p>Whether auto-exposure (AE) is currently locked to its latest
6181 calculated values.<wbr/></p>
6182             </td>
6183
6184             <td class="entry_units">
6185             </td>
6186
6187             <td class="entry_range">
6188             </td>
6189
6190             <td class="entry_hal_version">
6191               <p>3.<wbr/>2</p>
6192             </td>
6193
6194             <td class="entry_tags">
6195               <ul class="entry_tags">
6196                   <li><a href="#tag_BC">BC</a></li>
6197               </ul>
6198             </td>
6199
6200           </tr>
6201           <tr class="entries_header">
6202             <th class="th_details" colspan="6">Details</th>
6203           </tr>
6204           <tr class="entry_cont">
6205             <td class="entry_details" colspan="6">
6206               <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
6207 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
6208 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
6209 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
6210 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
6211 <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
6212 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
6213 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
6214 when AE is already locked,<wbr/> the camera device will not change the exposure time
6215 (<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>)
6216 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
6217 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
6218 <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/>
6219 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
6220 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
6221 the AE if AE is locked by the camera device internally during precapture metering
6222 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
6223 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
6224 will never succeed in a sequence of preview requests where AE lock is always set
6225 to <code>false</code>.<wbr/></p>
6226 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
6227 get locked do not necessarily correspond to the settings that were present in the
6228 latest capture result received from the camera device,<wbr/> since additional captures
6229 and AE updates may have occurred even before the result was sent out.<wbr/> If an
6230 application is switching between automatic and manual control and wishes to eliminate
6231 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
6232 <ol>
6233 <li>Starting in auto-AE mode:</li>
6234 <li>Lock AE</li>
6235 <li>Wait for the first result to be output that has the AE locked</li>
6236 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
6237 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
6238 </ol>
6239 <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>
6240             </td>
6241           </tr>
6242
6243
6244           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6245            <!-- end of entry -->
6246         
6247                 
6248           <tr class="entry" id="dynamic_android.control.aeMode">
6249             <td class="entry_name
6250              " rowspan="3">
6251               android.<wbr/>control.<wbr/>ae<wbr/>Mode
6252             </td>
6253             <td class="entry_type">
6254                 <span class="entry_type_name entry_type_name_enum">byte</span>
6255
6256               <span class="entry_type_visibility"> [public]</span>
6257
6258
6259               <span class="entry_type_hwlevel">[legacy] </span>
6260
6261
6262
6263                 <ul class="entry_type_enum">
6264                   <li>
6265                     <span class="entry_type_enum_name">OFF (v3.2)</span>
6266                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
6267 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6268 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
6269 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
6270 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
6271 a flash unit for this camera device.<wbr/></p>
6272 <p>Note that auto-white balance (AWB) and auto-focus (AF)
6273 behavior is device dependent when AE is in OFF mode.<wbr/>
6274 To have consistent behavior across different devices,<wbr/>
6275 it is recommended to either set AWB and AF to OFF mode
6276 or lock AWB and AF before setting AE to OFF.<wbr/>
6277 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/>
6278 <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>
6279 for more details.<wbr/></p>
6280 <p>LEGACY devices do not support the OFF mode and will
6281 override attempts to use this value to ON.<wbr/></p></span>
6282                   </li>
6283                   <li>
6284                     <span class="entry_type_enum_name">ON (v3.2)</span>
6285                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
6286 with no flash control.<wbr/></p>
6287 <p>The application's values for
6288 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6289 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6290 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
6291 application has control over the various
6292 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
6293                   </li>
6294                   <li>
6295                     <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
6296                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6297 the camera's flash unit,<wbr/> firing it in low-light
6298 conditions.<wbr/></p>
6299 <p>The flash may be fired during a precapture sequence
6300 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6301 may be fired for captures for which the
6302 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6303 STILL_<wbr/>CAPTURE</p></span>
6304                   </li>
6305                   <li>
6306                     <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
6307                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6308 the camera's flash unit,<wbr/> always firing it for still
6309 captures.<wbr/></p>
6310 <p>The flash may be fired during a precapture sequence
6311 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6312 will always be fired for captures for which the
6313 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6314 STILL_<wbr/>CAPTURE</p></span>
6315                   </li>
6316                   <li>
6317                     <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
6318                     <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
6319 reduction.<wbr/></p>
6320 <p>If deemed necessary by the camera device,<wbr/> a red eye
6321 reduction flash will fire during the precapture
6322 sequence.<wbr/></p></span>
6323                   </li>
6324                 </ul>
6325
6326             </td> <!-- entry_type -->
6327
6328             <td class="entry_description">
6329               <p>The desired mode for the camera device's
6330 auto-exposure routine.<wbr/></p>
6331             </td>
6332
6333             <td class="entry_units">
6334             </td>
6335
6336             <td class="entry_range">
6337               <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
6338             </td>
6339
6340             <td class="entry_hal_version">
6341               <p>3.<wbr/>2</p>
6342             </td>
6343
6344             <td class="entry_tags">
6345               <ul class="entry_tags">
6346                   <li><a href="#tag_BC">BC</a></li>
6347               </ul>
6348             </td>
6349
6350           </tr>
6351           <tr class="entries_header">
6352             <th class="th_details" colspan="6">Details</th>
6353           </tr>
6354           <tr class="entry_cont">
6355             <td class="entry_details" colspan="6">
6356               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
6357 AUTO.<wbr/></p>
6358 <p>When set to any of the ON modes,<wbr/> the camera device's
6359 auto-exposure routine is enabled,<wbr/> overriding the
6360 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
6361 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6362 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6363 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
6364 is selected,<wbr/> the camera device's flash unit controls are
6365 also overridden.<wbr/></p>
6366 <p>The FLASH modes are only available if the camera device
6367 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>
6368 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
6369 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
6370 <p>When set to any of the ON modes,<wbr/> the values chosen by the
6371 camera device auto-exposure routine for the overridden
6372 fields for a given capture will be available in its
6373 CaptureResult.<wbr/></p>
6374             </td>
6375           </tr>
6376
6377
6378           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6379            <!-- end of entry -->
6380         
6381                 
6382           <tr class="entry" id="dynamic_android.control.aeRegions">
6383             <td class="entry_name
6384              " rowspan="5">
6385               android.<wbr/>control.<wbr/>ae<wbr/>Regions
6386             </td>
6387             <td class="entry_type">
6388                 <span class="entry_type_name">int32</span>
6389                 <span class="entry_type_container">x</span>
6390
6391                 <span class="entry_type_array">
6392                   5 x area_count
6393                 </span>
6394               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6395
6396
6397
6398
6399
6400
6401             </td> <!-- entry_type -->
6402
6403             <td class="entry_description">
6404               <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
6405             </td>
6406
6407             <td class="entry_units">
6408               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6409             </td>
6410
6411             <td class="entry_range">
6412               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6413 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6414             </td>
6415
6416             <td class="entry_hal_version">
6417               <p>3.<wbr/>2</p>
6418             </td>
6419
6420             <td class="entry_tags">
6421               <ul class="entry_tags">
6422                   <li><a href="#tag_BC">BC</a></li>
6423               </ul>
6424             </td>
6425
6426           </tr>
6427           <tr class="entries_header">
6428             <th class="th_details" colspan="6">Details</th>
6429           </tr>
6430           <tr class="entry_cont">
6431             <td class="entry_details" colspan="6">
6432               <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
6433 Otherwise will always be present.<wbr/></p>
6434 <p>The maximum number of regions supported by the device is determined by the value
6435 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
6436 <p>The coordinate system is based on the active pixel array,<wbr/>
6437 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6438 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6439 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6440 bottom-right pixel in the active pixel array.<wbr/></p>
6441 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6442 for every pixel in the area.<wbr/> This means that a large metering area
6443 with the same weight as a smaller area will have more effect in
6444 the metering result.<wbr/> Metering areas can partially overlap and the
6445 camera device will add the weights in the overlap region.<wbr/></p>
6446 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
6447 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
6448 weight is ignored.<wbr/></p>
6449 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6450 camera device.<wbr/></p>
6451 <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
6452 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6453 region and output only the intersection rectangle as the metering region in the result
6454 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
6455 not reported in the result metadata.<wbr/></p>
6456             </td>
6457           </tr>
6458
6459           <tr class="entries_header">
6460             <th class="th_details" colspan="6">HAL Implementation Details</th>
6461           </tr>
6462           <tr class="entry_cont">
6463             <td class="entry_details" colspan="6">
6464               <p>The HAL level representation of MeteringRectangle[] is a
6465 int[5 * area_<wbr/>count].<wbr/>
6466 Every five elements represent a metering region of
6467 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6468 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6469 exclusive on xmax and ymax.<wbr/></p>
6470             </td>
6471           </tr>
6472
6473           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6474            <!-- end of entry -->
6475         
6476                 
6477           <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
6478             <td class="entry_name
6479              " rowspan="3">
6480               android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
6481             </td>
6482             <td class="entry_type">
6483                 <span class="entry_type_name">int32</span>
6484                 <span class="entry_type_container">x</span>
6485
6486                 <span class="entry_type_array">
6487                   2
6488                 </span>
6489               <span class="entry_type_visibility"> [public as rangeInt]</span>
6490
6491
6492               <span class="entry_type_hwlevel">[legacy] </span>
6493
6494
6495
6496
6497             </td> <!-- entry_type -->
6498
6499             <td class="entry_description">
6500               <p>Range over which the auto-exposure routine can
6501 adjust the capture frame rate to maintain good
6502 exposure.<wbr/></p>
6503             </td>
6504
6505             <td class="entry_units">
6506               Frames per second (FPS)
6507             </td>
6508
6509             <td class="entry_range">
6510               <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>
6511             </td>
6512
6513             <td class="entry_hal_version">
6514               <p>3.<wbr/>2</p>
6515             </td>
6516
6517             <td class="entry_tags">
6518               <ul class="entry_tags">
6519                   <li><a href="#tag_BC">BC</a></li>
6520               </ul>
6521             </td>
6522
6523           </tr>
6524           <tr class="entries_header">
6525             <th class="th_details" colspan="6">Details</th>
6526           </tr>
6527           <tr class="entry_cont">
6528             <td class="entry_details" colspan="6">
6529               <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6530 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6531 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6532             </td>
6533           </tr>
6534
6535
6536           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6537            <!-- end of entry -->
6538         
6539                 
6540           <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6541             <td class="entry_name
6542              " rowspan="5">
6543               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6544             </td>
6545             <td class="entry_type">
6546                 <span class="entry_type_name entry_type_name_enum">byte</span>
6547
6548               <span class="entry_type_visibility"> [public]</span>
6549
6550
6551               <span class="entry_type_hwlevel">[limited] </span>
6552
6553
6554
6555                 <ul class="entry_type_enum">
6556                   <li>
6557                     <span class="entry_type_enum_name">IDLE (v3.2)</span>
6558                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6559                   </li>
6560                   <li>
6561                     <span class="entry_type_enum_name">START (v3.2)</span>
6562                     <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6563 by the camera device.<wbr/></p>
6564 <p>The exact effect of the precapture trigger depends on
6565 the current AE mode and state.<wbr/></p></span>
6566                   </li>
6567                   <li>
6568                     <span class="entry_type_enum_name">CANCEL (v3.2)</span>
6569                     <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6570 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6571 initial state.<wbr/></p></span>
6572                   </li>
6573                 </ul>
6574
6575             </td> <!-- entry_type -->
6576
6577             <td class="entry_description">
6578               <p>Whether the camera device will trigger a precapture
6579 metering sequence when it processes this request.<wbr/></p>
6580             </td>
6581
6582             <td class="entry_units">
6583             </td>
6584
6585             <td class="entry_range">
6586             </td>
6587
6588             <td class="entry_hal_version">
6589               <p>3.<wbr/>2</p>
6590             </td>
6591
6592             <td class="entry_tags">
6593               <ul class="entry_tags">
6594                   <li><a href="#tag_BC">BC</a></li>
6595               </ul>
6596             </td>
6597
6598           </tr>
6599           <tr class="entries_header">
6600             <th class="th_details" colspan="6">Details</th>
6601           </tr>
6602           <tr class="entry_cont">
6603             <td class="entry_details" colspan="6">
6604               <p>This entry is normally set to IDLE,<wbr/> or is not
6605 included at all in the request settings.<wbr/> When included and
6606 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6607 precapture metering sequence.<wbr/></p>
6608 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
6609 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6610 If a precapture metering sequence is already completed,<wbr/> and the camera
6611 device has implicitly locked the AE for subsequent still capture,<wbr/> the
6612 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6613 <p>The precapture sequence should be triggered before starting a
6614 high-quality still capture for final metering decisions to
6615 be made,<wbr/> and for firing pre-capture flash pulses to estimate
6616 scene brightness and required final capture flash power,<wbr/> when
6617 the flash is enabled.<wbr/></p>
6618 <p>Normally,<wbr/> this entry should be set to START for only a
6619 single request,<wbr/> and the application should wait until the
6620 sequence completes before starting a new one.<wbr/></p>
6621 <p>When a precapture metering sequence is finished,<wbr/> the camera device
6622 may lock the auto-exposure routine internally to be able to accurately expose the
6623 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6624 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6625 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6626 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
6627 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
6628 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6629 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6630 internally locked AE if the application doesn't submit a still capture request after
6631 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6632 be used in devices that have earlier API levels.<wbr/></p>
6633 <p>The exact effect of auto-exposure (AE) precapture trigger
6634 depends on the current AE mode and state; see
6635 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6636 details.<wbr/></p>
6637 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6638 capturing a high-resolution JPEG image will automatically trigger a
6639 precapture sequence before the high-resolution capture,<wbr/> including
6640 potentially firing a pre-capture flash.<wbr/></p>
6641 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6642 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6643 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6644 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6645 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6646 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
6647 example.<wbr/></p>
6648 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6649 the camera device will complete them in the optimal order for that device.<wbr/></p>
6650             </td>
6651           </tr>
6652
6653           <tr class="entries_header">
6654             <th class="th_details" colspan="6">HAL Implementation Details</th>
6655           </tr>
6656           <tr class="entry_cont">
6657             <td class="entry_details" colspan="6">
6658               <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6659 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
6660 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6661 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6662 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6663             </td>
6664           </tr>
6665
6666           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6667            <!-- end of entry -->
6668         
6669                 
6670           <tr class="entry" id="dynamic_android.control.aeState">
6671             <td class="entry_name
6672              " rowspan="3">
6673               android.<wbr/>control.<wbr/>ae<wbr/>State
6674             </td>
6675             <td class="entry_type">
6676                 <span class="entry_type_name entry_type_name_enum">byte</span>
6677
6678               <span class="entry_type_visibility"> [public]</span>
6679
6680
6681               <span class="entry_type_hwlevel">[limited] </span>
6682
6683
6684
6685                 <ul class="entry_type_enum">
6686                   <li>
6687                     <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
6688                     <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6689 <p>When a camera device is opened,<wbr/> it starts in
6690 this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6691 this state in capture result.<wbr/></p></span>
6692                   </li>
6693                   <li>
6694                     <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
6695                     <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6696 for the current scene.<wbr/></p>
6697 <p>This is a transient state,<wbr/> the camera device may skip
6698 reporting this state in capture result.<wbr/></p></span>
6699                   </li>
6700                   <li>
6701                     <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
6702                     <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6703 current scene.<wbr/></p></span>
6704                   </li>
6705                   <li>
6706                     <span class="entry_type_enum_name">LOCKED (v3.2)</span>
6707                     <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6708                   </li>
6709                   <li>
6710                     <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span>
6711                     <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6712 needs to be fired for good quality still
6713 capture.<wbr/></p></span>
6714                   </li>
6715                   <li>
6716                     <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span>
6717                     <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6718 and is currently executing it.<wbr/></p>
6719 <p>Precapture can be triggered through setting
6720 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6721 active and completed (if it causes camera device internal AE lock) precapture
6722 metering sequence can be canceled through setting
6723 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6724 <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6725 or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6726 state,<wbr/> the camera device may skip reporting this state in
6727 capture result.<wbr/></p></span>
6728                   </li>
6729                 </ul>
6730
6731             </td> <!-- entry_type -->
6732
6733             <td class="entry_description">
6734               <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6735             </td>
6736
6737             <td class="entry_units">
6738             </td>
6739
6740             <td class="entry_range">
6741             </td>
6742
6743             <td class="entry_hal_version">
6744               <p>3.<wbr/>2</p>
6745             </td>
6746
6747             <td class="entry_tags">
6748             </td>
6749
6750           </tr>
6751           <tr class="entries_header">
6752             <th class="th_details" colspan="6">Details</th>
6753           </tr>
6754           <tr class="entry_cont">
6755             <td class="entry_details" colspan="6">
6756               <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6757 resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6758 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
6759 the algorithm states to INACTIVE.<wbr/></p>
6760 <p>The camera device can do several state transitions between two results,<wbr/> if it is
6761 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6762 seen in a result.<wbr/></p>
6763 <p>The state in the result is the state for this image (in sync with this image): if
6764 AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6765 be good to use.<wbr/></p>
6766 <p>Below are state transition tables for different AE modes.<wbr/></p>
6767 <table>
6768 <thead>
6769 <tr>
6770 <th align="center">State</th>
6771 <th align="center">Transition Cause</th>
6772 <th align="center">New State</th>
6773 <th align="center">Notes</th>
6774 </tr>
6775 </thead>
6776 <tbody>
6777 <tr>
6778 <td align="center">INACTIVE</td>
6779 <td align="center"></td>
6780 <td align="center">INACTIVE</td>
6781 <td align="center">Camera device auto exposure algorithm is disabled</td>
6782 </tr>
6783 </tbody>
6784 </table>
6785 <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p>
6786 <table>
6787 <thead>
6788 <tr>
6789 <th align="center">State</th>
6790 <th align="center">Transition Cause</th>
6791 <th align="center">New State</th>
6792 <th align="center">Notes</th>
6793 </tr>
6794 </thead>
6795 <tbody>
6796 <tr>
6797 <td align="center">INACTIVE</td>
6798 <td align="center">Camera device initiates AE scan</td>
6799 <td align="center">SEARCHING</td>
6800 <td align="center">Values changing</td>
6801 </tr>
6802 <tr>
6803 <td align="center">INACTIVE</td>
6804 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6805 <td align="center">LOCKED</td>
6806 <td align="center">Values locked</td>
6807 </tr>
6808 <tr>
6809 <td align="center">SEARCHING</td>
6810 <td align="center">Camera device finishes AE scan</td>
6811 <td align="center">CONVERGED</td>
6812 <td align="center">Good values,<wbr/> not changing</td>
6813 </tr>
6814 <tr>
6815 <td align="center">SEARCHING</td>
6816 <td align="center">Camera device finishes AE scan</td>
6817 <td align="center">FLASH_<wbr/>REQUIRED</td>
6818 <td align="center">Converged but too dark w/<wbr/>o flash</td>
6819 </tr>
6820 <tr>
6821 <td align="center">SEARCHING</td>
6822 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6823 <td align="center">LOCKED</td>
6824 <td align="center">Values locked</td>
6825 </tr>
6826 <tr>
6827 <td align="center">CONVERGED</td>
6828 <td align="center">Camera device initiates AE scan</td>
6829 <td align="center">SEARCHING</td>
6830 <td align="center">Values changing</td>
6831 </tr>
6832 <tr>
6833 <td align="center">CONVERGED</td>
6834 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6835 <td align="center">LOCKED</td>
6836 <td align="center">Values locked</td>
6837 </tr>
6838 <tr>
6839 <td align="center">FLASH_<wbr/>REQUIRED</td>
6840 <td align="center">Camera device initiates AE scan</td>
6841 <td align="center">SEARCHING</td>
6842 <td align="center">Values changing</td>
6843 </tr>
6844 <tr>
6845 <td align="center">FLASH_<wbr/>REQUIRED</td>
6846 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6847 <td align="center">LOCKED</td>
6848 <td align="center">Values locked</td>
6849 </tr>
6850 <tr>
6851 <td align="center">LOCKED</td>
6852 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6853 <td align="center">SEARCHING</td>
6854 <td align="center">Values not good after unlock</td>
6855 </tr>
6856 <tr>
6857 <td align="center">LOCKED</td>
6858 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6859 <td align="center">CONVERGED</td>
6860 <td align="center">Values good after unlock</td>
6861 </tr>
6862 <tr>
6863 <td align="center">LOCKED</td>
6864 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6865 <td align="center">FLASH_<wbr/>REQUIRED</td>
6866 <td align="center">Exposure good,<wbr/> but too dark</td>
6867 </tr>
6868 <tr>
6869 <td align="center">PRECAPTURE</td>
6870 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6871 <td align="center">CONVERGED</td>
6872 <td align="center">Ready for high-quality capture</td>
6873 </tr>
6874 <tr>
6875 <td align="center">PRECAPTURE</td>
6876 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6877 <td align="center">LOCKED</td>
6878 <td align="center">Ready for high-quality capture</td>
6879 </tr>
6880 <tr>
6881 <td align="center">LOCKED</td>
6882 <td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6883 <td align="center">LOCKED</td>
6884 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6885 </tr>
6886 <tr>
6887 <td align="center">LOCKED</td>
6888 <td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6889 <td align="center">LOCKED</td>
6890 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6891 </tr>
6892 <tr>
6893 <td align="center">Any state (excluding LOCKED)</td>
6894 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6895 <td align="center">PRECAPTURE</td>
6896 <td align="center">Start AE precapture metering sequence</td>
6897 </tr>
6898 <tr>
6899 <td align="center">Any state (excluding LOCKED)</td>
6900 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
6901 <td align="center">INACTIVE</td>
6902 <td align="center">Currently active precapture metering sequence is canceled</td>
6903 </tr>
6904 </tbody>
6905 </table>
6906 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6907 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6908 can be skipped in that manner is called a transient state.<wbr/></p>
6909 <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
6910 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6911 transient states between two results.<wbr/> See below table for examples:</p>
6912 <table>
6913 <thead>
6914 <tr>
6915 <th align="center">State</th>
6916 <th align="center">Transition Cause</th>
6917 <th align="center">New State</th>
6918 <th align="center">Notes</th>
6919 </tr>
6920 </thead>
6921 <tbody>
6922 <tr>
6923 <td align="center">INACTIVE</td>
6924 <td align="center">Camera device finished AE scan</td>
6925 <td align="center">CONVERGED</td>
6926 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6927 </tr>
6928 <tr>
6929 <td align="center">Any state (excluding LOCKED)</td>
6930 <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>
6931 <td align="center">FLASH_<wbr/>REQUIRED</td>
6932 <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>
6933 </tr>
6934 <tr>
6935 <td align="center">Any state (excluding LOCKED)</td>
6936 <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>
6937 <td align="center">CONVERGED</td>
6938 <td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
6939 </tr>
6940 <tr>
6941 <td align="center">Any state (excluding LOCKED)</td>
6942 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6943 <td align="center">FLASH_<wbr/>REQUIRED</td>
6944 <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>
6945 </tr>
6946 <tr>
6947 <td align="center">Any state (excluding LOCKED)</td>
6948 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6949 <td align="center">CONVERGED</td>
6950 <td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
6951 </tr>
6952 <tr>
6953 <td align="center">CONVERGED</td>
6954 <td align="center">Camera device finished AE scan</td>
6955 <td align="center">FLASH_<wbr/>REQUIRED</td>
6956 <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>
6957 </tr>
6958 <tr>
6959 <td align="center">FLASH_<wbr/>REQUIRED</td>
6960 <td align="center">Camera device finished AE scan</td>
6961 <td align="center">CONVERGED</td>
6962 <td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
6963 </tr>
6964 </tbody>
6965 </table>
6966             </td>
6967           </tr>
6968
6969
6970           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6971            <!-- end of entry -->
6972         
6973                 
6974           <tr class="entry" id="dynamic_android.control.afMode">
6975             <td class="entry_name
6976              " rowspan="5">
6977               android.<wbr/>control.<wbr/>af<wbr/>Mode
6978             </td>
6979             <td class="entry_type">
6980                 <span class="entry_type_name entry_type_name_enum">byte</span>
6981
6982               <span class="entry_type_visibility"> [public]</span>
6983
6984
6985               <span class="entry_type_hwlevel">[legacy] </span>
6986
6987
6988
6989                 <ul class="entry_type_enum">
6990                   <li>
6991                     <span class="entry_type_enum_name">OFF (v3.2)</span>
6992                     <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
6993 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
6994 application.<wbr/></p></span>
6995                   </li>
6996                   <li>
6997                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
6998                     <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
6999 <p>In this mode,<wbr/> the lens does not move unless
7000 the autofocus trigger action is called.<wbr/> When that trigger
7001 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7002 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
7003 <p>Always supported if lens is not fixed focus.<wbr/></p>
7004 <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
7005 is fixed-focus.<wbr/></p>
7006 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
7007 and sets the AF state to INACTIVE.<wbr/></p></span>
7008                   </li>
7009                   <li>
7010                     <span class="entry_type_enum_name">MACRO (v3.2)</span>
7011                     <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
7012 <p>In this mode,<wbr/> the lens does not move unless the
7013 autofocus trigger action is called.<wbr/> When that trigger is
7014 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7015 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
7016 mode is optimized for focusing on objects very close to
7017 the camera.<wbr/></p>
7018 <p>When that trigger is activated,<wbr/> AF will transition to
7019 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
7020 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
7021 position to default,<wbr/> and sets the AF state to
7022 INACTIVE.<wbr/></p></span>
7023                   </li>
7024                   <li>
7025                     <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
7026                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7027 position continually to attempt to provide a
7028 constantly-in-focus image stream.<wbr/></p>
7029 <p>The focusing behavior should be suitable for good quality
7030 video recording; typically this means slower focus
7031 movement and no overshoots.<wbr/> When the AF trigger is not
7032 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
7033 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
7034 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
7035 the algorithm should immediately transition into
7036 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7037 lens position until a cancel AF trigger is received.<wbr/></p>
7038 <p>Once cancel is received,<wbr/> the algorithm should transition
7039 back to INACTIVE and resume passive scan.<wbr/> Note that this
7040 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
7041 ongoing PASSIVE_<wbr/>SCAN must immediately be
7042 canceled.<wbr/></p></span>
7043                   </li>
7044                   <li>
7045                     <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
7046                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7047 position continually to attempt to provide a
7048 constantly-in-focus image stream.<wbr/></p>
7049 <p>The focusing behavior should be suitable for still image
7050 capture; typically this means focusing as fast as
7051 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
7052 algorithm should start in INACTIVE state,<wbr/> and then
7053 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
7054 appropriate as it attempts to maintain focus.<wbr/> When the AF
7055 trigger is activated,<wbr/> the algorithm should finish its
7056 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
7057 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7058 lens position until a cancel AF trigger is received.<wbr/></p>
7059 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
7060 should transition back to INACTIVE and then act as if it
7061 has just been started.<wbr/></p></span>
7062                   </li>
7063                   <li>
7064                     <span class="entry_type_enum_name">EDOF (v3.2)</span>
7065                     <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
7066 <p>The camera device will produce images with an extended
7067 depth of field automatically; no special focusing
7068 operations need to be done before taking a picture.<wbr/></p>
7069 <p>AF triggers are ignored,<wbr/> and the AF state will always be
7070 INACTIVE.<wbr/></p></span>
7071                   </li>
7072                 </ul>
7073
7074             </td> <!-- entry_type -->
7075
7076             <td class="entry_description">
7077               <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
7078 mode it is set to.<wbr/></p>
7079             </td>
7080
7081             <td class="entry_units">
7082             </td>
7083
7084             <td class="entry_range">
7085               <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
7086             </td>
7087
7088             <td class="entry_hal_version">
7089               <p>3.<wbr/>2</p>
7090             </td>
7091
7092             <td class="entry_tags">
7093               <ul class="entry_tags">
7094                   <li><a href="#tag_BC">BC</a></li>
7095               </ul>
7096             </td>
7097
7098           </tr>
7099           <tr class="entries_header">
7100             <th class="th_details" colspan="6">Details</th>
7101           </tr>
7102           <tr class="entry_cont">
7103             <td class="entry_details" colspan="6">
7104               <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
7105 (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
7106 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
7107 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
7108 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>
7109 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
7110 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
7111 in result metadata.<wbr/></p>
7112             </td>
7113           </tr>
7114
7115           <tr class="entries_header">
7116             <th class="th_details" colspan="6">HAL Implementation Details</th>
7117           </tr>
7118           <tr class="entry_cont">
7119             <td class="entry_details" colspan="6">
7120               <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
7121 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
7122 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
7123 <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
7124 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
7125 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
7126 the same focal plane remains in focus.<wbr/></p>
7127 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
7128 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
7129 (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
7130 same lock behavior as above.<wbr/></p>
7131 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
7132 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/>
7133 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
7134 manual control.<wbr/></p>
7135 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
7136 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
7137 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
7138 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
7139 that will arise on camera modules with open-loop VCMs.<wbr/></p>
7140             </td>
7141           </tr>
7142
7143           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7144            <!-- end of entry -->
7145         
7146                 
7147           <tr class="entry" id="dynamic_android.control.afRegions">
7148             <td class="entry_name
7149              " rowspan="5">
7150               android.<wbr/>control.<wbr/>af<wbr/>Regions
7151             </td>
7152             <td class="entry_type">
7153                 <span class="entry_type_name">int32</span>
7154                 <span class="entry_type_container">x</span>
7155
7156                 <span class="entry_type_array">
7157                   5 x area_count
7158                 </span>
7159               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7160
7161
7162
7163
7164
7165
7166             </td> <!-- entry_type -->
7167
7168             <td class="entry_description">
7169               <p>List of metering areas to use for auto-focus.<wbr/></p>
7170             </td>
7171
7172             <td class="entry_units">
7173               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7174             </td>
7175
7176             <td class="entry_range">
7177               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7178 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7179             </td>
7180
7181             <td class="entry_hal_version">
7182               <p>3.<wbr/>2</p>
7183             </td>
7184
7185             <td class="entry_tags">
7186               <ul class="entry_tags">
7187                   <li><a href="#tag_BC">BC</a></li>
7188               </ul>
7189             </td>
7190
7191           </tr>
7192           <tr class="entries_header">
7193             <th class="th_details" colspan="6">Details</th>
7194           </tr>
7195           <tr class="entry_cont">
7196             <td class="entry_details" colspan="6">
7197               <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
7198 Otherwise will always be present.<wbr/></p>
7199 <p>The maximum number of focus areas supported by the device is determined by the value
7200 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
7201 <p>The coordinate system is based on the active pixel array,<wbr/>
7202 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7203 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7204 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7205 bottom-right pixel in the active pixel array.<wbr/></p>
7206 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
7207 for every pixel in the area.<wbr/> This means that a large metering area
7208 with the same weight as a smaller area will have more effect in
7209 the metering result.<wbr/> Metering areas can partially overlap and the
7210 camera device will add the weights in the overlap region.<wbr/></p>
7211 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
7212 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
7213 ignored.<wbr/></p>
7214 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7215 camera device.<wbr/></p>
7216 <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
7217 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7218 region and output only the intersection rectangle as the metering region in the result
7219 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
7220 not reported in the result metadata.<wbr/></p>
7221             </td>
7222           </tr>
7223
7224           <tr class="entries_header">
7225             <th class="th_details" colspan="6">HAL Implementation Details</th>
7226           </tr>
7227           <tr class="entry_cont">
7228             <td class="entry_details" colspan="6">
7229               <p>The HAL level representation of MeteringRectangle[] is a
7230 int[5 * area_<wbr/>count].<wbr/>
7231 Every five elements represent a metering region of
7232 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7233 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7234 exclusive on xmax and ymax.<wbr/></p>
7235             </td>
7236           </tr>
7237
7238           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7239            <!-- end of entry -->
7240         
7241                 
7242           <tr class="entry" id="dynamic_android.control.afTrigger">
7243             <td class="entry_name
7244              " rowspan="5">
7245               android.<wbr/>control.<wbr/>af<wbr/>Trigger
7246             </td>
7247             <td class="entry_type">
7248                 <span class="entry_type_name entry_type_name_enum">byte</span>
7249
7250               <span class="entry_type_visibility"> [public]</span>
7251
7252
7253               <span class="entry_type_hwlevel">[legacy] </span>
7254
7255
7256
7257                 <ul class="entry_type_enum">
7258                   <li>
7259                     <span class="entry_type_enum_name">IDLE (v3.2)</span>
7260                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
7261                   </li>
7262                   <li>
7263                     <span class="entry_type_enum_name">START (v3.2)</span>
7264                     <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
7265                   </li>
7266                   <li>
7267                     <span class="entry_type_enum_name">CANCEL (v3.2)</span>
7268                     <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
7269 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
7270                   </li>
7271                 </ul>
7272
7273             </td> <!-- entry_type -->
7274
7275             <td class="entry_description">
7276               <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
7277             </td>
7278
7279             <td class="entry_units">
7280             </td>
7281
7282             <td class="entry_range">
7283             </td>
7284
7285             <td class="entry_hal_version">
7286               <p>3.<wbr/>2</p>
7287             </td>
7288
7289             <td class="entry_tags">
7290               <ul class="entry_tags">
7291                   <li><a href="#tag_BC">BC</a></li>
7292               </ul>
7293             </td>
7294
7295           </tr>
7296           <tr class="entries_header">
7297             <th class="th_details" colspan="6">Details</th>
7298           </tr>
7299           <tr class="entry_cont">
7300             <td class="entry_details" colspan="6">
7301               <p>This entry is normally set to IDLE,<wbr/> or is not
7302 included at all in the request settings.<wbr/></p>
7303 <p>When included and set to START,<wbr/> the camera device will trigger the
7304 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
7305 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
7306 and return to its initial AF state.<wbr/></p>
7307 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
7308 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
7309 START for multiple captures in a row means restarting the AF operation over
7310 and over again.<wbr/></p>
7311 <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>
7312 <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>
7313 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
7314 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
7315 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
7316 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
7317 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
7318             </td>
7319           </tr>
7320
7321           <tr class="entries_header">
7322             <th class="th_details" colspan="6">HAL Implementation Details</th>
7323           </tr>
7324           <tr class="entry_cont">
7325             <td class="entry_details" colspan="6">
7326               <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
7327 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
7328 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
7329 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
7330 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
7331             </td>
7332           </tr>
7333
7334           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7335            <!-- end of entry -->
7336         
7337                 
7338           <tr class="entry" id="dynamic_android.control.afState">
7339             <td class="entry_name
7340              " rowspan="3">
7341               android.<wbr/>control.<wbr/>af<wbr/>State
7342             </td>
7343             <td class="entry_type">
7344                 <span class="entry_type_name entry_type_name_enum">byte</span>
7345
7346               <span class="entry_type_visibility"> [public]</span>
7347
7348
7349               <span class="entry_type_hwlevel">[legacy] </span>
7350
7351
7352
7353                 <ul class="entry_type_enum">
7354                   <li>
7355                     <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
7356                     <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
7357 to scan.<wbr/></p>
7358 <p>When a camera device is opened,<wbr/> it starts in this
7359 state.<wbr/> This is a transient state,<wbr/> the camera device may
7360 skip reporting this state in capture
7361 result.<wbr/></p></span>
7362                   </li>
7363                   <li>
7364                     <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span>
7365                     <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
7366 camera device in a continuous autofocus mode.<wbr/></p>
7367 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7368 state,<wbr/> the camera device may skip reporting this state in
7369 capture result.<wbr/></p></span>
7370                   </li>
7371                   <li>
7372                     <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span>
7373                     <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
7374 restart scanning at any time.<wbr/></p>
7375 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7376 state,<wbr/> the camera device may skip reporting this state in
7377 capture result.<wbr/></p></span>
7378                   </li>
7379                   <li>
7380                     <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span>
7381                     <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
7382 triggered by AF trigger.<wbr/></p>
7383 <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
7384 state,<wbr/> the camera device may skip reporting this state in
7385 capture result.<wbr/></p></span>
7386                   </li>
7387                   <li>
7388                     <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span>
7389                     <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
7390 focus.<wbr/></p>
7391 <p>This state is reached only after an explicit START AF trigger has been
7392 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
7393 <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
7394 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>
7395                   </li>
7396                   <li>
7397                     <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span>
7398                     <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
7399 focus.<wbr/></p>
7400 <p>This state is reached only after an explicit START AF trigger has been
7401 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
7402 <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
7403 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>
7404                   </li>
7405                   <li>
7406                     <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span>
7407                     <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
7408 and may restart scanning at any time.<wbr/></p>
7409 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
7410 device may skip reporting this state in capture result.<wbr/></p>
7411 <p>LEGACY camera devices do not support this state.<wbr/> When a passive
7412 scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
7413                   </li>
7414                 </ul>
7415
7416             </td> <!-- entry_type -->
7417
7418             <td class="entry_description">
7419               <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
7420             </td>
7421
7422             <td class="entry_units">
7423             </td>
7424
7425             <td class="entry_range">
7426             </td>
7427
7428             <td class="entry_hal_version">
7429               <p>3.<wbr/>2</p>
7430             </td>
7431
7432             <td class="entry_tags">
7433             </td>
7434
7435           </tr>
7436           <tr class="entries_header">
7437             <th class="th_details" colspan="6">Details</th>
7438           </tr>
7439           <tr class="entry_cont">
7440             <td class="entry_details" colspan="6">
7441               <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
7442 resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7443 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
7444 the algorithm states to INACTIVE.<wbr/></p>
7445 <p>The camera device can do several state transitions between two results,<wbr/> if it is
7446 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
7447 seen in a result.<wbr/></p>
7448 <p>The state in the result is the state for this image (in sync with this image): if
7449 AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
7450 be sharp.<wbr/></p>
7451 <p>Below are state transition tables for different AF modes.<wbr/></p>
7452 <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>
7453 <table>
7454 <thead>
7455 <tr>
7456 <th align="center">State</th>
7457 <th align="center">Transition Cause</th>
7458 <th align="center">New State</th>
7459 <th align="center">Notes</th>
7460 </tr>
7461 </thead>
7462 <tbody>
7463 <tr>
7464 <td align="center">INACTIVE</td>
7465 <td align="center"></td>
7466 <td align="center">INACTIVE</td>
7467 <td align="center">Never changes</td>
7468 </tr>
7469 </tbody>
7470 </table>
7471 <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>
7472 <table>
7473 <thead>
7474 <tr>
7475 <th align="center">State</th>
7476 <th align="center">Transition Cause</th>
7477 <th align="center">New State</th>
7478 <th align="center">Notes</th>
7479 </tr>
7480 </thead>
7481 <tbody>
7482 <tr>
7483 <td align="center">INACTIVE</td>
7484 <td align="center">AF_<wbr/>TRIGGER</td>
7485 <td align="center">ACTIVE_<wbr/>SCAN</td>
7486 <td align="center">Start AF sweep,<wbr/> Lens now moving</td>
7487 </tr>
7488 <tr>
7489 <td align="center">ACTIVE_<wbr/>SCAN</td>
7490 <td align="center">AF sweep done</td>
7491 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7492 <td align="center">Focused,<wbr/> Lens now locked</td>
7493 </tr>
7494 <tr>
7495 <td align="center">ACTIVE_<wbr/>SCAN</td>
7496 <td align="center">AF sweep done</td>
7497 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7498 <td align="center">Not focused,<wbr/> Lens now locked</td>
7499 </tr>
7500 <tr>
7501 <td align="center">ACTIVE_<wbr/>SCAN</td>
7502 <td align="center">AF_<wbr/>CANCEL</td>
7503 <td align="center">INACTIVE</td>
7504 <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
7505 </tr>
7506 <tr>
7507 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7508 <td align="center">AF_<wbr/>CANCEL</td>
7509 <td align="center">INACTIVE</td>
7510 <td align="center">Cancel/<wbr/>reset AF</td>
7511 </tr>
7512 <tr>
7513 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7514 <td align="center">AF_<wbr/>TRIGGER</td>
7515 <td align="center">ACTIVE_<wbr/>SCAN</td>
7516 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7517 </tr>
7518 <tr>
7519 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7520 <td align="center">AF_<wbr/>CANCEL</td>
7521 <td align="center">INACTIVE</td>
7522 <td align="center">Cancel/<wbr/>reset AF</td>
7523 </tr>
7524 <tr>
7525 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7526 <td align="center">AF_<wbr/>TRIGGER</td>
7527 <td align="center">ACTIVE_<wbr/>SCAN</td>
7528 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7529 </tr>
7530 <tr>
7531 <td align="center">Any state</td>
7532 <td align="center">Mode change</td>
7533 <td align="center">INACTIVE</td>
7534 <td align="center"></td>
7535 </tr>
7536 </tbody>
7537 </table>
7538 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7539 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7540 can be skipped in that manner is called a transient state.<wbr/></p>
7541 <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7542 state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7543 one or more transient states between two results.<wbr/> See below table for examples:</p>
7544 <table>
7545 <thead>
7546 <tr>
7547 <th align="center">State</th>
7548 <th align="center">Transition Cause</th>
7549 <th align="center">New State</th>
7550 <th align="center">Notes</th>
7551 </tr>
7552 </thead>
7553 <tbody>
7554 <tr>
7555 <td align="center">INACTIVE</td>
7556 <td align="center">AF_<wbr/>TRIGGER</td>
7557 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7558 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7559 </tr>
7560 <tr>
7561 <td align="center">INACTIVE</td>
7562 <td align="center">AF_<wbr/>TRIGGER</td>
7563 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7564 <td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7565 </tr>
7566 <tr>
7567 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7568 <td align="center">AF_<wbr/>TRIGGER</td>
7569 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7570 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7571 </tr>
7572 <tr>
7573 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7574 <td align="center">AF_<wbr/>TRIGGER</td>
7575 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7576 <td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7577 </tr>
7578 </tbody>
7579 </table>
7580 <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>
7581 <table>
7582 <thead>
7583 <tr>
7584 <th align="center">State</th>
7585 <th align="center">Transition Cause</th>
7586 <th align="center">New State</th>
7587 <th align="center">Notes</th>
7588 </tr>
7589 </thead>
7590 <tbody>
7591 <tr>
7592 <td align="center">INACTIVE</td>
7593 <td align="center">Camera device initiates new scan</td>
7594 <td align="center">PASSIVE_<wbr/>SCAN</td>
7595 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7596 </tr>
7597 <tr>
7598 <td align="center">INACTIVE</td>
7599 <td align="center">AF_<wbr/>TRIGGER</td>
7600 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7601 <td align="center">AF state query,<wbr/> Lens now locked</td>
7602 </tr>
7603 <tr>
7604 <td align="center">PASSIVE_<wbr/>SCAN</td>
7605 <td align="center">Camera device completes current scan</td>
7606 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7607 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7608 </tr>
7609 <tr>
7610 <td align="center">PASSIVE_<wbr/>SCAN</td>
7611 <td align="center">Camera device fails current scan</td>
7612 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7613 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7614 </tr>
7615 <tr>
7616 <td align="center">PASSIVE_<wbr/>SCAN</td>
7617 <td align="center">AF_<wbr/>TRIGGER</td>
7618 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7619 <td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7620 </tr>
7621 <tr>
7622 <td align="center">PASSIVE_<wbr/>SCAN</td>
7623 <td align="center">AF_<wbr/>TRIGGER</td>
7624 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7625 <td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7626 </tr>
7627 <tr>
7628 <td align="center">PASSIVE_<wbr/>SCAN</td>
7629 <td align="center">AF_<wbr/>CANCEL</td>
7630 <td align="center">INACTIVE</td>
7631 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7632 </tr>
7633 <tr>
7634 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7635 <td align="center">Camera device initiates new scan</td>
7636 <td align="center">PASSIVE_<wbr/>SCAN</td>
7637 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7638 </tr>
7639 <tr>
7640 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7641 <td align="center">Camera device initiates new scan</td>
7642 <td align="center">PASSIVE_<wbr/>SCAN</td>
7643 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7644 </tr>
7645 <tr>
7646 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7647 <td align="center">AF_<wbr/>TRIGGER</td>
7648 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7649 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7650 </tr>
7651 <tr>
7652 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7653 <td align="center">AF_<wbr/>TRIGGER</td>
7654 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7655 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7656 </tr>
7657 <tr>
7658 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7659 <td align="center">AF_<wbr/>TRIGGER</td>
7660 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7661 <td align="center">No effect</td>
7662 </tr>
7663 <tr>
7664 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7665 <td align="center">AF_<wbr/>CANCEL</td>
7666 <td align="center">INACTIVE</td>
7667 <td align="center">Restart AF scan</td>
7668 </tr>
7669 <tr>
7670 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7671 <td align="center">AF_<wbr/>TRIGGER</td>
7672 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7673 <td align="center">No effect</td>
7674 </tr>
7675 <tr>
7676 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7677 <td align="center">AF_<wbr/>CANCEL</td>
7678 <td align="center">INACTIVE</td>
7679 <td align="center">Restart AF scan</td>
7680 </tr>
7681 </tbody>
7682 </table>
7683 <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>
7684 <table>
7685 <thead>
7686 <tr>
7687 <th align="center">State</th>
7688 <th align="center">Transition Cause</th>
7689 <th align="center">New State</th>
7690 <th align="center">Notes</th>
7691 </tr>
7692 </thead>
7693 <tbody>
7694 <tr>
7695 <td align="center">INACTIVE</td>
7696 <td align="center">Camera device initiates new scan</td>
7697 <td align="center">PASSIVE_<wbr/>SCAN</td>
7698 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7699 </tr>
7700 <tr>
7701 <td align="center">INACTIVE</td>
7702 <td align="center">AF_<wbr/>TRIGGER</td>
7703 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7704 <td align="center">AF state query,<wbr/> Lens now locked</td>
7705 </tr>
7706 <tr>
7707 <td align="center">PASSIVE_<wbr/>SCAN</td>
7708 <td align="center">Camera device completes current scan</td>
7709 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7710 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7711 </tr>
7712 <tr>
7713 <td align="center">PASSIVE_<wbr/>SCAN</td>
7714 <td align="center">Camera device fails current scan</td>
7715 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7716 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7717 </tr>
7718 <tr>
7719 <td align="center">PASSIVE_<wbr/>SCAN</td>
7720 <td align="center">AF_<wbr/>TRIGGER</td>
7721 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7722 <td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7723 </tr>
7724 <tr>
7725 <td align="center">PASSIVE_<wbr/>SCAN</td>
7726 <td align="center">AF_<wbr/>TRIGGER</td>
7727 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7728 <td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7729 </tr>
7730 <tr>
7731 <td align="center">PASSIVE_<wbr/>SCAN</td>
7732 <td align="center">AF_<wbr/>CANCEL</td>
7733 <td align="center">INACTIVE</td>
7734 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7735 </tr>
7736 <tr>
7737 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7738 <td align="center">Camera device initiates new scan</td>
7739 <td align="center">PASSIVE_<wbr/>SCAN</td>
7740 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7741 </tr>
7742 <tr>
7743 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7744 <td align="center">Camera device initiates new scan</td>
7745 <td align="center">PASSIVE_<wbr/>SCAN</td>
7746 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7747 </tr>
7748 <tr>
7749 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7750 <td align="center">AF_<wbr/>TRIGGER</td>
7751 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7752 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7753 </tr>
7754 <tr>
7755 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7756 <td align="center">AF_<wbr/>TRIGGER</td>
7757 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7758 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7759 </tr>
7760 <tr>
7761 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7762 <td align="center">AF_<wbr/>TRIGGER</td>
7763 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7764 <td align="center">No effect</td>
7765 </tr>
7766 <tr>
7767 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7768 <td align="center">AF_<wbr/>CANCEL</td>
7769 <td align="center">INACTIVE</td>
7770 <td align="center">Restart AF scan</td>
7771 </tr>
7772 <tr>
7773 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7774 <td align="center">AF_<wbr/>TRIGGER</td>
7775 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7776 <td align="center">No effect</td>
7777 </tr>
7778 <tr>
7779 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7780 <td align="center">AF_<wbr/>CANCEL</td>
7781 <td align="center">INACTIVE</td>
7782 <td align="center">Restart AF scan</td>
7783 </tr>
7784 </tbody>
7785 </table>
7786 <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7787 (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7788 camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7789 will be evaluated in the context of the new mode in the request.<wbr/>
7790 See below table for examples:</p>
7791 <table>
7792 <thead>
7793 <tr>
7794 <th align="center">State</th>
7795 <th align="center">Transition Cause</th>
7796 <th align="center">New State</th>
7797 <th align="center">Notes</th>
7798 </tr>
7799 </thead>
7800 <tbody>
7801 <tr>
7802 <td align="center">any state</td>
7803 <td align="center">CAF--&gt;AUTO mode switch</td>
7804 <td align="center">INACTIVE</td>
7805 <td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7806 </tr>
7807 <tr>
7808 <td align="center">any state</td>
7809 <td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
7810 <td align="center">trigger-reachable states from INACTIVE</td>
7811 <td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7812 </tr>
7813 <tr>
7814 <td align="center">any state</td>
7815 <td align="center">AUTO--&gt;CAF mode switch</td>
7816 <td align="center">passively reachable states from INACTIVE</td>
7817 <td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7818 </tr>
7819 </tbody>
7820 </table>
7821             </td>
7822           </tr>
7823
7824
7825           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7826            <!-- end of entry -->
7827         
7828                 
7829           <tr class="entry" id="dynamic_android.control.afTriggerId">
7830             <td class="entry_name
7831                 entry_name_deprecated
7832              " rowspan="3">
7833               android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7834             </td>
7835             <td class="entry_type">
7836                 <span class="entry_type_name">int32</span>
7837
7838               <span class="entry_type_visibility"> [system]</span>
7839
7840
7841
7842               <span class="entry_type_deprecated">[deprecated] </span>
7843
7844
7845
7846             </td> <!-- entry_type -->
7847
7848             <td class="entry_description">
7849               <p>The ID sent with the latest
7850 CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7851             </td>
7852
7853             <td class="entry_units">
7854             </td>
7855
7856             <td class="entry_range">
7857               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7858             </td>
7859
7860             <td class="entry_hal_version">
7861               <p>3.<wbr/>2</p>
7862             </td>
7863
7864             <td class="entry_tags">
7865             </td>
7866
7867           </tr>
7868           <tr class="entries_header">
7869             <th class="th_details" colspan="6">Details</th>
7870           </tr>
7871           <tr class="entry_cont">
7872             <td class="entry_details" colspan="6">
7873               <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7874 received yet by HAL.<wbr/> Always updated even if AF algorithm
7875 ignores the trigger</p>
7876             </td>
7877           </tr>
7878
7879
7880           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7881            <!-- end of entry -->
7882         
7883                 
7884           <tr class="entry" id="dynamic_android.control.awbLock">
7885             <td class="entry_name
7886              " rowspan="3">
7887               android.<wbr/>control.<wbr/>awb<wbr/>Lock
7888             </td>
7889             <td class="entry_type">
7890                 <span class="entry_type_name entry_type_name_enum">byte</span>
7891
7892               <span class="entry_type_visibility"> [public as boolean]</span>
7893
7894
7895               <span class="entry_type_hwlevel">[legacy] </span>
7896
7897
7898
7899                 <ul class="entry_type_enum">
7900                   <li>
7901                     <span class="entry_type_enum_name">OFF (v3.2)</span>
7902                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
7903 algorithm is free to update its parameters if in AUTO
7904 mode.<wbr/></p></span>
7905                   </li>
7906                   <li>
7907                     <span class="entry_type_enum_name">ON (v3.2)</span>
7908                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
7909 algorithm will not update its parameters while the lock
7910 is active.<wbr/></p></span>
7911                   </li>
7912                 </ul>
7913
7914             </td> <!-- entry_type -->
7915
7916             <td class="entry_description">
7917               <p>Whether auto-white balance (AWB) is currently locked to its
7918 latest calculated values.<wbr/></p>
7919             </td>
7920
7921             <td class="entry_units">
7922             </td>
7923
7924             <td class="entry_range">
7925             </td>
7926
7927             <td class="entry_hal_version">
7928               <p>3.<wbr/>2</p>
7929             </td>
7930
7931             <td class="entry_tags">
7932               <ul class="entry_tags">
7933                   <li><a href="#tag_BC">BC</a></li>
7934               </ul>
7935             </td>
7936
7937           </tr>
7938           <tr class="entries_header">
7939             <th class="th_details" colspan="6">Details</th>
7940           </tr>
7941           <tr class="entry_cont">
7942             <td class="entry_details" colspan="6">
7943               <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
7944 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
7945 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
7946 get locked do not necessarily correspond to the settings that were present in the
7947 latest capture result received from the camera device,<wbr/> since additional captures
7948 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
7949 application is switching between automatic and manual control and wishes to eliminate
7950 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
7951 <ol>
7952 <li>Starting in auto-AWB mode:</li>
7953 <li>Lock AWB</li>
7954 <li>Wait for the first result to be output that has the AWB locked</li>
7955 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
7956 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
7957 </ol>
7958 <p>Note that AWB lock is only meaningful when
7959 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
7960 AWB is already fixed to a specific setting.<wbr/></p>
7961 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
7962             </td>
7963           </tr>
7964
7965
7966           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7967            <!-- end of entry -->
7968         
7969                 
7970           <tr class="entry" id="dynamic_android.control.awbMode">
7971             <td class="entry_name
7972              " rowspan="3">
7973               android.<wbr/>control.<wbr/>awb<wbr/>Mode
7974             </td>
7975             <td class="entry_type">
7976                 <span class="entry_type_name entry_type_name_enum">byte</span>
7977
7978               <span class="entry_type_visibility"> [public]</span>
7979
7980
7981               <span class="entry_type_hwlevel">[legacy] </span>
7982
7983
7984
7985                 <ul class="entry_type_enum">
7986                   <li>
7987                     <span class="entry_type_enum_name">OFF (v3.2)</span>
7988                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
7989 <p>The application-selected color transform matrix
7990 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
7991 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
7992 device for manual white balance control.<wbr/></p></span>
7993                   </li>
7994                   <li>
7995                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
7996                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
7997 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7998 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7999 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8000 values used by the camera device for the transform and gains
8001 will be available in the capture result for this request.<wbr/></p></span>
8002                   </li>
8003                   <li>
8004                     <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
8005                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8006 the camera device uses incandescent light as the assumed scene
8007 illumination for white balance.<wbr/></p>
8008 <p>While the exact white balance transforms are up to the
8009 camera device,<wbr/> they will approximately match the CIE
8010 standard illuminant A.<wbr/></p>
8011 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8012 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8013 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8014 values used by the camera device for the transform and gains
8015 will be available in the capture result for this request.<wbr/></p></span>
8016                   </li>
8017                   <li>
8018                     <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
8019                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8020 the camera device uses fluorescent light as the assumed scene
8021 illumination for white balance.<wbr/></p>
8022 <p>While the exact white balance transforms are up to the
8023 camera device,<wbr/> they will approximately match the CIE
8024 standard illuminant F2.<wbr/></p>
8025 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8026 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8027 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8028 values used by the camera device for the transform and gains
8029 will be available in the capture result for this request.<wbr/></p></span>
8030                   </li>
8031                   <li>
8032                     <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
8033                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8034 the camera device uses warm fluorescent light as the assumed scene
8035 illumination for white balance.<wbr/></p>
8036 <p>While the exact white balance transforms are up to the
8037 camera device,<wbr/> they will approximately match the CIE
8038 standard illuminant F4.<wbr/></p>
8039 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8040 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8041 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8042 values used by the camera device for the transform and gains
8043 will be available in the capture result for this request.<wbr/></p></span>
8044                   </li>
8045                   <li>
8046                     <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
8047                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8048 the camera device uses daylight light as the assumed scene
8049 illumination for white balance.<wbr/></p>
8050 <p>While the exact white balance transforms are up to the
8051 camera device,<wbr/> they will approximately match the CIE
8052 standard illuminant D65.<wbr/></p>
8053 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8054 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8055 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8056 values used by the camera device for the transform and gains
8057 will be available in the capture result for this request.<wbr/></p></span>
8058                   </li>
8059                   <li>
8060                     <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
8061                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8062 the camera device uses cloudy daylight light as the assumed scene
8063 illumination for white balance.<wbr/></p>
8064 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8065 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8066 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8067 values used by the camera device for the transform and gains
8068 will be available in the capture result for this request.<wbr/></p></span>
8069                   </li>
8070                   <li>
8071                     <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
8072                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8073 the camera device uses twilight light as the assumed scene
8074 illumination for white balance.<wbr/></p>
8075 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8076 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8077 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8078 values used by the camera device for the transform and gains
8079 will be available in the capture result for this request.<wbr/></p></span>
8080                   </li>
8081                   <li>
8082                     <span class="entry_type_enum_name">SHADE (v3.2)</span>
8083                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8084 the camera device uses shade light as the assumed scene
8085 illumination for white balance.<wbr/></p>
8086 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8087 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8088 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8089 values used by the camera device for the transform and gains
8090 will be available in the capture result for this request.<wbr/></p></span>
8091                   </li>
8092                 </ul>
8093
8094             </td> <!-- entry_type -->
8095
8096             <td class="entry_description">
8097               <p>Whether auto-white balance (AWB) is currently setting the color
8098 transform fields,<wbr/> and what its illumination target
8099 is.<wbr/></p>
8100             </td>
8101
8102             <td class="entry_units">
8103             </td>
8104
8105             <td class="entry_range">
8106               <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
8107             </td>
8108
8109             <td class="entry_hal_version">
8110               <p>3.<wbr/>2</p>
8111             </td>
8112
8113             <td class="entry_tags">
8114               <ul class="entry_tags">
8115                   <li><a href="#tag_BC">BC</a></li>
8116               </ul>
8117             </td>
8118
8119           </tr>
8120           <tr class="entries_header">
8121             <th class="th_details" colspan="6">Details</th>
8122           </tr>
8123           <tr class="entry_cont">
8124             <td class="entry_details" colspan="6">
8125               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
8126 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
8127 routine is enabled,<wbr/> overriding the application's selected
8128 <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
8129 <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>
8130 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
8131 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
8132 setting AE mode to OFF.<wbr/></p>
8133 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
8134 routine is disabled.<wbr/> The application manually controls the white
8135 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>
8136 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
8137 <p>When set to any other modes,<wbr/> the camera device's auto-white
8138 balance routine is disabled.<wbr/> The camera device uses each
8139 particular illumination target for white balance
8140 adjustment.<wbr/> The application's values for
8141 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
8142 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
8143 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
8144             </td>
8145           </tr>
8146
8147
8148           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8149            <!-- end of entry -->
8150         
8151                 
8152           <tr class="entry" id="dynamic_android.control.awbRegions">
8153             <td class="entry_name
8154              " rowspan="5">
8155               android.<wbr/>control.<wbr/>awb<wbr/>Regions
8156             </td>
8157             <td class="entry_type">
8158                 <span class="entry_type_name">int32</span>
8159                 <span class="entry_type_container">x</span>
8160
8161                 <span class="entry_type_array">
8162                   5 x area_count
8163                 </span>
8164               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
8165
8166
8167
8168
8169
8170
8171             </td> <!-- entry_type -->
8172
8173             <td class="entry_description">
8174               <p>List of metering areas to use for auto-white-balance illuminant
8175 estimation.<wbr/></p>
8176             </td>
8177
8178             <td class="entry_units">
8179               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
8180             </td>
8181
8182             <td class="entry_range">
8183               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
8184 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
8185             </td>
8186
8187             <td class="entry_hal_version">
8188               <p>3.<wbr/>2</p>
8189             </td>
8190
8191             <td class="entry_tags">
8192               <ul class="entry_tags">
8193                   <li><a href="#tag_BC">BC</a></li>
8194               </ul>
8195             </td>
8196
8197           </tr>
8198           <tr class="entries_header">
8199             <th class="th_details" colspan="6">Details</th>
8200           </tr>
8201           <tr class="entry_cont">
8202             <td class="entry_details" colspan="6">
8203               <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
8204 Otherwise will always be present.<wbr/></p>
8205 <p>The maximum number of regions supported by the device is determined by the value
8206 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
8207 <p>The coordinate system is based on the active pixel array,<wbr/>
8208 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
8209 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
8210 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
8211 bottom-right pixel in the active pixel array.<wbr/></p>
8212 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
8213 for every pixel in the area.<wbr/> This means that a large metering area
8214 with the same weight as a smaller area will have more effect in
8215 the metering result.<wbr/> Metering areas can partially overlap and the
8216 camera device will add the weights in the overlap region.<wbr/></p>
8217 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
8218 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
8219 0 weight is ignored.<wbr/></p>
8220 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
8221 camera device.<wbr/></p>
8222 <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
8223 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
8224 region and output only the intersection rectangle as the metering region in the result
8225 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
8226 not reported in the result metadata.<wbr/></p>
8227             </td>
8228           </tr>
8229
8230           <tr class="entries_header">
8231             <th class="th_details" colspan="6">HAL Implementation Details</th>
8232           </tr>
8233           <tr class="entry_cont">
8234             <td class="entry_details" colspan="6">
8235               <p>The HAL level representation of MeteringRectangle[] is a
8236 int[5 * area_<wbr/>count].<wbr/>
8237 Every five elements represent a metering region of
8238 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
8239 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
8240 exclusive on xmax and ymax.<wbr/></p>
8241             </td>
8242           </tr>
8243
8244           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8245            <!-- end of entry -->
8246         
8247                 
8248           <tr class="entry" id="dynamic_android.control.captureIntent">
8249             <td class="entry_name
8250              " rowspan="3">
8251               android.<wbr/>control.<wbr/>capture<wbr/>Intent
8252             </td>
8253             <td class="entry_type">
8254                 <span class="entry_type_name entry_type_name_enum">byte</span>
8255
8256               <span class="entry_type_visibility"> [public]</span>
8257
8258
8259               <span class="entry_type_hwlevel">[legacy] </span>
8260
8261
8262
8263                 <ul class="entry_type_enum">
8264                   <li>
8265                     <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
8266                     <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
8267 categories.<wbr/> The camera device will default to preview-like
8268 behavior.<wbr/></p></span>
8269                   </li>
8270                   <li>
8271                     <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
8272                     <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
8273 <p>The precapture trigger may be used to start off a metering
8274 w/<wbr/>flash sequence.<wbr/></p></span>
8275                   </li>
8276                   <li>
8277                     <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
8278                     <span class="entry_type_enum_notes"><p>This request is for a still capture-type
8279 use case.<wbr/></p>
8280 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
8281                   </li>
8282                   <li>
8283                     <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
8284                     <span class="entry_type_enum_notes"><p>This request is for a video recording
8285 use case.<wbr/></p></span>
8286                   </li>
8287                   <li>
8288                     <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
8289                     <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
8290 image while recording video) use case.<wbr/></p>
8291 <p>The camera device should take the highest-quality image
8292 possible (given the other settings) without disrupting the
8293 frame rate of video recording.<wbr/>  </p></span>
8294                   </li>
8295                   <li>
8296                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
8297                     <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
8298 application will stream full-resolution images and
8299 reprocess one or several later for a final
8300 capture.<wbr/></p></span>
8301                   </li>
8302                   <li>
8303                     <span class="entry_type_enum_name">MANUAL (v3.2)</span>
8304                     <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
8305 the applications want to directly control the capture parameters.<wbr/></p>
8306 <p>For example,<wbr/> the application may wish to manually control
8307 <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>
8308                   </li>
8309                 </ul>
8310
8311             </td> <!-- entry_type -->
8312
8313             <td class="entry_description">
8314               <p>Information to the camera device 3A (auto-exposure,<wbr/>
8315 auto-focus,<wbr/> auto-white balance) routines about the purpose
8316 of this capture,<wbr/> to help the camera device to decide optimal 3A
8317 strategy.<wbr/></p>
8318             </td>
8319
8320             <td class="entry_units">
8321             </td>
8322
8323             <td class="entry_range">
8324             </td>
8325
8326             <td class="entry_hal_version">
8327               <p>3.<wbr/>2</p>
8328             </td>
8329
8330             <td class="entry_tags">
8331               <ul class="entry_tags">
8332                   <li><a href="#tag_BC">BC</a></li>
8333               </ul>
8334             </td>
8335
8336           </tr>
8337           <tr class="entries_header">
8338             <th class="th_details" colspan="6">Details</th>
8339           </tr>
8340           <tr class="entry_cont">
8341             <td class="entry_details" colspan="6">
8342               <p>This control (except for MANUAL) is only effective if
8343 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
8344 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
8345 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
8346 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
8347 always supported.<wbr/></p>
8348             </td>
8349           </tr>
8350
8351
8352           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8353            <!-- end of entry -->
8354         
8355                 
8356           <tr class="entry" id="dynamic_android.control.awbState">
8357             <td class="entry_name
8358              " rowspan="3">
8359               android.<wbr/>control.<wbr/>awb<wbr/>State
8360             </td>
8361             <td class="entry_type">
8362                 <span class="entry_type_name entry_type_name_enum">byte</span>
8363
8364               <span class="entry_type_visibility"> [public]</span>
8365
8366
8367               <span class="entry_type_hwlevel">[limited] </span>
8368
8369
8370
8371                 <ul class="entry_type_enum">
8372                   <li>
8373                     <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
8374                     <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
8375 <p>When a camera device is opened,<wbr/> it starts in this
8376 state.<wbr/> This is a transient state,<wbr/> the camera device may
8377 skip reporting this state in capture
8378 result.<wbr/></p></span>
8379                   </li>
8380                   <li>
8381                     <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
8382                     <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
8383 values for the current scene.<wbr/></p>
8384 <p>This is a transient state,<wbr/> the camera device
8385 may skip reporting this state in capture result.<wbr/></p></span>
8386                   </li>
8387                   <li>
8388                     <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
8389                     <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
8390 current scene.<wbr/></p></span>
8391                   </li>
8392                   <li>
8393                     <span class="entry_type_enum_name">LOCKED (v3.2)</span>
8394                     <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
8395                   </li>
8396                 </ul>
8397
8398             </td> <!-- entry_type -->
8399
8400             <td class="entry_description">
8401               <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
8402             </td>
8403
8404             <td class="entry_units">
8405             </td>
8406
8407             <td class="entry_range">
8408             </td>
8409
8410             <td class="entry_hal_version">
8411               <p>3.<wbr/>2</p>
8412             </td>
8413
8414             <td class="entry_tags">
8415             </td>
8416
8417           </tr>
8418           <tr class="entries_header">
8419             <th class="th_details" colspan="6">Details</th>
8420           </tr>
8421           <tr class="entry_cont">
8422             <td class="entry_details" colspan="6">
8423               <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
8424 resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8425 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
8426 the algorithm states to INACTIVE.<wbr/></p>
8427 <p>The camera device can do several state transitions between two results,<wbr/> if it is
8428 allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
8429 a result.<wbr/></p>
8430 <p>The state in the result is the state for this image (in sync with this image): if
8431 AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
8432 be good to use.<wbr/></p>
8433 <p>Below are state transition tables for different AWB modes.<wbr/></p>
8434 <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
8435 <table>
8436 <thead>
8437 <tr>
8438 <th align="center">State</th>
8439 <th align="center">Transition Cause</th>
8440 <th align="center">New State</th>
8441 <th align="center">Notes</th>
8442 </tr>
8443 </thead>
8444 <tbody>
8445 <tr>
8446 <td align="center">INACTIVE</td>
8447 <td align="center"></td>
8448 <td align="center">INACTIVE</td>
8449 <td align="center">Camera device auto white balance algorithm is disabled</td>
8450 </tr>
8451 </tbody>
8452 </table>
8453 <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
8454 <table>
8455 <thead>
8456 <tr>
8457 <th align="center">State</th>
8458 <th align="center">Transition Cause</th>
8459 <th align="center">New State</th>
8460 <th align="center">Notes</th>
8461 </tr>
8462 </thead>
8463 <tbody>
8464 <tr>
8465 <td align="center">INACTIVE</td>
8466 <td align="center">Camera device initiates AWB scan</td>
8467 <td align="center">SEARCHING</td>
8468 <td align="center">Values changing</td>
8469 </tr>
8470 <tr>
8471 <td align="center">INACTIVE</td>
8472 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8473 <td align="center">LOCKED</td>
8474 <td align="center">Values locked</td>
8475 </tr>
8476 <tr>
8477 <td align="center">SEARCHING</td>
8478 <td align="center">Camera device finishes AWB scan</td>
8479 <td align="center">CONVERGED</td>
8480 <td align="center">Good values,<wbr/> not changing</td>
8481 </tr>
8482 <tr>
8483 <td align="center">SEARCHING</td>
8484 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8485 <td align="center">LOCKED</td>
8486 <td align="center">Values locked</td>
8487 </tr>
8488 <tr>
8489 <td align="center">CONVERGED</td>
8490 <td align="center">Camera device initiates AWB scan</td>
8491 <td align="center">SEARCHING</td>
8492 <td align="center">Values changing</td>
8493 </tr>
8494 <tr>
8495 <td align="center">CONVERGED</td>
8496 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8497 <td align="center">LOCKED</td>
8498 <td align="center">Values locked</td>
8499 </tr>
8500 <tr>
8501 <td align="center">LOCKED</td>
8502 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8503 <td align="center">SEARCHING</td>
8504 <td align="center">Values not good after unlock</td>
8505 </tr>
8506 </tbody>
8507 </table>
8508 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8509 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8510 can be skipped in that manner is called a transient state.<wbr/></p>
8511 <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
8512 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
8513 transient states between two results.<wbr/> See below table for examples:</p>
8514 <table>
8515 <thead>
8516 <tr>
8517 <th align="center">State</th>
8518 <th align="center">Transition Cause</th>
8519 <th align="center">New State</th>
8520 <th align="center">Notes</th>
8521 </tr>
8522 </thead>
8523 <tbody>
8524 <tr>
8525 <td align="center">INACTIVE</td>
8526 <td align="center">Camera device finished AWB scan</td>
8527 <td align="center">CONVERGED</td>
8528 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
8529 </tr>
8530 <tr>
8531 <td align="center">LOCKED</td>
8532 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8533 <td align="center">CONVERGED</td>
8534 <td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
8535 </tr>
8536 </tbody>
8537 </table>
8538             </td>
8539           </tr>
8540
8541
8542           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8543            <!-- end of entry -->
8544         
8545                 
8546           <tr class="entry" id="dynamic_android.control.effectMode">
8547             <td class="entry_name
8548              " rowspan="3">
8549               android.<wbr/>control.<wbr/>effect<wbr/>Mode
8550             </td>
8551             <td class="entry_type">
8552                 <span class="entry_type_name entry_type_name_enum">byte</span>
8553
8554               <span class="entry_type_visibility"> [public]</span>
8555
8556
8557               <span class="entry_type_hwlevel">[legacy] </span>
8558
8559
8560
8561                 <ul class="entry_type_enum">
8562                   <li>
8563                     <span class="entry_type_enum_name">OFF (v3.2)</span>
8564                     <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8565                   </li>
8566                   <li>
8567                     <span class="entry_type_enum_name">MONO (v3.2)</span>
8568                     <span class="entry_type_enum_optional">[optional]</span>
8569                     <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8570 a single color.<wbr/></p>
8571 <p>This will typically be grayscale.<wbr/></p></span>
8572                   </li>
8573                   <li>
8574                     <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
8575                     <span class="entry_type_enum_optional">[optional]</span>
8576                     <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8577 are inverted.<wbr/></p></span>
8578                   </li>
8579                   <li>
8580                     <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
8581                     <span class="entry_type_enum_optional">[optional]</span>
8582                     <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8583 image is wholly or partially reversed in
8584 tone.<wbr/></p></span>
8585                   </li>
8586                   <li>
8587                     <span class="entry_type_enum_name">SEPIA (v3.2)</span>
8588                     <span class="entry_type_enum_optional">[optional]</span>
8589                     <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8590 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8591                   </li>
8592                   <li>
8593                     <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
8594                     <span class="entry_type_enum_optional">[optional]</span>
8595                     <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8596 discrete regions of tone rather than a continuous
8597 gradient of tones.<wbr/></p></span>
8598                   </li>
8599                   <li>
8600                     <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
8601                     <span class="entry_type_enum_optional">[optional]</span>
8602                     <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8603 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8604                   </li>
8605                   <li>
8606                     <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
8607                     <span class="entry_type_enum_optional">[optional]</span>
8608                     <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8609 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8610                   </li>
8611                   <li>
8612                     <span class="entry_type_enum_name">AQUA (v3.2)</span>
8613                     <span class="entry_type_enum_optional">[optional]</span>
8614                     <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8615                   </li>
8616                 </ul>
8617
8618             </td> <!-- entry_type -->
8619
8620             <td class="entry_description">
8621               <p>A special color effect to apply.<wbr/></p>
8622             </td>
8623
8624             <td class="entry_units">
8625             </td>
8626
8627             <td class="entry_range">
8628               <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8629             </td>
8630
8631             <td class="entry_hal_version">
8632               <p>3.<wbr/>2</p>
8633             </td>
8634
8635             <td class="entry_tags">
8636               <ul class="entry_tags">
8637                   <li><a href="#tag_BC">BC</a></li>
8638               </ul>
8639             </td>
8640
8641           </tr>
8642           <tr class="entries_header">
8643             <th class="th_details" colspan="6">Details</th>
8644           </tr>
8645           <tr class="entry_cont">
8646             <td class="entry_details" colspan="6">
8647               <p>When this mode is set,<wbr/> a color effect will be applied
8648 to images produced by the camera device.<wbr/> The interpretation
8649 and implementation of these color effects is left to the
8650 implementor of the camera device,<wbr/> and should not be
8651 depended on to be consistent (or present) across all
8652 devices.<wbr/></p>
8653             </td>
8654           </tr>
8655
8656
8657           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8658            <!-- end of entry -->
8659         
8660                 
8661           <tr class="entry" id="dynamic_android.control.mode">
8662             <td class="entry_name
8663              " rowspan="3">
8664               android.<wbr/>control.<wbr/>mode
8665             </td>
8666             <td class="entry_type">
8667                 <span class="entry_type_name entry_type_name_enum">byte</span>
8668
8669               <span class="entry_type_visibility"> [public]</span>
8670
8671
8672               <span class="entry_type_hwlevel">[legacy] </span>
8673
8674
8675
8676                 <ul class="entry_type_enum">
8677                   <li>
8678                     <span class="entry_type_enum_name">OFF (v3.2)</span>
8679                     <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8680 <p>All control by the device's metering and focusing (3A)
8681 routines is disabled,<wbr/> and no other settings in
8682 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8683 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8684 device to select post-processing values for processing
8685 blocks that do not allow for manual control,<wbr/> or are not
8686 exposed by the camera API.<wbr/></p>
8687 <p>However,<wbr/> the camera device's 3A routines may continue to
8688 collect statistics and update their internal state so that
8689 when control is switched to AUTO mode,<wbr/> good control values
8690 can be immediately applied.<wbr/></p></span>
8691                   </li>
8692                   <li>
8693                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
8694                     <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8695 <p>Manual control of capture parameters is disabled.<wbr/> All
8696 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8697 effect.<wbr/></p></span>
8698                   </li>
8699                   <li>
8700                     <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
8701                     <span class="entry_type_enum_optional">[optional]</span>
8702                     <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8703 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8704 control.<wbr/>afMode controls; the camera device will ignore
8705 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8706 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8707 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8708 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8709 contain some modes other than DISABLED).<wbr/></p></span>
8710                   </li>
8711                   <li>
8712                     <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
8713                     <span class="entry_type_enum_optional">[optional]</span>
8714                     <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8715 used by camera device background auto-exposure,<wbr/> auto-white balance and
8716 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8717 <p>Specifically,<wbr/> the 3A routines are locked to the last
8718 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8719 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8720 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8721 discarded by the camera device.<wbr/></p></span>
8722                   </li>
8723                 </ul>
8724
8725             </td> <!-- entry_type -->
8726
8727             <td class="entry_description">
8728               <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8729 routines.<wbr/></p>
8730             </td>
8731
8732             <td class="entry_units">
8733             </td>
8734
8735             <td class="entry_range">
8736               <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8737             </td>
8738
8739             <td class="entry_hal_version">
8740               <p>3.<wbr/>2</p>
8741             </td>
8742
8743             <td class="entry_tags">
8744               <ul class="entry_tags">
8745                   <li><a href="#tag_BC">BC</a></li>
8746               </ul>
8747             </td>
8748
8749           </tr>
8750           <tr class="entries_header">
8751             <th class="th_details" colspan="6">Details</th>
8752           </tr>
8753           <tr class="entry_cont">
8754             <td class="entry_details" colspan="6">
8755               <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8756 by the camera device is disabled.<wbr/> The application must set the fields for
8757 capture parameters itself.<wbr/></p>
8758 <p>When set to AUTO,<wbr/> the individual algorithm controls in
8759 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>
8760 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8761 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
8762 implements one of the scene mode settings (such as ACTION,<wbr/>
8763 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
8764 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8765 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8766 is that this frame will not be used by camera device background 3A statistics
8767 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8768 where the application doesn't want a 3A manual control capture to affect
8769 the subsequent auto 3A capture results.<wbr/></p>
8770             </td>
8771           </tr>
8772
8773
8774           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8775            <!-- end of entry -->
8776         
8777                 
8778           <tr class="entry" id="dynamic_android.control.sceneMode">
8779             <td class="entry_name
8780              " rowspan="5">
8781               android.<wbr/>control.<wbr/>scene<wbr/>Mode
8782             </td>
8783             <td class="entry_type">
8784                 <span class="entry_type_name entry_type_name_enum">byte</span>
8785
8786               <span class="entry_type_visibility"> [public]</span>
8787
8788
8789               <span class="entry_type_hwlevel">[legacy] </span>
8790
8791
8792
8793                 <ul class="entry_type_enum">
8794                   <li>
8795                     <span class="entry_type_enum_name">DISABLED (v3.2)</span>
8796                     <span class="entry_type_enum_value">0</span>
8797                     <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8798                   </li>
8799                   <li>
8800                     <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
8801                     <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8802 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8803 auto-exposure routines.<wbr/></p>
8804 <p>If face detection statistics are disabled
8805 (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/>
8806 this should still operate correctly (but will not return
8807 face detection statistics to the framework).<wbr/></p>
8808 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8809 <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>
8810 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8811                   </li>
8812                   <li>
8813                     <span class="entry_type_enum_name">ACTION (v3.2)</span>
8814                     <span class="entry_type_enum_optional">[optional]</span>
8815                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8816 <p>Similar to SPORTS.<wbr/></p></span>
8817                   </li>
8818                   <li>
8819                     <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
8820                     <span class="entry_type_enum_optional">[optional]</span>
8821                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8822                   </li>
8823                   <li>
8824                     <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
8825                     <span class="entry_type_enum_optional">[optional]</span>
8826                     <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8827                   </li>
8828                   <li>
8829                     <span class="entry_type_enum_name">NIGHT (v3.2)</span>
8830                     <span class="entry_type_enum_optional">[optional]</span>
8831                     <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8832                   </li>
8833                   <li>
8834                     <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
8835                     <span class="entry_type_enum_optional">[optional]</span>
8836                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8837 settings.<wbr/></p></span>
8838                   </li>
8839                   <li>
8840                     <span class="entry_type_enum_name">THEATRE (v3.2)</span>
8841                     <span class="entry_type_enum_optional">[optional]</span>
8842                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8843 remain off.<wbr/></p></span>
8844                   </li>
8845                   <li>
8846                     <span class="entry_type_enum_name">BEACH (v3.2)</span>
8847                     <span class="entry_type_enum_optional">[optional]</span>
8848                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8849                   </li>
8850                   <li>
8851                     <span class="entry_type_enum_name">SNOW (v3.2)</span>
8852                     <span class="entry_type_enum_optional">[optional]</span>
8853                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8854                   </li>
8855                   <li>
8856                     <span class="entry_type_enum_name">SUNSET (v3.2)</span>
8857                     <span class="entry_type_enum_optional">[optional]</span>
8858                     <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8859                   </li>
8860                   <li>
8861                     <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
8862                     <span class="entry_type_enum_optional">[optional]</span>
8863                     <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8864 device motion (for example: due to hand shake).<wbr/></p></span>
8865                   </li>
8866                   <li>
8867                     <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
8868                     <span class="entry_type_enum_optional">[optional]</span>
8869                     <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8870                   </li>
8871                   <li>
8872                     <span class="entry_type_enum_name">SPORTS (v3.2)</span>
8873                     <span class="entry_type_enum_optional">[optional]</span>
8874                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8875 <p>Similar to ACTION.<wbr/></p></span>
8876                   </li>
8877                   <li>
8878                     <span class="entry_type_enum_name">PARTY (v3.2)</span>
8879                     <span class="entry_type_enum_optional">[optional]</span>
8880                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8881 people.<wbr/></p></span>
8882                   </li>
8883                   <li>
8884                     <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
8885                     <span class="entry_type_enum_optional">[optional]</span>
8886                     <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
8887 is a flame.<wbr/></p></span>
8888                   </li>
8889                   <li>
8890                     <span class="entry_type_enum_name">BARCODE (v3.2)</span>
8891                     <span class="entry_type_enum_optional">[optional]</span>
8892                     <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
8893 for use by camera applications that wish to read the
8894 barcode value.<wbr/></p></span>
8895                   </li>
8896                   <li>
8897                     <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
8898                     <span class="entry_type_enum_deprecated">[deprecated]</span>
8899                     <span class="entry_type_enum_optional">[optional]</span>
8900                     <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>
8901 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
8902 for high speed video recording.<wbr/></p>
8903 <p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
8904 <p>The supported high speed video sizes and fps ranges are specified in
8905 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
8906 output frame rates,<wbr/> the application is only allowed to select video size
8907 and fps range combinations listed in this static metadata.<wbr/> The fps range
8908 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
8909 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
8910 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
8911 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
8912 and post-processing parameters is possible.<wbr/> All other controls operate the
8913 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
8914 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
8915 <ul>
8916 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
8917 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
8918 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
8919 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
8920 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
8921 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
8922 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
8923 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
8924 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
8925 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
8926 </ul>
8927 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
8928 <ul>
8929 <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>
8930 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
8931 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
8932 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
8933 </ul>
8934 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
8935 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
8936 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
8937 the application need check if the video encoder is capable of supporting the
8938 high frame rate for a given video size,<wbr/> or it will end up with lower recording
8939 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
8940 rate will be bounded by the screen refresh rate.<wbr/></p>
8941 <p>The camera device will only support up to 2 output high speed streams
8942 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
8943 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
8944 <ul>
8945 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
8946 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
8947 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>
8948 <li>The stream sizes are selected from the sizes reported by
8949 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
8950 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
8951 </ul>
8952 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
8953 <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/>
8954 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
8955 and the returned capture result metadata will give the fps range choosen
8956 by the camera device.<wbr/></p>
8957 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
8958 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
8959 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
8960                   </li>
8961                   <li>
8962                     <span class="entry_type_enum_name">HDR (v3.2)</span>
8963                     <span class="entry_type_enum_optional">[optional]</span>
8964                     <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
8965 <p>In this scene mode,<wbr/> the camera device captures images
8966 that keep a larger range of scene illumination levels
8967 visible in the final image.<wbr/> For example,<wbr/> when taking a
8968 picture of a object in front of a bright window,<wbr/> both
8969 the object and the scene through the window may be
8970 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
8971 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
8972 HDR mode generally takes much longer to capture a single
8973 image,<wbr/> has no user control,<wbr/> and may have other artifacts
8974 depending on the HDR method used.<wbr/></p>
8975 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
8976 than regular captures.<wbr/></p>
8977 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
8978 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
8979 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
8980 using a high dynamic range capture technique.<wbr/>  On LEGACY
8981 devices,<wbr/> captures that target a JPEG-format output will
8982 be captured with HDR,<wbr/> and the capture intent is not
8983 relevant.<wbr/></p>
8984 <p>The HDR capture may involve the device capturing a burst
8985 of images internally and combining them into one,<wbr/> or it
8986 may involve the device using specialized high dynamic
8987 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
8988 produced in response to a capture request submitted
8989 while in HDR mode.<wbr/></p>
8990 <p>Since substantial post-processing is generally needed to
8991 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
8992 outputs are supported for LIMITED/<wbr/>FULL device HDR
8993 captures,<wbr/> and only JPEG outputs are supported for LEGACY
8994 HDR captures.<wbr/> Using a RAW output for HDR capture is not
8995 supported.<wbr/></p>
8996 <p>Some devices may also support always-on HDR,<wbr/> which
8997 applies HDR processing at full frame rate.<wbr/>  For these
8998 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
8999 produce an HDR output with no frame rate impact compared
9000 to normal operation,<wbr/> though the quality may be lower
9001 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
9002 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
9003 or capture intents,<wbr/> the images captured will be as if
9004 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
9005                   </li>
9006                   <li>
9007                     <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
9008                     <span class="entry_type_enum_optional">[optional]</span>
9009                     <span class="entry_type_enum_hidden">[hidden]</span>
9010                     <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
9011 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
9012 under low light conditions.<wbr/></p>
9013 <p>The camera device may be tuned to expose the images in a reduced
9014 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
9015 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/>
9016 the camera device auto-exposure routine tuning process may limit the actual
9017 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
9018 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
9019 low light may be under-exposed when the sensor max exposure time (bounded by the
9020 <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
9021 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
9022 camera device auto-exposure routine to increase the sensitivity up to the max
9023 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
9024 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
9025 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
9026 recommended that the application only use this scene mode when it is capable of
9027 reducing the noise level of the captured images.<wbr/></p>
9028 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9029 <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>
9030 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
9031                   </li>
9032                   <li>
9033                     <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
9034                     <span class="entry_type_enum_optional">[optional]</span>
9035                     <span class="entry_type_enum_hidden">[hidden]</span>
9036                     <span class="entry_type_enum_value">100</span>
9037                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9038 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9039 customized scene modes.<wbr/></p></span>
9040                   </li>
9041                   <li>
9042                     <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
9043                     <span class="entry_type_enum_optional">[optional]</span>
9044                     <span class="entry_type_enum_hidden">[hidden]</span>
9045                     <span class="entry_type_enum_value">127</span>
9046                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9047 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9048 customized scene modes.<wbr/></p></span>
9049                   </li>
9050                 </ul>
9051
9052             </td> <!-- entry_type -->
9053
9054             <td class="entry_description">
9055               <p>Control for which scene mode is currently active.<wbr/></p>
9056             </td>
9057
9058             <td class="entry_units">
9059             </td>
9060
9061             <td class="entry_range">
9062               <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
9063             </td>
9064
9065             <td class="entry_hal_version">
9066               <p>3.<wbr/>2</p>
9067             </td>
9068
9069             <td class="entry_tags">
9070               <ul class="entry_tags">
9071                   <li><a href="#tag_BC">BC</a></li>
9072               </ul>
9073             </td>
9074
9075           </tr>
9076           <tr class="entries_header">
9077             <th class="th_details" colspan="6">Details</th>
9078           </tr>
9079           <tr class="entry_cont">
9080             <td class="entry_details" colspan="6">
9081               <p>Scene modes are custom camera modes optimized for a certain set of conditions and
9082 capture settings.<wbr/></p>
9083 <p>This is the mode that that is active when
9084 <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
9085 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>
9086 while in use.<wbr/></p>
9087 <p>The interpretation and implementation of these scene modes is left
9088 to the implementor of the camera device.<wbr/> Their behavior will not be
9089 consistent across all devices,<wbr/> and any given device may only implement
9090 a subset of these modes.<wbr/></p>
9091             </td>
9092           </tr>
9093
9094           <tr class="entries_header">
9095             <th class="th_details" colspan="6">HAL Implementation Details</th>
9096           </tr>
9097           <tr class="entry_cont">
9098             <td class="entry_details" colspan="6">
9099               <p>HAL implementations that include scene modes are expected to provide
9100 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9101 <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
9102 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
9103 <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
9104 HAL must list supported video size and fps range in
9105 <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/>
9106 if the HAL has two different sensor configurations for normal streaming mode and high
9107 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
9108 HAL may have to switch between different sensor modes.<wbr/>  This mode is deprecated in legacy
9109 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
9110 <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
9111 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
9112             </td>
9113           </tr>
9114
9115           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9116            <!-- end of entry -->
9117         
9118                 
9119           <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
9120             <td class="entry_name
9121              " rowspan="3">
9122               android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
9123             </td>
9124             <td class="entry_type">
9125                 <span class="entry_type_name entry_type_name_enum">byte</span>
9126
9127               <span class="entry_type_visibility"> [public]</span>
9128
9129
9130               <span class="entry_type_hwlevel">[legacy] </span>
9131
9132
9133
9134                 <ul class="entry_type_enum">
9135                   <li>
9136                     <span class="entry_type_enum_name">OFF (v3.2)</span>
9137                     <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
9138                   </li>
9139                   <li>
9140                     <span class="entry_type_enum_name">ON (v3.2)</span>
9141                     <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
9142                   </li>
9143                 </ul>
9144
9145             </td> <!-- entry_type -->
9146
9147             <td class="entry_description">
9148               <p>Whether video stabilization is
9149 active.<wbr/></p>
9150             </td>
9151
9152             <td class="entry_units">
9153             </td>
9154
9155             <td class="entry_range">
9156             </td>
9157
9158             <td class="entry_hal_version">
9159               <p>3.<wbr/>2</p>
9160             </td>
9161
9162             <td class="entry_tags">
9163               <ul class="entry_tags">
9164                   <li><a href="#tag_BC">BC</a></li>
9165               </ul>
9166             </td>
9167
9168           </tr>
9169           <tr class="entries_header">
9170             <th class="th_details" colspan="6">Details</th>
9171           </tr>
9172           <tr class="entry_cont">
9173             <td class="entry_details" colspan="6">
9174               <p>Video stabilization automatically warps images from
9175 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
9176 <p>If enabled,<wbr/> video stabilization can modify the
9177 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
9178 <p>Switching between different video stabilization modes may take several
9179 frames to initialize,<wbr/> the camera device will report the current mode
9180 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
9181 the video stabilization modes in the first several capture results may
9182 still be "OFF",<wbr/> and it will become "ON" when the initialization is
9183 done.<wbr/></p>
9184 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
9185 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
9186 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
9187 the recording resolution is less than or equal to 1920 x 1080 (width less than
9188 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
9189 frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
9190 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
9191 OFF if the recording output is not stabilized,<wbr/> or if there are no output
9192 Surface types that can be stabilized.<wbr/></p>
9193 <p>If a camera device supports both this mode and OIS
9194 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
9195 produce undesirable interaction,<wbr/> so it is recommended not to enable
9196 both at the same time.<wbr/></p>
9197             </td>
9198           </tr>
9199
9200
9201           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9202            <!-- end of entry -->
9203         
9204                 
9205           <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
9206             <td class="entry_name
9207              " rowspan="3">
9208               android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
9209             </td>
9210             <td class="entry_type">
9211                 <span class="entry_type_name">int32</span>
9212
9213               <span class="entry_type_visibility"> [public]</span>
9214
9215
9216
9217
9218
9219
9220             </td> <!-- entry_type -->
9221
9222             <td class="entry_description">
9223               <p>The amount of additional sensitivity boost applied to output images
9224 after RAW sensor data is captured.<wbr/></p>
9225             </td>
9226
9227             <td class="entry_units">
9228               ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
9229             </td>
9230
9231             <td class="entry_range">
9232               <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
9233             </td>
9234
9235             <td class="entry_hal_version">
9236               <p>3.<wbr/>2</p>
9237             </td>
9238
9239             <td class="entry_tags">
9240             </td>
9241
9242           </tr>
9243           <tr class="entries_header">
9244             <th class="th_details" colspan="6">Details</th>
9245           </tr>
9246           <tr class="entry_cont">
9247             <td class="entry_details" colspan="6">
9248               <p>Some camera devices support additional digital sensitivity boosting in the
9249 camera processing pipeline after sensor RAW image is captured.<wbr/>
9250 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
9251 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
9252 <p>This key will be <code>null</code> for devices that do not support any RAW format
9253 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
9254 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
9255 list <code>100</code> in this key.<wbr/></p>
9256 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
9257 boost to the nearest supported value.<wbr/>
9258 The final boost value used will be available in the output capture result.<wbr/></p>
9259 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
9260 of such device will have the total sensitivity of
9261 <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>
9262 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
9263 <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
9264 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
9265             </td>
9266           </tr>
9267
9268
9269           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9270            <!-- end of entry -->
9271         
9272                 
9273           <tr class="entry" id="dynamic_android.control.enableZsl">
9274             <td class="entry_name
9275              " rowspan="5">
9276               android.<wbr/>control.<wbr/>enable<wbr/>Zsl
9277             </td>
9278             <td class="entry_type">
9279                 <span class="entry_type_name entry_type_name_enum">byte</span>
9280
9281               <span class="entry_type_visibility"> [public as boolean]</span>
9282
9283
9284
9285
9286
9287                 <ul class="entry_type_enum">
9288                   <li>
9289                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
9290                     <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
9291 after previous requests.<wbr/></p></span>
9292                   </li>
9293                   <li>
9294                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
9295                     <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
9296 captured before previous requests.<wbr/></p></span>
9297                   </li>
9298                 </ul>
9299
9300             </td> <!-- entry_type -->
9301
9302             <td class="entry_description">
9303               <p>Allow camera device to enable zero-shutter-lag mode for requests with
9304 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
9305             </td>
9306
9307             <td class="entry_units">
9308             </td>
9309
9310             <td class="entry_range">
9311             </td>
9312
9313             <td class="entry_hal_version">
9314               <p>3.<wbr/>2</p>
9315             </td>
9316
9317             <td class="entry_tags">
9318             </td>
9319
9320           </tr>
9321           <tr class="entries_header">
9322             <th class="th_details" colspan="6">Details</th>
9323           </tr>
9324           <tr class="entry_cont">
9325             <td class="entry_details" colspan="6">
9326               <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
9327 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
9328 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
9329 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
9330 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
9331 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
9332 capture intents.<wbr/></p>
9333 <p>For example,<wbr/> when requests are submitted in the following order:
9334   Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
9335   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>
9336 <p>The output images for request B may have contents captured before the output images for
9337 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
9338 request A.<wbr/></p>
9339 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
9340 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
9341 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
9342 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
9343 <code>false</code> if present.<wbr/></p>
9344 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
9345 capture templates is always <code>false</code> if present.<wbr/></p>
9346 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
9347             </td>
9348           </tr>
9349
9350           <tr class="entries_header">
9351             <th class="th_details" colspan="6">HAL Implementation Details</th>
9352           </tr>
9353           <tr class="entry_cont">
9354             <td class="entry_details" colspan="6">
9355               <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
9356 capture intent.<wbr/></p>
9357             </td>
9358           </tr>
9359
9360           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9361            <!-- end of entry -->
9362         
9363                 
9364           <tr class="entry" id="dynamic_android.control.afSceneChange">
9365             <td class="entry_name
9366              " rowspan="3">
9367               android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change
9368             </td>
9369             <td class="entry_type">
9370                 <span class="entry_type_name entry_type_name_enum">int32</span>
9371
9372               <span class="entry_type_visibility"> [public]</span>
9373
9374
9375
9376
9377
9378                 <ul class="entry_type_enum">
9379                   <li>
9380                     <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span>
9381                     <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span>
9382                   </li>
9383                   <li>
9384                     <span class="entry_type_enum_name">DETECTED (v3.3)</span>
9385                     <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span>
9386                   </li>
9387                 </ul>
9388
9389             </td> <!-- entry_type -->
9390
9391             <td class="entry_description">
9392               <p>Whether a significant scene change is detected within the currently-set AF
9393 region(s).<wbr/></p>
9394             </td>
9395
9396             <td class="entry_units">
9397             </td>
9398
9399             <td class="entry_range">
9400             </td>
9401
9402             <td class="entry_hal_version">
9403               <p>3.<wbr/>3</p>
9404             </td>
9405
9406             <td class="entry_tags">
9407             </td>
9408
9409           </tr>
9410           <tr class="entries_header">
9411             <th class="th_details" colspan="6">Details</th>
9412           </tr>
9413           <tr class="entry_cont">
9414             <td class="entry_details" colspan="6">
9415               <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/>
9416 such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a
9417 significant illumination change,<wbr/> this value will be set to DETECTED for a single capture
9418 result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar
9419 to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p>
9420 <p>afSceneChange may be DETECTED only if afMode is AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>VIDEO or
9421 AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>PICTURE.<wbr/> In other AF modes,<wbr/> afSceneChange must be NOT_<wbr/>DETECTED.<wbr/></p>
9422 <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>
9423             </td>
9424           </tr>
9425
9426
9427           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9428            <!-- end of entry -->
9429         
9430         
9431
9432       <!-- end of kind -->
9433       </tbody>
9434
9435   <!-- end of section -->
9436   <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr>
9437
9438
9439       <tr><td colspan="7" class="kind">controls</td></tr>
9440
9441       <thead class="entries_header">
9442         <tr>
9443           <th class="th_name">Property Name</th>
9444           <th class="th_type">Type</th>
9445           <th class="th_description">Description</th>
9446           <th class="th_units">Units</th>
9447           <th class="th_range">Range</th>
9448           <th class="th_hal_version">Initial HIDL HAL version</th>
9449           <th class="th_tags">Tags</th>
9450         </tr>
9451       </thead>
9452
9453       <tbody>
9454
9455         
9456
9457         
9458
9459         
9460
9461         
9462
9463                 
9464           <tr class="entry" id="controls_android.demosaic.mode">
9465             <td class="entry_name
9466              " rowspan="1">
9467               android.<wbr/>demosaic.<wbr/>mode
9468             </td>
9469             <td class="entry_type">
9470                 <span class="entry_type_name entry_type_name_enum">byte</span>
9471
9472               <span class="entry_type_visibility"> [system]</span>
9473
9474
9475
9476
9477
9478                 <ul class="entry_type_enum">
9479                   <li>
9480                     <span class="entry_type_enum_name">FAST (v3.2)</span>
9481                     <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
9482 Bayer RAW output.<wbr/></p></span>
9483                   </li>
9484                   <li>
9485                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9486                     <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
9487 relative to raw output.<wbr/></p></span>
9488                   </li>
9489                 </ul>
9490
9491             </td> <!-- entry_type -->
9492
9493             <td class="entry_description">
9494               <p>Controls the quality of the demosaicing
9495 processing.<wbr/></p>
9496             </td>
9497
9498             <td class="entry_units">
9499             </td>
9500
9501             <td class="entry_range">
9502             </td>
9503
9504             <td class="entry_hal_version">
9505               <p>3.<wbr/>2</p>
9506             </td>
9507
9508             <td class="entry_tags">
9509               <ul class="entry_tags">
9510                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9511               </ul>
9512             </td>
9513
9514           </tr>
9515
9516
9517           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9518            <!-- end of entry -->
9519         
9520         
9521
9522       <!-- end of kind -->
9523       </tbody>
9524
9525   <!-- end of section -->
9526   <tr><td colspan="7" id="section_edge" class="section">edge</td></tr>
9527
9528
9529       <tr><td colspan="7" class="kind">controls</td></tr>
9530
9531       <thead class="entries_header">
9532         <tr>
9533           <th class="th_name">Property Name</th>
9534           <th class="th_type">Type</th>
9535           <th class="th_description">Description</th>
9536           <th class="th_units">Units</th>
9537           <th class="th_range">Range</th>
9538           <th class="th_hal_version">Initial HIDL HAL version</th>
9539           <th class="th_tags">Tags</th>
9540         </tr>
9541       </thead>
9542
9543       <tbody>
9544
9545         
9546
9547         
9548
9549         
9550
9551         
9552
9553                 
9554           <tr class="entry" id="controls_android.edge.mode">
9555             <td class="entry_name
9556              " rowspan="5">
9557               android.<wbr/>edge.<wbr/>mode
9558             </td>
9559             <td class="entry_type">
9560                 <span class="entry_type_name entry_type_name_enum">byte</span>
9561
9562               <span class="entry_type_visibility"> [public]</span>
9563
9564
9565               <span class="entry_type_hwlevel">[full] </span>
9566
9567
9568
9569                 <ul class="entry_type_enum">
9570                   <li>
9571                     <span class="entry_type_enum_name">OFF (v3.2)</span>
9572                     <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9573                   </li>
9574                   <li>
9575                     <span class="entry_type_enum_name">FAST (v3.2)</span>
9576                     <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9577 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9578 slow down frame rate relative to sensor.<wbr/></p></span>
9579                   </li>
9580                   <li>
9581                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9582                     <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>
9583                   </li>
9584                   <li>
9585                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9586                     <span class="entry_type_enum_optional">[optional]</span>
9587                     <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9588 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9589 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9590 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9591 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9592 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9593 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9594 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9595 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9596 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9597 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9598 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9599 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9600 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9601 reasonable preview quality.<wbr/></p>
9602 <p>This mode is guaranteed to be supported by devices that support either the
9603 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9604 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9605 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9606                   </li>
9607                 </ul>
9608
9609             </td> <!-- entry_type -->
9610
9611             <td class="entry_description">
9612               <p>Operation mode for edge
9613 enhancement.<wbr/></p>
9614             </td>
9615
9616             <td class="entry_units">
9617             </td>
9618
9619             <td class="entry_range">
9620               <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9621             </td>
9622
9623             <td class="entry_hal_version">
9624               <p>3.<wbr/>2</p>
9625             </td>
9626
9627             <td class="entry_tags">
9628               <ul class="entry_tags">
9629                   <li><a href="#tag_V1">V1</a></li>
9630                   <li><a href="#tag_REPROC">REPROC</a></li>
9631               </ul>
9632             </td>
9633
9634           </tr>
9635           <tr class="entries_header">
9636             <th class="th_details" colspan="6">Details</th>
9637           </tr>
9638           <tr class="entry_cont">
9639             <td class="entry_details" colspan="6">
9640               <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9641 no enhancement will be applied by the camera device.<wbr/></p>
9642 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9643 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9644 camera device will use the highest-quality enhancement algorithms,<wbr/>
9645 even if it slows down capture rate.<wbr/> FAST means the camera device will
9646 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9647 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9648 amount of enhancement applied.<wbr/></p>
9649 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9650 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9651 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9652 edge enhancement to low-resolution streams (below maximum recording resolution) to
9653 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9654 since those will be reprocessed later if necessary.<wbr/></p>
9655 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9656 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9657 The camera device may adjust its internal edge enhancement parameters for best
9658 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>
9659             </td>
9660           </tr>
9661
9662           <tr class="entries_header">
9663             <th class="th_details" colspan="6">HAL Implementation Details</th>
9664           </tr>
9665           <tr class="entry_cont">
9666             <td class="entry_details" colspan="6">
9667               <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
9668 adjust the internal edge enhancement reduction parameters appropriately to get the best
9669 quality images.<wbr/></p>
9670             </td>
9671           </tr>
9672
9673           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9674            <!-- end of entry -->
9675         
9676                 
9677           <tr class="entry" id="controls_android.edge.strength">
9678             <td class="entry_name
9679              " rowspan="1">
9680               android.<wbr/>edge.<wbr/>strength
9681             </td>
9682             <td class="entry_type">
9683                 <span class="entry_type_name">byte</span>
9684
9685               <span class="entry_type_visibility"> [system]</span>
9686
9687
9688
9689
9690
9691
9692             </td> <!-- entry_type -->
9693
9694             <td class="entry_description">
9695               <p>Control the amount of edge enhancement
9696 applied to the images</p>
9697             </td>
9698
9699             <td class="entry_units">
9700               1-10; 10 is maximum sharpening
9701             </td>
9702
9703             <td class="entry_range">
9704             </td>
9705
9706             <td class="entry_hal_version">
9707               <p>3.<wbr/>2</p>
9708             </td>
9709
9710             <td class="entry_tags">
9711               <ul class="entry_tags">
9712                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9713               </ul>
9714             </td>
9715
9716           </tr>
9717
9718
9719           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9720            <!-- end of entry -->
9721         
9722         
9723
9724       <!-- end of kind -->
9725       </tbody>
9726       <tr><td colspan="7" class="kind">static</td></tr>
9727
9728       <thead class="entries_header">
9729         <tr>
9730           <th class="th_name">Property Name</th>
9731           <th class="th_type">Type</th>
9732           <th class="th_description">Description</th>
9733           <th class="th_units">Units</th>
9734           <th class="th_range">Range</th>
9735           <th class="th_hal_version">Initial HIDL HAL version</th>
9736           <th class="th_tags">Tags</th>
9737         </tr>
9738       </thead>
9739
9740       <tbody>
9741
9742         
9743
9744         
9745
9746         
9747
9748         
9749
9750                 
9751           <tr class="entry" id="static_android.edge.availableEdgeModes">
9752             <td class="entry_name
9753              " rowspan="5">
9754               android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
9755             </td>
9756             <td class="entry_type">
9757                 <span class="entry_type_name">byte</span>
9758                 <span class="entry_type_container">x</span>
9759
9760                 <span class="entry_type_array">
9761                   n
9762                 </span>
9763               <span class="entry_type_visibility"> [public as enumList]</span>
9764
9765
9766               <span class="entry_type_hwlevel">[full] </span>
9767
9768
9769                 <div class="entry_type_notes">list of enums</div>
9770
9771
9772             </td> <!-- entry_type -->
9773
9774             <td class="entry_description">
9775               <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
9776 device.<wbr/></p>
9777             </td>
9778
9779             <td class="entry_units">
9780             </td>
9781
9782             <td class="entry_range">
9783               <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
9784             </td>
9785
9786             <td class="entry_hal_version">
9787               <p>3.<wbr/>2</p>
9788             </td>
9789
9790             <td class="entry_tags">
9791               <ul class="entry_tags">
9792                   <li><a href="#tag_V1">V1</a></li>
9793                   <li><a href="#tag_REPROC">REPROC</a></li>
9794               </ul>
9795             </td>
9796
9797           </tr>
9798           <tr class="entries_header">
9799             <th class="th_details" colspan="6">Details</th>
9800           </tr>
9801           <tr class="entry_cont">
9802             <td class="entry_details" colspan="6">
9803               <p>Full-capability camera devices must always support OFF; camera devices that support
9804 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
9805 list FAST.<wbr/></p>
9806             </td>
9807           </tr>
9808
9809           <tr class="entries_header">
9810             <th class="th_details" colspan="6">HAL Implementation Details</th>
9811           </tr>
9812           <tr class="entry_cont">
9813             <td class="entry_details" colspan="6">
9814               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
9815 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
9816 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
9817 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
9818             </td>
9819           </tr>
9820
9821           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9822            <!-- end of entry -->
9823         
9824         
9825
9826       <!-- end of kind -->
9827       </tbody>
9828       <tr><td colspan="7" class="kind">dynamic</td></tr>
9829
9830       <thead class="entries_header">
9831         <tr>
9832           <th class="th_name">Property Name</th>
9833           <th class="th_type">Type</th>
9834           <th class="th_description">Description</th>
9835           <th class="th_units">Units</th>
9836           <th class="th_range">Range</th>
9837           <th class="th_hal_version">Initial HIDL HAL version</th>
9838           <th class="th_tags">Tags</th>
9839         </tr>
9840       </thead>
9841
9842       <tbody>
9843
9844         
9845
9846         
9847
9848         
9849
9850         
9851
9852                 
9853           <tr class="entry" id="dynamic_android.edge.mode">
9854             <td class="entry_name
9855              " rowspan="5">
9856               android.<wbr/>edge.<wbr/>mode
9857             </td>
9858             <td class="entry_type">
9859                 <span class="entry_type_name entry_type_name_enum">byte</span>
9860
9861               <span class="entry_type_visibility"> [public]</span>
9862
9863
9864               <span class="entry_type_hwlevel">[full] </span>
9865
9866
9867
9868                 <ul class="entry_type_enum">
9869                   <li>
9870                     <span class="entry_type_enum_name">OFF (v3.2)</span>
9871                     <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9872                   </li>
9873                   <li>
9874                     <span class="entry_type_enum_name">FAST (v3.2)</span>
9875                     <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9876 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9877 slow down frame rate relative to sensor.<wbr/></p></span>
9878                   </li>
9879                   <li>
9880                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9881                     <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>
9882                   </li>
9883                   <li>
9884                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9885                     <span class="entry_type_enum_optional">[optional]</span>
9886                     <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9887 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9888 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9889 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9890 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9891 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9892 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9893 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9894 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9895 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9896 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9897 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9898 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9899 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9900 reasonable preview quality.<wbr/></p>
9901 <p>This mode is guaranteed to be supported by devices that support either the
9902 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9903 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9904 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9905                   </li>
9906                 </ul>
9907
9908             </td> <!-- entry_type -->
9909
9910             <td class="entry_description">
9911               <p>Operation mode for edge
9912 enhancement.<wbr/></p>
9913             </td>
9914
9915             <td class="entry_units">
9916             </td>
9917
9918             <td class="entry_range">
9919               <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9920             </td>
9921
9922             <td class="entry_hal_version">
9923               <p>3.<wbr/>2</p>
9924             </td>
9925
9926             <td class="entry_tags">
9927               <ul class="entry_tags">
9928                   <li><a href="#tag_V1">V1</a></li>
9929                   <li><a href="#tag_REPROC">REPROC</a></li>
9930               </ul>
9931             </td>
9932
9933           </tr>
9934           <tr class="entries_header">
9935             <th class="th_details" colspan="6">Details</th>
9936           </tr>
9937           <tr class="entry_cont">
9938             <td class="entry_details" colspan="6">
9939               <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9940 no enhancement will be applied by the camera device.<wbr/></p>
9941 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9942 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9943 camera device will use the highest-quality enhancement algorithms,<wbr/>
9944 even if it slows down capture rate.<wbr/> FAST means the camera device will
9945 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9946 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9947 amount of enhancement applied.<wbr/></p>
9948 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9949 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9950 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9951 edge enhancement to low-resolution streams (below maximum recording resolution) to
9952 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9953 since those will be reprocessed later if necessary.<wbr/></p>
9954 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9955 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9956 The camera device may adjust its internal edge enhancement parameters for best
9957 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>
9958             </td>
9959           </tr>
9960
9961           <tr class="entries_header">
9962             <th class="th_details" colspan="6">HAL Implementation Details</th>
9963           </tr>
9964           <tr class="entry_cont">
9965             <td class="entry_details" colspan="6">
9966               <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
9967 adjust the internal edge enhancement reduction parameters appropriately to get the best
9968 quality images.<wbr/></p>
9969             </td>
9970           </tr>
9971
9972           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9973            <!-- end of entry -->
9974         
9975         
9976
9977       <!-- end of kind -->
9978       </tbody>
9979
9980   <!-- end of section -->
9981   <tr><td colspan="7" id="section_flash" class="section">flash</td></tr>
9982
9983
9984       <tr><td colspan="7" class="kind">controls</td></tr>
9985
9986       <thead class="entries_header">
9987         <tr>
9988           <th class="th_name">Property Name</th>
9989           <th class="th_type">Type</th>
9990           <th class="th_description">Description</th>
9991           <th class="th_units">Units</th>
9992           <th class="th_range">Range</th>
9993           <th class="th_hal_version">Initial HIDL HAL version</th>
9994           <th class="th_tags">Tags</th>
9995         </tr>
9996       </thead>
9997
9998       <tbody>
9999
10000         
10001
10002         
10003
10004         
10005
10006         
10007
10008                 
10009           <tr class="entry" id="controls_android.flash.firingPower">
10010             <td class="entry_name
10011              " rowspan="3">
10012               android.<wbr/>flash.<wbr/>firing<wbr/>Power
10013             </td>
10014             <td class="entry_type">
10015                 <span class="entry_type_name">byte</span>
10016
10017               <span class="entry_type_visibility"> [system]</span>
10018
10019
10020
10021
10022
10023
10024             </td> <!-- entry_type -->
10025
10026             <td class="entry_description">
10027               <p>Power for flash firing/<wbr/>torch</p>
10028             </td>
10029
10030             <td class="entry_units">
10031               10 is max power; 0 is no flash.<wbr/> Linear
10032             </td>
10033
10034             <td class="entry_range">
10035               <p>0 - 10</p>
10036             </td>
10037
10038             <td class="entry_hal_version">
10039               <p>3.<wbr/>2</p>
10040             </td>
10041
10042             <td class="entry_tags">
10043               <ul class="entry_tags">
10044                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10045               </ul>
10046             </td>
10047
10048           </tr>
10049           <tr class="entries_header">
10050             <th class="th_details" colspan="6">Details</th>
10051           </tr>
10052           <tr class="entry_cont">
10053             <td class="entry_details" colspan="6">
10054               <p>Power for snapshot may use a different scale than
10055 for torch mode.<wbr/> Only one entry for torch mode will be
10056 used</p>
10057             </td>
10058           </tr>
10059
10060
10061           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10062            <!-- end of entry -->
10063         
10064                 
10065           <tr class="entry" id="controls_android.flash.firingTime">
10066             <td class="entry_name
10067              " rowspan="3">
10068               android.<wbr/>flash.<wbr/>firing<wbr/>Time
10069             </td>
10070             <td class="entry_type">
10071                 <span class="entry_type_name">int64</span>
10072
10073               <span class="entry_type_visibility"> [system]</span>
10074
10075
10076
10077
10078
10079
10080             </td> <!-- entry_type -->
10081
10082             <td class="entry_description">
10083               <p>Firing time of flash relative to start of
10084 exposure</p>
10085             </td>
10086
10087             <td class="entry_units">
10088               nanoseconds
10089             </td>
10090
10091             <td class="entry_range">
10092               <p>0-(exposure time-flash duration)</p>
10093             </td>
10094
10095             <td class="entry_hal_version">
10096               <p>3.<wbr/>2</p>
10097             </td>
10098
10099             <td class="entry_tags">
10100               <ul class="entry_tags">
10101                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10102               </ul>
10103             </td>
10104
10105           </tr>
10106           <tr class="entries_header">
10107             <th class="th_details" colspan="6">Details</th>
10108           </tr>
10109           <tr class="entry_cont">
10110             <td class="entry_details" colspan="6">
10111               <p>Clamped to (0,<wbr/> exposure time - flash
10112 duration).<wbr/></p>
10113             </td>
10114           </tr>
10115
10116
10117           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10118            <!-- end of entry -->
10119         
10120                 
10121           <tr class="entry" id="controls_android.flash.mode">
10122             <td class="entry_name
10123              " rowspan="3">
10124               android.<wbr/>flash.<wbr/>mode
10125             </td>
10126             <td class="entry_type">
10127                 <span class="entry_type_name entry_type_name_enum">byte</span>
10128
10129               <span class="entry_type_visibility"> [public]</span>
10130
10131
10132               <span class="entry_type_hwlevel">[legacy] </span>
10133
10134
10135
10136                 <ul class="entry_type_enum">
10137                   <li>
10138                     <span class="entry_type_enum_name">OFF (v3.2)</span>
10139                     <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10140                   </li>
10141                   <li>
10142                     <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10143                     <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10144 for this capture.<wbr/></p></span>
10145                   </li>
10146                   <li>
10147                     <span class="entry_type_enum_name">TORCH (v3.2)</span>
10148                     <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10149                   </li>
10150                 </ul>
10151
10152             </td> <!-- entry_type -->
10153
10154             <td class="entry_description">
10155               <p>The desired mode for for the camera device's flash control.<wbr/></p>
10156             </td>
10157
10158             <td class="entry_units">
10159             </td>
10160
10161             <td class="entry_range">
10162             </td>
10163
10164             <td class="entry_hal_version">
10165               <p>3.<wbr/>2</p>
10166             </td>
10167
10168             <td class="entry_tags">
10169               <ul class="entry_tags">
10170                   <li><a href="#tag_BC">BC</a></li>
10171               </ul>
10172             </td>
10173
10174           </tr>
10175           <tr class="entries_header">
10176             <th class="th_details" colspan="6">Details</th>
10177           </tr>
10178           <tr class="entry_cont">
10179             <td class="entry_details" colspan="6">
10180               <p>This control is only effective when flash unit is available
10181 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10182 <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/>
10183 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10184 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10185 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10186 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10187 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10188 control should be used along with auto-exposure (AE) precapture metering sequence
10189 (<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>
10190 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10191 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10192 <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>
10193             </td>
10194           </tr>
10195
10196
10197           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10198            <!-- end of entry -->
10199         
10200         
10201
10202       <!-- end of kind -->
10203       </tbody>
10204       <tr><td colspan="7" class="kind">static</td></tr>
10205
10206       <thead class="entries_header">
10207         <tr>
10208           <th class="th_name">Property Name</th>
10209           <th class="th_type">Type</th>
10210           <th class="th_description">Description</th>
10211           <th class="th_units">Units</th>
10212           <th class="th_range">Range</th>
10213           <th class="th_hal_version">Initial HIDL HAL version</th>
10214           <th class="th_tags">Tags</th>
10215         </tr>
10216       </thead>
10217
10218       <tbody>
10219
10220         
10221
10222         
10223
10224         
10225
10226         
10227                 
10228             
10229
10230                 
10231           <tr class="entry" id="static_android.flash.info.available">
10232             <td class="entry_name
10233              " rowspan="3">
10234               android.<wbr/>flash.<wbr/>info.<wbr/>available
10235             </td>
10236             <td class="entry_type">
10237                 <span class="entry_type_name entry_type_name_enum">byte</span>
10238
10239               <span class="entry_type_visibility"> [public as boolean]</span>
10240
10241
10242               <span class="entry_type_hwlevel">[legacy] </span>
10243
10244
10245
10246                 <ul class="entry_type_enum">
10247                   <li>
10248                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
10249                   </li>
10250                   <li>
10251                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
10252                   </li>
10253                 </ul>
10254
10255             </td> <!-- entry_type -->
10256
10257             <td class="entry_description">
10258               <p>Whether this camera device has a
10259 flash unit.<wbr/></p>
10260             </td>
10261
10262             <td class="entry_units">
10263             </td>
10264
10265             <td class="entry_range">
10266             </td>
10267
10268             <td class="entry_hal_version">
10269               <p>3.<wbr/>2</p>
10270             </td>
10271
10272             <td class="entry_tags">
10273               <ul class="entry_tags">
10274                   <li><a href="#tag_BC">BC</a></li>
10275               </ul>
10276             </td>
10277
10278           </tr>
10279           <tr class="entries_header">
10280             <th class="th_details" colspan="6">Details</th>
10281           </tr>
10282           <tr class="entry_cont">
10283             <td class="entry_details" colspan="6">
10284               <p>Will be <code>false</code> if no flash is available.<wbr/></p>
10285 <p>If there is no flash unit,<wbr/> none of the flash controls do
10286 anything.<wbr/></p>
10287             </td>
10288           </tr>
10289
10290
10291           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10292            <!-- end of entry -->
10293         
10294                 
10295           <tr class="entry" id="static_android.flash.info.chargeDuration">
10296             <td class="entry_name
10297              " rowspan="3">
10298               android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
10299             </td>
10300             <td class="entry_type">
10301                 <span class="entry_type_name">int64</span>
10302
10303               <span class="entry_type_visibility"> [system]</span>
10304
10305
10306
10307
10308
10309
10310             </td> <!-- entry_type -->
10311
10312             <td class="entry_description">
10313               <p>Time taken before flash can fire
10314 again</p>
10315             </td>
10316
10317             <td class="entry_units">
10318               nanoseconds
10319             </td>
10320
10321             <td class="entry_range">
10322               <p>0-1e9</p>
10323             </td>
10324
10325             <td class="entry_hal_version">
10326               <p>3.<wbr/>2</p>
10327             </td>
10328
10329             <td class="entry_tags">
10330               <ul class="entry_tags">
10331                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10332               </ul>
10333             </td>
10334
10335           </tr>
10336           <tr class="entries_header">
10337             <th class="th_details" colspan="6">Details</th>
10338           </tr>
10339           <tr class="entry_cont">
10340             <td class="entry_details" colspan="6">
10341               <p>1 second too long/<wbr/>too short for recharge? Should
10342 this be power-dependent?</p>
10343             </td>
10344           </tr>
10345
10346
10347           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10348            <!-- end of entry -->
10349         
10350         
10351         
10352
10353                 
10354           <tr class="entry" id="static_android.flash.colorTemperature">
10355             <td class="entry_name
10356              " rowspan="1">
10357               android.<wbr/>flash.<wbr/>color<wbr/>Temperature
10358             </td>
10359             <td class="entry_type">
10360                 <span class="entry_type_name">byte</span>
10361
10362               <span class="entry_type_visibility"> [system]</span>
10363
10364
10365
10366
10367
10368
10369             </td> <!-- entry_type -->
10370
10371             <td class="entry_description">
10372               <p>The x,<wbr/>y whitepoint of the
10373 flash</p>
10374             </td>
10375
10376             <td class="entry_units">
10377               pair of floats
10378             </td>
10379
10380             <td class="entry_range">
10381               <p>0-1 for both</p>
10382             </td>
10383
10384             <td class="entry_hal_version">
10385               <p>3.<wbr/>2</p>
10386             </td>
10387
10388             <td class="entry_tags">
10389               <ul class="entry_tags">
10390                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10391               </ul>
10392             </td>
10393
10394           </tr>
10395
10396
10397           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10398            <!-- end of entry -->
10399         
10400                 
10401           <tr class="entry" id="static_android.flash.maxEnergy">
10402             <td class="entry_name
10403              " rowspan="1">
10404               android.<wbr/>flash.<wbr/>max<wbr/>Energy
10405             </td>
10406             <td class="entry_type">
10407                 <span class="entry_type_name">byte</span>
10408
10409               <span class="entry_type_visibility"> [system]</span>
10410
10411
10412
10413
10414
10415
10416             </td> <!-- entry_type -->
10417
10418             <td class="entry_description">
10419               <p>Max energy output of the flash for a full
10420 power single flash</p>
10421             </td>
10422
10423             <td class="entry_units">
10424               lumen-seconds
10425             </td>
10426
10427             <td class="entry_range">
10428               <p>&gt;= 0</p>
10429             </td>
10430
10431             <td class="entry_hal_version">
10432               <p>3.<wbr/>2</p>
10433             </td>
10434
10435             <td class="entry_tags">
10436               <ul class="entry_tags">
10437                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10438               </ul>
10439             </td>
10440
10441           </tr>
10442
10443
10444           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10445            <!-- end of entry -->
10446         
10447         
10448
10449       <!-- end of kind -->
10450       </tbody>
10451       <tr><td colspan="7" class="kind">dynamic</td></tr>
10452
10453       <thead class="entries_header">
10454         <tr>
10455           <th class="th_name">Property Name</th>
10456           <th class="th_type">Type</th>
10457           <th class="th_description">Description</th>
10458           <th class="th_units">Units</th>
10459           <th class="th_range">Range</th>
10460           <th class="th_hal_version">Initial HIDL HAL version</th>
10461           <th class="th_tags">Tags</th>
10462         </tr>
10463       </thead>
10464
10465       <tbody>
10466
10467         
10468
10469         
10470
10471         
10472
10473         
10474
10475                 
10476           <tr class="entry" id="dynamic_android.flash.firingPower">
10477             <td class="entry_name
10478              " rowspan="3">
10479               android.<wbr/>flash.<wbr/>firing<wbr/>Power
10480             </td>
10481             <td class="entry_type">
10482                 <span class="entry_type_name">byte</span>
10483
10484               <span class="entry_type_visibility"> [system]</span>
10485
10486
10487
10488
10489
10490
10491             </td> <!-- entry_type -->
10492
10493             <td class="entry_description">
10494               <p>Power for flash firing/<wbr/>torch</p>
10495             </td>
10496
10497             <td class="entry_units">
10498               10 is max power; 0 is no flash.<wbr/> Linear
10499             </td>
10500
10501             <td class="entry_range">
10502               <p>0 - 10</p>
10503             </td>
10504
10505             <td class="entry_hal_version">
10506               <p>3.<wbr/>2</p>
10507             </td>
10508
10509             <td class="entry_tags">
10510               <ul class="entry_tags">
10511                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10512               </ul>
10513             </td>
10514
10515           </tr>
10516           <tr class="entries_header">
10517             <th class="th_details" colspan="6">Details</th>
10518           </tr>
10519           <tr class="entry_cont">
10520             <td class="entry_details" colspan="6">
10521               <p>Power for snapshot may use a different scale than
10522 for torch mode.<wbr/> Only one entry for torch mode will be
10523 used</p>
10524             </td>
10525           </tr>
10526
10527
10528           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10529            <!-- end of entry -->
10530         
10531                 
10532           <tr class="entry" id="dynamic_android.flash.firingTime">
10533             <td class="entry_name
10534              " rowspan="3">
10535               android.<wbr/>flash.<wbr/>firing<wbr/>Time
10536             </td>
10537             <td class="entry_type">
10538                 <span class="entry_type_name">int64</span>
10539
10540               <span class="entry_type_visibility"> [system]</span>
10541
10542
10543
10544
10545
10546
10547             </td> <!-- entry_type -->
10548
10549             <td class="entry_description">
10550               <p>Firing time of flash relative to start of
10551 exposure</p>
10552             </td>
10553
10554             <td class="entry_units">
10555               nanoseconds
10556             </td>
10557
10558             <td class="entry_range">
10559               <p>0-(exposure time-flash duration)</p>
10560             </td>
10561
10562             <td class="entry_hal_version">
10563               <p>3.<wbr/>2</p>
10564             </td>
10565
10566             <td class="entry_tags">
10567               <ul class="entry_tags">
10568                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10569               </ul>
10570             </td>
10571
10572           </tr>
10573           <tr class="entries_header">
10574             <th class="th_details" colspan="6">Details</th>
10575           </tr>
10576           <tr class="entry_cont">
10577             <td class="entry_details" colspan="6">
10578               <p>Clamped to (0,<wbr/> exposure time - flash
10579 duration).<wbr/></p>
10580             </td>
10581           </tr>
10582
10583
10584           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10585            <!-- end of entry -->
10586         
10587                 
10588           <tr class="entry" id="dynamic_android.flash.mode">
10589             <td class="entry_name
10590              " rowspan="3">
10591               android.<wbr/>flash.<wbr/>mode
10592             </td>
10593             <td class="entry_type">
10594                 <span class="entry_type_name entry_type_name_enum">byte</span>
10595
10596               <span class="entry_type_visibility"> [public]</span>
10597
10598
10599               <span class="entry_type_hwlevel">[legacy] </span>
10600
10601
10602
10603                 <ul class="entry_type_enum">
10604                   <li>
10605                     <span class="entry_type_enum_name">OFF (v3.2)</span>
10606                     <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10607                   </li>
10608                   <li>
10609                     <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10610                     <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10611 for this capture.<wbr/></p></span>
10612                   </li>
10613                   <li>
10614                     <span class="entry_type_enum_name">TORCH (v3.2)</span>
10615                     <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10616                   </li>
10617                 </ul>
10618
10619             </td> <!-- entry_type -->
10620
10621             <td class="entry_description">
10622               <p>The desired mode for for the camera device's flash control.<wbr/></p>
10623             </td>
10624
10625             <td class="entry_units">
10626             </td>
10627
10628             <td class="entry_range">
10629             </td>
10630
10631             <td class="entry_hal_version">
10632               <p>3.<wbr/>2</p>
10633             </td>
10634
10635             <td class="entry_tags">
10636               <ul class="entry_tags">
10637                   <li><a href="#tag_BC">BC</a></li>
10638               </ul>
10639             </td>
10640
10641           </tr>
10642           <tr class="entries_header">
10643             <th class="th_details" colspan="6">Details</th>
10644           </tr>
10645           <tr class="entry_cont">
10646             <td class="entry_details" colspan="6">
10647               <p>This control is only effective when flash unit is available
10648 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10649 <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/>
10650 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10651 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10652 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10653 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10654 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10655 control should be used along with auto-exposure (AE) precapture metering sequence
10656 (<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>
10657 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10658 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10659 <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>
10660             </td>
10661           </tr>
10662
10663
10664           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10665            <!-- end of entry -->
10666         
10667                 
10668           <tr class="entry" id="dynamic_android.flash.state">
10669             <td class="entry_name
10670              " rowspan="3">
10671               android.<wbr/>flash.<wbr/>state
10672             </td>
10673             <td class="entry_type">
10674                 <span class="entry_type_name entry_type_name_enum">byte</span>
10675
10676               <span class="entry_type_visibility"> [public]</span>
10677
10678
10679               <span class="entry_type_hwlevel">[limited] </span>
10680
10681
10682
10683                 <ul class="entry_type_enum">
10684                   <li>
10685                     <span class="entry_type_enum_name">UNAVAILABLE (v3.2)</span>
10686                     <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
10687                   </li>
10688                   <li>
10689                     <span class="entry_type_enum_name">CHARGING (v3.2)</span>
10690                     <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
10691                   </li>
10692                   <li>
10693                     <span class="entry_type_enum_name">READY (v3.2)</span>
10694                     <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
10695                   </li>
10696                   <li>
10697                     <span class="entry_type_enum_name">FIRED (v3.2)</span>
10698                     <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
10699                   </li>
10700                   <li>
10701                     <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
10702                     <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
10703 <p>This is usually due to the next or previous frame having
10704 the flash fire,<wbr/> and the flash spilling into this capture
10705 due to hardware limitations.<wbr/></p></span>
10706                   </li>
10707                 </ul>
10708
10709             </td> <!-- entry_type -->
10710
10711             <td class="entry_description">
10712               <p>Current state of the flash
10713 unit.<wbr/></p>
10714             </td>
10715
10716             <td class="entry_units">
10717             </td>
10718
10719             <td class="entry_range">
10720             </td>
10721
10722             <td class="entry_hal_version">
10723               <p>3.<wbr/>2</p>
10724             </td>
10725
10726             <td class="entry_tags">
10727             </td>
10728
10729           </tr>
10730           <tr class="entries_header">
10731             <th class="th_details" colspan="6">Details</th>
10732           </tr>
10733           <tr class="entry_cont">
10734             <td class="entry_details" colspan="6">
10735               <p>When the camera device doesn't have flash unit
10736 (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/>
10737 Other states indicate the current flash status.<wbr/></p>
10738 <p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
10739 <ul>
10740 <li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
10741 <li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
10742    will always return FIRED.<wbr/></li>
10743 <li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
10744    will always return FIRED.<wbr/></li>
10745 </ul>
10746 <p>In all other conditions the state will not be available on
10747 LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
10748             </td>
10749           </tr>
10750
10751
10752           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10753            <!-- end of entry -->
10754         
10755         
10756
10757       <!-- end of kind -->
10758       </tbody>
10759
10760   <!-- end of section -->
10761   <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr>
10762
10763
10764       <tr><td colspan="7" class="kind">controls</td></tr>
10765
10766       <thead class="entries_header">
10767         <tr>
10768           <th class="th_name">Property Name</th>
10769           <th class="th_type">Type</th>
10770           <th class="th_description">Description</th>
10771           <th class="th_units">Units</th>
10772           <th class="th_range">Range</th>
10773           <th class="th_hal_version">Initial HIDL HAL version</th>
10774           <th class="th_tags">Tags</th>
10775         </tr>
10776       </thead>
10777
10778       <tbody>
10779
10780         
10781
10782         
10783
10784         
10785
10786         
10787
10788                 
10789           <tr class="entry" id="controls_android.hotPixel.mode">
10790             <td class="entry_name
10791              " rowspan="3">
10792               android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10793             </td>
10794             <td class="entry_type">
10795                 <span class="entry_type_name entry_type_name_enum">byte</span>
10796
10797               <span class="entry_type_visibility"> [public]</span>
10798
10799
10800
10801
10802
10803                 <ul class="entry_type_enum">
10804                   <li>
10805                     <span class="entry_type_enum_name">OFF (v3.2)</span>
10806                     <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10807 <p>The frame rate must not be reduced relative to sensor raw output
10808 for this option.<wbr/></p>
10809 <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>
10810                   </li>
10811                   <li>
10812                     <span class="entry_type_enum_name">FAST (v3.2)</span>
10813                     <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10814 rate relative to sensor raw output.<wbr/></p>
10815 <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>
10816                   </li>
10817                   <li>
10818                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
10819                     <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10820 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10821 <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>
10822                   </li>
10823                 </ul>
10824
10825             </td> <!-- entry_type -->
10826
10827             <td class="entry_description">
10828               <p>Operational mode for hot pixel correction.<wbr/></p>
10829             </td>
10830
10831             <td class="entry_units">
10832             </td>
10833
10834             <td class="entry_range">
10835               <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10836             </td>
10837
10838             <td class="entry_hal_version">
10839               <p>3.<wbr/>2</p>
10840             </td>
10841
10842             <td class="entry_tags">
10843               <ul class="entry_tags">
10844                   <li><a href="#tag_V1">V1</a></li>
10845                   <li><a href="#tag_RAW">RAW</a></li>
10846               </ul>
10847             </td>
10848
10849           </tr>
10850           <tr class="entries_header">
10851             <th class="th_details" colspan="6">Details</th>
10852           </tr>
10853           <tr class="entry_cont">
10854             <td class="entry_details" colspan="6">
10855               <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10856 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10857 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10858             </td>
10859           </tr>
10860
10861
10862           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10863            <!-- end of entry -->
10864         
10865         
10866
10867       <!-- end of kind -->
10868       </tbody>
10869       <tr><td colspan="7" class="kind">static</td></tr>
10870
10871       <thead class="entries_header">
10872         <tr>
10873           <th class="th_name">Property Name</th>
10874           <th class="th_type">Type</th>
10875           <th class="th_description">Description</th>
10876           <th class="th_units">Units</th>
10877           <th class="th_range">Range</th>
10878           <th class="th_hal_version">Initial HIDL HAL version</th>
10879           <th class="th_tags">Tags</th>
10880         </tr>
10881       </thead>
10882
10883       <tbody>
10884
10885         
10886
10887         
10888
10889         
10890
10891         
10892
10893                 
10894           <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
10895             <td class="entry_name
10896              " rowspan="5">
10897               android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
10898             </td>
10899             <td class="entry_type">
10900                 <span class="entry_type_name">byte</span>
10901                 <span class="entry_type_container">x</span>
10902
10903                 <span class="entry_type_array">
10904                   n
10905                 </span>
10906               <span class="entry_type_visibility"> [public as enumList]</span>
10907
10908
10909
10910
10911                 <div class="entry_type_notes">list of enums</div>
10912
10913
10914             </td> <!-- entry_type -->
10915
10916             <td class="entry_description">
10917               <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
10918 camera device.<wbr/></p>
10919             </td>
10920
10921             <td class="entry_units">
10922             </td>
10923
10924             <td class="entry_range">
10925               <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
10926             </td>
10927
10928             <td class="entry_hal_version">
10929               <p>3.<wbr/>2</p>
10930             </td>
10931
10932             <td class="entry_tags">
10933               <ul class="entry_tags">
10934                   <li><a href="#tag_V1">V1</a></li>
10935                   <li><a href="#tag_RAW">RAW</a></li>
10936               </ul>
10937             </td>
10938
10939           </tr>
10940           <tr class="entries_header">
10941             <th class="th_details" colspan="6">Details</th>
10942           </tr>
10943           <tr class="entry_cont">
10944             <td class="entry_details" colspan="6">
10945               <p>FULL mode camera devices will always support FAST.<wbr/></p>
10946             </td>
10947           </tr>
10948
10949           <tr class="entries_header">
10950             <th class="th_details" colspan="6">HAL Implementation Details</th>
10951           </tr>
10952           <tr class="entry_cont">
10953             <td class="entry_details" colspan="6">
10954               <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
10955 pixels than actual pixels on the camera sensor.<wbr/>
10956 HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
10957 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
10958 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
10959 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
10960             </td>
10961           </tr>
10962
10963           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10964            <!-- end of entry -->
10965         
10966         
10967
10968       <!-- end of kind -->
10969       </tbody>
10970       <tr><td colspan="7" class="kind">dynamic</td></tr>
10971
10972       <thead class="entries_header">
10973         <tr>
10974           <th class="th_name">Property Name</th>
10975           <th class="th_type">Type</th>
10976           <th class="th_description">Description</th>
10977           <th class="th_units">Units</th>
10978           <th class="th_range">Range</th>
10979           <th class="th_hal_version">Initial HIDL HAL version</th>
10980           <th class="th_tags">Tags</th>
10981         </tr>
10982       </thead>
10983
10984       <tbody>
10985
10986         
10987
10988         
10989
10990         
10991
10992         
10993
10994                 
10995           <tr class="entry" id="dynamic_android.hotPixel.mode">
10996             <td class="entry_name
10997              " rowspan="3">
10998               android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10999             </td>
11000             <td class="entry_type">
11001                 <span class="entry_type_name entry_type_name_enum">byte</span>
11002
11003               <span class="entry_type_visibility"> [public]</span>
11004
11005
11006
11007
11008
11009                 <ul class="entry_type_enum">
11010                   <li>
11011                     <span class="entry_type_enum_name">OFF (v3.2)</span>
11012                     <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
11013 <p>The frame rate must not be reduced relative to sensor raw output
11014 for this option.<wbr/></p>
11015 <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>
11016                   </li>
11017                   <li>
11018                     <span class="entry_type_enum_name">FAST (v3.2)</span>
11019                     <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
11020 rate relative to sensor raw output.<wbr/></p>
11021 <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>
11022                   </li>
11023                   <li>
11024                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
11025                     <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
11026 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
11027 <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>
11028                   </li>
11029                 </ul>
11030
11031             </td> <!-- entry_type -->
11032
11033             <td class="entry_description">
11034               <p>Operational mode for hot pixel correction.<wbr/></p>
11035             </td>
11036
11037             <td class="entry_units">
11038             </td>
11039
11040             <td class="entry_range">
11041               <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
11042             </td>
11043
11044             <td class="entry_hal_version">
11045               <p>3.<wbr/>2</p>
11046             </td>
11047
11048             <td class="entry_tags">
11049               <ul class="entry_tags">
11050                   <li><a href="#tag_V1">V1</a></li>
11051                   <li><a href="#tag_RAW">RAW</a></li>
11052               </ul>
11053             </td>
11054
11055           </tr>
11056           <tr class="entries_header">
11057             <th class="th_details" colspan="6">Details</th>
11058           </tr>
11059           <tr class="entry_cont">
11060             <td class="entry_details" colspan="6">
11061               <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
11062 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
11063 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
11064             </td>
11065           </tr>
11066
11067
11068           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11069            <!-- end of entry -->
11070         
11071         
11072
11073       <!-- end of kind -->
11074       </tbody>
11075
11076   <!-- end of section -->
11077   <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr>
11078
11079
11080       <tr><td colspan="7" class="kind">controls</td></tr>
11081
11082       <thead class="entries_header">
11083         <tr>
11084           <th class="th_name">Property Name</th>
11085           <th class="th_type">Type</th>
11086           <th class="th_description">Description</th>
11087           <th class="th_units">Units</th>
11088           <th class="th_range">Range</th>
11089           <th class="th_hal_version">Initial HIDL HAL version</th>
11090           <th class="th_tags">Tags</th>
11091         </tr>
11092       </thead>
11093
11094       <tbody>
11095
11096         
11097
11098         
11099
11100         
11101
11102         
11103
11104                 
11105           <tr class="entry" id="controls_android.jpeg.gpsLocation">
11106             <td class="entry_name
11107              " rowspan="3">
11108               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11109             </td>
11110             <td class="entry_type">
11111                 <span class="entry_type_name">byte</span>
11112
11113               <span class="entry_type_visibility"> [java_public as location]</span>
11114
11115               <span class="entry_type_synthetic">[synthetic] </span>
11116
11117               <span class="entry_type_hwlevel">[legacy] </span>
11118
11119
11120
11121
11122             </td> <!-- entry_type -->
11123
11124             <td class="entry_description">
11125               <p>A location object to use when generating image GPS metadata.<wbr/></p>
11126             </td>
11127
11128             <td class="entry_units">
11129             </td>
11130
11131             <td class="entry_range">
11132             </td>
11133
11134             <td class="entry_hal_version">
11135               <p>3.<wbr/>2</p>
11136             </td>
11137
11138             <td class="entry_tags">
11139             </td>
11140
11141           </tr>
11142           <tr class="entries_header">
11143             <th class="th_details" colspan="6">Details</th>
11144           </tr>
11145           <tr class="entry_cont">
11146             <td class="entry_details" colspan="6">
11147               <p>Setting a location object in a request will include the GPS coordinates of the location
11148 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11149 viewed by anyone who receives the JPEG image.<wbr/></p>
11150             </td>
11151           </tr>
11152
11153
11154           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11155            <!-- end of entry -->
11156         
11157                 
11158           <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
11159             <td class="entry_name
11160              " rowspan="1">
11161               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11162             </td>
11163             <td class="entry_type">
11164                 <span class="entry_type_name">double</span>
11165                 <span class="entry_type_container">x</span>
11166
11167                 <span class="entry_type_array">
11168                   3
11169                 </span>
11170               <span class="entry_type_visibility"> [ndk_public]</span>
11171
11172
11173               <span class="entry_type_hwlevel">[legacy] </span>
11174
11175
11176                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11177
11178
11179             </td> <!-- entry_type -->
11180
11181             <td class="entry_description">
11182               <p>GPS coordinates to include in output JPEG
11183 EXIF.<wbr/></p>
11184             </td>
11185
11186             <td class="entry_units">
11187             </td>
11188
11189             <td class="entry_range">
11190               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11191             </td>
11192
11193             <td class="entry_hal_version">
11194               <p>3.<wbr/>2</p>
11195             </td>
11196
11197             <td class="entry_tags">
11198               <ul class="entry_tags">
11199                   <li><a href="#tag_BC">BC</a></li>
11200               </ul>
11201             </td>
11202
11203           </tr>
11204
11205
11206           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11207            <!-- end of entry -->
11208         
11209                 
11210           <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
11211             <td class="entry_name
11212              " rowspan="1">
11213               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11214             </td>
11215             <td class="entry_type">
11216                 <span class="entry_type_name">byte</span>
11217
11218               <span class="entry_type_visibility"> [ndk_public as string]</span>
11219
11220
11221               <span class="entry_type_hwlevel">[legacy] </span>
11222
11223
11224
11225
11226             </td> <!-- entry_type -->
11227
11228             <td class="entry_description">
11229               <p>32 characters describing GPS algorithm to
11230 include in EXIF.<wbr/></p>
11231             </td>
11232
11233             <td class="entry_units">
11234               UTF-8 null-terminated string
11235             </td>
11236
11237             <td class="entry_range">
11238             </td>
11239
11240             <td class="entry_hal_version">
11241               <p>3.<wbr/>2</p>
11242             </td>
11243
11244             <td class="entry_tags">
11245               <ul class="entry_tags">
11246                   <li><a href="#tag_BC">BC</a></li>
11247               </ul>
11248             </td>
11249
11250           </tr>
11251
11252
11253           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11254            <!-- end of entry -->
11255         
11256                 
11257           <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
11258             <td class="entry_name
11259              " rowspan="1">
11260               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11261             </td>
11262             <td class="entry_type">
11263                 <span class="entry_type_name">int64</span>
11264
11265               <span class="entry_type_visibility"> [ndk_public]</span>
11266
11267
11268               <span class="entry_type_hwlevel">[legacy] </span>
11269
11270
11271
11272
11273             </td> <!-- entry_type -->
11274
11275             <td class="entry_description">
11276               <p>Time GPS fix was made to include in
11277 EXIF.<wbr/></p>
11278             </td>
11279
11280             <td class="entry_units">
11281               UTC in seconds since January 1,<wbr/> 1970
11282             </td>
11283
11284             <td class="entry_range">
11285             </td>
11286
11287             <td class="entry_hal_version">
11288               <p>3.<wbr/>2</p>
11289             </td>
11290
11291             <td class="entry_tags">
11292               <ul class="entry_tags">
11293                   <li><a href="#tag_BC">BC</a></li>
11294               </ul>
11295             </td>
11296
11297           </tr>
11298
11299
11300           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11301            <!-- end of entry -->
11302         
11303                 
11304           <tr class="entry" id="controls_android.jpeg.orientation">
11305             <td class="entry_name
11306              " rowspan="3">
11307               android.<wbr/>jpeg.<wbr/>orientation
11308             </td>
11309             <td class="entry_type">
11310                 <span class="entry_type_name">int32</span>
11311
11312               <span class="entry_type_visibility"> [public]</span>
11313
11314
11315               <span class="entry_type_hwlevel">[legacy] </span>
11316
11317
11318
11319
11320             </td> <!-- entry_type -->
11321
11322             <td class="entry_description">
11323               <p>The orientation for a JPEG image.<wbr/></p>
11324             </td>
11325
11326             <td class="entry_units">
11327               Degrees in multiples of 90
11328             </td>
11329
11330             <td class="entry_range">
11331               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11332             </td>
11333
11334             <td class="entry_hal_version">
11335               <p>3.<wbr/>2</p>
11336             </td>
11337
11338             <td class="entry_tags">
11339               <ul class="entry_tags">
11340                   <li><a href="#tag_BC">BC</a></li>
11341               </ul>
11342             </td>
11343
11344           </tr>
11345           <tr class="entries_header">
11346             <th class="th_details" colspan="6">Details</th>
11347           </tr>
11348           <tr class="entry_cont">
11349             <td class="entry_details" colspan="6">
11350               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11351 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11352 upright.<wbr/></p>
11353 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11354 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11355 the thumbnail data will also be rotated.<wbr/></p>
11356 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11357 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11358 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
11359 sample code may be used:</p>
11360 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11361     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11362     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11363
11364     //<wbr/> Round device orientation to a multiple of 90
11365     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11366
11367     //<wbr/> Reverse device orientation for front-facing cameras
11368     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11369     if (facingFront) deviceOrientation = -deviceOrientation;
11370
11371     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11372     //<wbr/> the image upright relative to the device orientation
11373     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11374
11375     return jpegOrientation;
11376 }
11377 </code></pre>
11378             </td>
11379           </tr>
11380
11381
11382           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11383            <!-- end of entry -->
11384         
11385                 
11386           <tr class="entry" id="controls_android.jpeg.quality">
11387             <td class="entry_name
11388              " rowspan="3">
11389               android.<wbr/>jpeg.<wbr/>quality
11390             </td>
11391             <td class="entry_type">
11392                 <span class="entry_type_name">byte</span>
11393
11394               <span class="entry_type_visibility"> [public]</span>
11395
11396
11397               <span class="entry_type_hwlevel">[legacy] </span>
11398
11399
11400
11401
11402             </td> <!-- entry_type -->
11403
11404             <td class="entry_description">
11405               <p>Compression quality of the final JPEG
11406 image.<wbr/></p>
11407             </td>
11408
11409             <td class="entry_units">
11410             </td>
11411
11412             <td class="entry_range">
11413               <p>1-100; larger is higher quality</p>
11414             </td>
11415
11416             <td class="entry_hal_version">
11417               <p>3.<wbr/>2</p>
11418             </td>
11419
11420             <td class="entry_tags">
11421               <ul class="entry_tags">
11422                   <li><a href="#tag_BC">BC</a></li>
11423               </ul>
11424             </td>
11425
11426           </tr>
11427           <tr class="entries_header">
11428             <th class="th_details" colspan="6">Details</th>
11429           </tr>
11430           <tr class="entry_cont">
11431             <td class="entry_details" colspan="6">
11432               <p>85-95 is typical usage range.<wbr/></p>
11433             </td>
11434           </tr>
11435
11436
11437           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11438            <!-- end of entry -->
11439         
11440                 
11441           <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
11442             <td class="entry_name
11443              " rowspan="1">
11444               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11445             </td>
11446             <td class="entry_type">
11447                 <span class="entry_type_name">byte</span>
11448
11449               <span class="entry_type_visibility"> [public]</span>
11450
11451
11452               <span class="entry_type_hwlevel">[legacy] </span>
11453
11454
11455
11456
11457             </td> <!-- entry_type -->
11458
11459             <td class="entry_description">
11460               <p>Compression quality of JPEG
11461 thumbnail.<wbr/></p>
11462             </td>
11463
11464             <td class="entry_units">
11465             </td>
11466
11467             <td class="entry_range">
11468               <p>1-100; larger is higher quality</p>
11469             </td>
11470
11471             <td class="entry_hal_version">
11472               <p>3.<wbr/>2</p>
11473             </td>
11474
11475             <td class="entry_tags">
11476               <ul class="entry_tags">
11477                   <li><a href="#tag_BC">BC</a></li>
11478               </ul>
11479             </td>
11480
11481           </tr>
11482
11483
11484           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11485            <!-- end of entry -->
11486         
11487                 
11488           <tr class="entry" id="controls_android.jpeg.thumbnailSize">
11489             <td class="entry_name
11490              " rowspan="5">
11491               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11492             </td>
11493             <td class="entry_type">
11494                 <span class="entry_type_name">int32</span>
11495                 <span class="entry_type_container">x</span>
11496
11497                 <span class="entry_type_array">
11498                   2
11499                 </span>
11500               <span class="entry_type_visibility"> [public as size]</span>
11501
11502
11503               <span class="entry_type_hwlevel">[legacy] </span>
11504
11505
11506
11507
11508             </td> <!-- entry_type -->
11509
11510             <td class="entry_description">
11511               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11512             </td>
11513
11514             <td class="entry_units">
11515             </td>
11516
11517             <td class="entry_range">
11518               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11519             </td>
11520
11521             <td class="entry_hal_version">
11522               <p>3.<wbr/>2</p>
11523             </td>
11524
11525             <td class="entry_tags">
11526               <ul class="entry_tags">
11527                   <li><a href="#tag_BC">BC</a></li>
11528               </ul>
11529             </td>
11530
11531           </tr>
11532           <tr class="entries_header">
11533             <th class="th_details" colspan="6">Details</th>
11534           </tr>
11535           <tr class="entry_cont">
11536             <td class="entry_details" colspan="6">
11537               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11538 but the captured JPEG will still be a valid image.<wbr/></p>
11539 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11540 should have the same aspect ratio as the main JPEG output.<wbr/></p>
11541 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11542 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11543 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
11544 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11545 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11546 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11547 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11548 the camera device will handle thumbnail rotation in one of the following ways:</p>
11549 <ul>
11550 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11551   and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11552 <li>Rotate the jpeg and thumbnail image data and not set
11553   <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11554   case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11555   capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11556   orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11557   size.<wbr/></li>
11558 </ul>
11559             </td>
11560           </tr>
11561
11562           <tr class="entries_header">
11563             <th class="th_details" colspan="6">HAL Implementation Details</th>
11564           </tr>
11565           <tr class="entry_cont">
11566             <td class="entry_details" colspan="6">
11567               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11568 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11569 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11570 thumbnail image cropping.<wbr/></p>
11571             </td>
11572           </tr>
11573
11574           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11575            <!-- end of entry -->
11576         
11577         
11578
11579       <!-- end of kind -->
11580       </tbody>
11581       <tr><td colspan="7" class="kind">static</td></tr>
11582
11583       <thead class="entries_header">
11584         <tr>
11585           <th class="th_name">Property Name</th>
11586           <th class="th_type">Type</th>
11587           <th class="th_description">Description</th>
11588           <th class="th_units">Units</th>
11589           <th class="th_range">Range</th>
11590           <th class="th_hal_version">Initial HIDL HAL version</th>
11591           <th class="th_tags">Tags</th>
11592         </tr>
11593       </thead>
11594
11595       <tbody>
11596
11597         
11598
11599         
11600
11601         
11602
11603         
11604
11605                 
11606           <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
11607             <td class="entry_name
11608              " rowspan="3">
11609               android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
11610             </td>
11611             <td class="entry_type">
11612                 <span class="entry_type_name">int32</span>
11613                 <span class="entry_type_container">x</span>
11614
11615                 <span class="entry_type_array">
11616                   2 x n
11617                 </span>
11618               <span class="entry_type_visibility"> [public as size]</span>
11619
11620
11621               <span class="entry_type_hwlevel">[legacy] </span>
11622
11623
11624
11625
11626             </td> <!-- entry_type -->
11627
11628             <td class="entry_description">
11629               <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
11630 camera device.<wbr/></p>
11631             </td>
11632
11633             <td class="entry_units">
11634             </td>
11635
11636             <td class="entry_range">
11637             </td>
11638
11639             <td class="entry_hal_version">
11640               <p>3.<wbr/>2</p>
11641             </td>
11642
11643             <td class="entry_tags">
11644               <ul class="entry_tags">
11645                   <li><a href="#tag_BC">BC</a></li>
11646               </ul>
11647             </td>
11648
11649           </tr>
11650           <tr class="entries_header">
11651             <th class="th_details" colspan="6">Details</th>
11652           </tr>
11653           <tr class="entry_cont">
11654             <td class="entry_details" colspan="6">
11655               <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
11656 thumbnail should be generated.<wbr/></p>
11657 <p>Below condiditions will be satisfied for this size list:</p>
11658 <ul>
11659 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
11660 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
11661 <li>The aspect ratio of the largest thumbnail size will be same as the
11662 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/>
11663 The largest size is defined as the size that has the largest pixel area
11664 in a given size list.<wbr/></li>
11665 <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
11666 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
11667 and vice versa.<wbr/></li>
11668 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
11669 </ul>
11670             </td>
11671           </tr>
11672
11673
11674           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11675            <!-- end of entry -->
11676         
11677                 
11678           <tr class="entry" id="static_android.jpeg.maxSize">
11679             <td class="entry_name
11680              " rowspan="3">
11681               android.<wbr/>jpeg.<wbr/>max<wbr/>Size
11682             </td>
11683             <td class="entry_type">
11684                 <span class="entry_type_name">int32</span>
11685
11686               <span class="entry_type_visibility"> [system]</span>
11687
11688
11689
11690
11691
11692
11693             </td> <!-- entry_type -->
11694
11695             <td class="entry_description">
11696               <p>Maximum size in bytes for the compressed
11697 JPEG buffer</p>
11698             </td>
11699
11700             <td class="entry_units">
11701             </td>
11702
11703             <td class="entry_range">
11704               <p>Must be large enough to fit any JPEG produced by
11705 the camera</p>
11706             </td>
11707
11708             <td class="entry_hal_version">
11709               <p>3.<wbr/>2</p>
11710             </td>
11711
11712             <td class="entry_tags">
11713             </td>
11714
11715           </tr>
11716           <tr class="entries_header">
11717             <th class="th_details" colspan="6">Details</th>
11718           </tr>
11719           <tr class="entry_cont">
11720             <td class="entry_details" colspan="6">
11721               <p>This is used for sizing the gralloc buffers for
11722 JPEG</p>
11723             </td>
11724           </tr>
11725
11726
11727           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11728            <!-- end of entry -->
11729         
11730         
11731
11732       <!-- end of kind -->
11733       </tbody>
11734       <tr><td colspan="7" class="kind">dynamic</td></tr>
11735
11736       <thead class="entries_header">
11737         <tr>
11738           <th class="th_name">Property Name</th>
11739           <th class="th_type">Type</th>
11740           <th class="th_description">Description</th>
11741           <th class="th_units">Units</th>
11742           <th class="th_range">Range</th>
11743           <th class="th_hal_version">Initial HIDL HAL version</th>
11744           <th class="th_tags">Tags</th>
11745         </tr>
11746       </thead>
11747
11748       <tbody>
11749
11750         
11751
11752         
11753
11754         
11755
11756         
11757
11758                 
11759           <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
11760             <td class="entry_name
11761              " rowspan="3">
11762               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11763             </td>
11764             <td class="entry_type">
11765                 <span class="entry_type_name">byte</span>
11766
11767               <span class="entry_type_visibility"> [java_public as location]</span>
11768
11769               <span class="entry_type_synthetic">[synthetic] </span>
11770
11771               <span class="entry_type_hwlevel">[legacy] </span>
11772
11773
11774
11775
11776             </td> <!-- entry_type -->
11777
11778             <td class="entry_description">
11779               <p>A location object to use when generating image GPS metadata.<wbr/></p>
11780             </td>
11781
11782             <td class="entry_units">
11783             </td>
11784
11785             <td class="entry_range">
11786             </td>
11787
11788             <td class="entry_hal_version">
11789               <p>3.<wbr/>2</p>
11790             </td>
11791
11792             <td class="entry_tags">
11793             </td>
11794
11795           </tr>
11796           <tr class="entries_header">
11797             <th class="th_details" colspan="6">Details</th>
11798           </tr>
11799           <tr class="entry_cont">
11800             <td class="entry_details" colspan="6">
11801               <p>Setting a location object in a request will include the GPS coordinates of the location
11802 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11803 viewed by anyone who receives the JPEG image.<wbr/></p>
11804             </td>
11805           </tr>
11806
11807
11808           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11809            <!-- end of entry -->
11810         
11811                 
11812           <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
11813             <td class="entry_name
11814              " rowspan="1">
11815               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11816             </td>
11817             <td class="entry_type">
11818                 <span class="entry_type_name">double</span>
11819                 <span class="entry_type_container">x</span>
11820
11821                 <span class="entry_type_array">
11822                   3
11823                 </span>
11824               <span class="entry_type_visibility"> [ndk_public]</span>
11825
11826
11827               <span class="entry_type_hwlevel">[legacy] </span>
11828
11829
11830                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11831
11832
11833             </td> <!-- entry_type -->
11834
11835             <td class="entry_description">
11836               <p>GPS coordinates to include in output JPEG
11837 EXIF.<wbr/></p>
11838             </td>
11839
11840             <td class="entry_units">
11841             </td>
11842
11843             <td class="entry_range">
11844               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11845             </td>
11846
11847             <td class="entry_hal_version">
11848               <p>3.<wbr/>2</p>
11849             </td>
11850
11851             <td class="entry_tags">
11852               <ul class="entry_tags">
11853                   <li><a href="#tag_BC">BC</a></li>
11854               </ul>
11855             </td>
11856
11857           </tr>
11858
11859
11860           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11861            <!-- end of entry -->
11862         
11863                 
11864           <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
11865             <td class="entry_name
11866              " rowspan="1">
11867               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11868             </td>
11869             <td class="entry_type">
11870                 <span class="entry_type_name">byte</span>
11871
11872               <span class="entry_type_visibility"> [ndk_public as string]</span>
11873
11874
11875               <span class="entry_type_hwlevel">[legacy] </span>
11876
11877
11878
11879
11880             </td> <!-- entry_type -->
11881
11882             <td class="entry_description">
11883               <p>32 characters describing GPS algorithm to
11884 include in EXIF.<wbr/></p>
11885             </td>
11886
11887             <td class="entry_units">
11888               UTF-8 null-terminated string
11889             </td>
11890
11891             <td class="entry_range">
11892             </td>
11893
11894             <td class="entry_hal_version">
11895               <p>3.<wbr/>2</p>
11896             </td>
11897
11898             <td class="entry_tags">
11899               <ul class="entry_tags">
11900                   <li><a href="#tag_BC">BC</a></li>
11901               </ul>
11902             </td>
11903
11904           </tr>
11905
11906
11907           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11908            <!-- end of entry -->
11909         
11910                 
11911           <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
11912             <td class="entry_name
11913              " rowspan="1">
11914               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11915             </td>
11916             <td class="entry_type">
11917                 <span class="entry_type_name">int64</span>
11918
11919               <span class="entry_type_visibility"> [ndk_public]</span>
11920
11921
11922               <span class="entry_type_hwlevel">[legacy] </span>
11923
11924
11925
11926
11927             </td> <!-- entry_type -->
11928
11929             <td class="entry_description">
11930               <p>Time GPS fix was made to include in
11931 EXIF.<wbr/></p>
11932             </td>
11933
11934             <td class="entry_units">
11935               UTC in seconds since January 1,<wbr/> 1970
11936             </td>
11937
11938             <td class="entry_range">
11939             </td>
11940
11941             <td class="entry_hal_version">
11942               <p>3.<wbr/>2</p>
11943             </td>
11944
11945             <td class="entry_tags">
11946               <ul class="entry_tags">
11947                   <li><a href="#tag_BC">BC</a></li>
11948               </ul>
11949             </td>
11950
11951           </tr>
11952
11953
11954           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11955            <!-- end of entry -->
11956         
11957                 
11958           <tr class="entry" id="dynamic_android.jpeg.orientation">
11959             <td class="entry_name
11960              " rowspan="3">
11961               android.<wbr/>jpeg.<wbr/>orientation
11962             </td>
11963             <td class="entry_type">
11964                 <span class="entry_type_name">int32</span>
11965
11966               <span class="entry_type_visibility"> [public]</span>
11967
11968
11969               <span class="entry_type_hwlevel">[legacy] </span>
11970
11971
11972
11973
11974             </td> <!-- entry_type -->
11975
11976             <td class="entry_description">
11977               <p>The orientation for a JPEG image.<wbr/></p>
11978             </td>
11979
11980             <td class="entry_units">
11981               Degrees in multiples of 90
11982             </td>
11983
11984             <td class="entry_range">
11985               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11986             </td>
11987
11988             <td class="entry_hal_version">
11989               <p>3.<wbr/>2</p>
11990             </td>
11991
11992             <td class="entry_tags">
11993               <ul class="entry_tags">
11994                   <li><a href="#tag_BC">BC</a></li>
11995               </ul>
11996             </td>
11997
11998           </tr>
11999           <tr class="entries_header">
12000             <th class="th_details" colspan="6">Details</th>
12001           </tr>
12002           <tr class="entry_cont">
12003             <td class="entry_details" colspan="6">
12004               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
12005 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
12006 upright.<wbr/></p>
12007 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
12008 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
12009 the thumbnail data will also be rotated.<wbr/></p>
12010 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
12011 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
12012 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
12013 sample code may be used:</p>
12014 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
12015     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
12016     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
12017
12018     //<wbr/> Round device orientation to a multiple of 90
12019     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
12020
12021     //<wbr/> Reverse device orientation for front-facing cameras
12022     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
12023     if (facingFront) deviceOrientation = -deviceOrientation;
12024
12025     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
12026     //<wbr/> the image upright relative to the device orientation
12027     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
12028
12029     return jpegOrientation;
12030 }
12031 </code></pre>
12032             </td>
12033           </tr>
12034
12035
12036           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12037            <!-- end of entry -->
12038         
12039                 
12040           <tr class="entry" id="dynamic_android.jpeg.quality">
12041             <td class="entry_name
12042              " rowspan="3">
12043               android.<wbr/>jpeg.<wbr/>quality
12044             </td>
12045             <td class="entry_type">
12046                 <span class="entry_type_name">byte</span>
12047
12048               <span class="entry_type_visibility"> [public]</span>
12049
12050
12051               <span class="entry_type_hwlevel">[legacy] </span>
12052
12053
12054
12055
12056             </td> <!-- entry_type -->
12057
12058             <td class="entry_description">
12059               <p>Compression quality of the final JPEG
12060 image.<wbr/></p>
12061             </td>
12062
12063             <td class="entry_units">
12064             </td>
12065
12066             <td class="entry_range">
12067               <p>1-100; larger is higher quality</p>
12068             </td>
12069
12070             <td class="entry_hal_version">
12071               <p>3.<wbr/>2</p>
12072             </td>
12073
12074             <td class="entry_tags">
12075               <ul class="entry_tags">
12076                   <li><a href="#tag_BC">BC</a></li>
12077               </ul>
12078             </td>
12079
12080           </tr>
12081           <tr class="entries_header">
12082             <th class="th_details" colspan="6">Details</th>
12083           </tr>
12084           <tr class="entry_cont">
12085             <td class="entry_details" colspan="6">
12086               <p>85-95 is typical usage range.<wbr/></p>
12087             </td>
12088           </tr>
12089
12090
12091           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12092            <!-- end of entry -->
12093         
12094                 
12095           <tr class="entry" id="dynamic_android.jpeg.size">
12096             <td class="entry_name
12097              " rowspan="3">
12098               android.<wbr/>jpeg.<wbr/>size
12099             </td>
12100             <td class="entry_type">
12101                 <span class="entry_type_name">int32</span>
12102
12103               <span class="entry_type_visibility"> [system]</span>
12104
12105
12106
12107
12108
12109
12110             </td> <!-- entry_type -->
12111
12112             <td class="entry_description">
12113               <p>The size of the compressed JPEG image,<wbr/> in
12114 bytes</p>
12115             </td>
12116
12117             <td class="entry_units">
12118             </td>
12119
12120             <td class="entry_range">
12121               <p>&gt;= 0</p>
12122             </td>
12123
12124             <td class="entry_hal_version">
12125               <p>3.<wbr/>2</p>
12126             </td>
12127
12128             <td class="entry_tags">
12129               <ul class="entry_tags">
12130                   <li><a href="#tag_FUTURE">FUTURE</a></li>
12131               </ul>
12132             </td>
12133
12134           </tr>
12135           <tr class="entries_header">
12136             <th class="th_details" colspan="6">Details</th>
12137           </tr>
12138           <tr class="entry_cont">
12139             <td class="entry_details" colspan="6">
12140               <p>If no JPEG output is produced for the request,<wbr/>
12141 this must be 0.<wbr/></p>
12142 <p>Otherwise,<wbr/> this describes the real size of the compressed
12143 JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
12144 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
12145 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
12146 the JPEG stream will be 1000000 bytes,<wbr/> of which the first
12147 500000 make up the real data.<wbr/></p>
12148             </td>
12149           </tr>
12150
12151
12152           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12153            <!-- end of entry -->
12154         
12155                 
12156           <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
12157             <td class="entry_name
12158              " rowspan="1">
12159               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
12160             </td>
12161             <td class="entry_type">
12162                 <span class="entry_type_name">byte</span>
12163
12164               <span class="entry_type_visibility"> [public]</span>
12165
12166
12167               <span class="entry_type_hwlevel">[legacy] </span>
12168
12169
12170
12171
12172             </td> <!-- entry_type -->
12173
12174             <td class="entry_description">
12175               <p>Compression quality of JPEG
12176 thumbnail.<wbr/></p>
12177             </td>
12178
12179             <td class="entry_units">
12180             </td>
12181
12182             <td class="entry_range">
12183               <p>1-100; larger is higher quality</p>
12184             </td>
12185
12186             <td class="entry_hal_version">
12187               <p>3.<wbr/>2</p>
12188             </td>
12189
12190             <td class="entry_tags">
12191               <ul class="entry_tags">
12192                   <li><a href="#tag_BC">BC</a></li>
12193               </ul>
12194             </td>
12195
12196           </tr>
12197
12198
12199           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12200            <!-- end of entry -->
12201         
12202                 
12203           <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
12204             <td class="entry_name
12205              " rowspan="5">
12206               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
12207             </td>
12208             <td class="entry_type">
12209                 <span class="entry_type_name">int32</span>
12210                 <span class="entry_type_container">x</span>
12211
12212                 <span class="entry_type_array">
12213                   2
12214                 </span>
12215               <span class="entry_type_visibility"> [public as size]</span>
12216
12217
12218               <span class="entry_type_hwlevel">[legacy] </span>
12219
12220
12221
12222
12223             </td> <!-- entry_type -->
12224
12225             <td class="entry_description">
12226               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
12227             </td>
12228
12229             <td class="entry_units">
12230             </td>
12231
12232             <td class="entry_range">
12233               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
12234             </td>
12235
12236             <td class="entry_hal_version">
12237               <p>3.<wbr/>2</p>
12238             </td>
12239
12240             <td class="entry_tags">
12241               <ul class="entry_tags">
12242                   <li><a href="#tag_BC">BC</a></li>
12243               </ul>
12244             </td>
12245
12246           </tr>
12247           <tr class="entries_header">
12248             <th class="th_details" colspan="6">Details</th>
12249           </tr>
12250           <tr class="entry_cont">
12251             <td class="entry_details" colspan="6">
12252               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
12253 but the captured JPEG will still be a valid image.<wbr/></p>
12254 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
12255 should have the same aspect ratio as the main JPEG output.<wbr/></p>
12256 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
12257 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
12258 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
12259 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
12260 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
12261 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
12262 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
12263 the camera device will handle thumbnail rotation in one of the following ways:</p>
12264 <ul>
12265 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
12266   and keep jpeg and thumbnail image data unrotated.<wbr/></li>
12267 <li>Rotate the jpeg and thumbnail image data and not set
12268   <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
12269   case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
12270   capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
12271   orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
12272   size.<wbr/></li>
12273 </ul>
12274             </td>
12275           </tr>
12276
12277           <tr class="entries_header">
12278             <th class="th_details" colspan="6">HAL Implementation Details</th>
12279           </tr>
12280           <tr class="entry_cont">
12281             <td class="entry_details" colspan="6">
12282               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
12283 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
12284 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
12285 thumbnail image cropping.<wbr/></p>
12286             </td>
12287           </tr>
12288
12289           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12290            <!-- end of entry -->
12291         
12292         
12293
12294       <!-- end of kind -->
12295       </tbody>
12296
12297   <!-- end of section -->
12298   <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
12299
12300
12301       <tr><td colspan="7" class="kind">controls</td></tr>
12302
12303       <thead class="entries_header">
12304         <tr>
12305           <th class="th_name">Property Name</th>
12306           <th class="th_type">Type</th>
12307           <th class="th_description">Description</th>
12308           <th class="th_units">Units</th>
12309           <th class="th_range">Range</th>
12310           <th class="th_hal_version">Initial HIDL HAL version</th>
12311           <th class="th_tags">Tags</th>
12312         </tr>
12313       </thead>
12314
12315       <tbody>
12316
12317         
12318
12319         
12320
12321         
12322
12323         
12324
12325                 
12326           <tr class="entry" id="controls_android.lens.aperture">
12327             <td class="entry_name
12328              " rowspan="3">
12329               android.<wbr/>lens.<wbr/>aperture
12330             </td>
12331             <td class="entry_type">
12332                 <span class="entry_type_name">float</span>
12333
12334               <span class="entry_type_visibility"> [public]</span>
12335
12336
12337               <span class="entry_type_hwlevel">[full] </span>
12338
12339
12340
12341
12342             </td> <!-- entry_type -->
12343
12344             <td class="entry_description">
12345               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12346 effective aperture diameter.<wbr/></p>
12347             </td>
12348
12349             <td class="entry_units">
12350               The f-number (f/<wbr/>N)
12351             </td>
12352
12353             <td class="entry_range">
12354               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12355             </td>
12356
12357             <td class="entry_hal_version">
12358               <p>3.<wbr/>2</p>
12359             </td>
12360
12361             <td class="entry_tags">
12362               <ul class="entry_tags">
12363                   <li><a href="#tag_V1">V1</a></li>
12364               </ul>
12365             </td>
12366
12367           </tr>
12368           <tr class="entries_header">
12369             <th class="th_details" colspan="6">Details</th>
12370           </tr>
12371           <tr class="entry_cont">
12372             <td class="entry_details" colspan="6">
12373               <p>Setting this value is only supported on the camera devices that have a variable
12374 aperture lens.<wbr/></p>
12375 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12376 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12377 <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>
12378 to achieve manual exposure control.<wbr/></p>
12379 <p>The requested aperture value may take several frames to reach the
12380 requested value; the camera device will report the current (intermediate)
12381 aperture size in capture result metadata while the aperture is changing.<wbr/>
12382 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>
12383 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12384 the ON modes,<wbr/> this will be overridden by the camera device
12385 auto-exposure algorithm,<wbr/> the overridden values are then provided
12386 back to the user in the corresponding result.<wbr/></p>
12387             </td>
12388           </tr>
12389
12390
12391           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12392            <!-- end of entry -->
12393         
12394                 
12395           <tr class="entry" id="controls_android.lens.filterDensity">
12396             <td class="entry_name
12397              " rowspan="3">
12398               android.<wbr/>lens.<wbr/>filter<wbr/>Density
12399             </td>
12400             <td class="entry_type">
12401                 <span class="entry_type_name">float</span>
12402
12403               <span class="entry_type_visibility"> [public]</span>
12404
12405
12406               <span class="entry_type_hwlevel">[full] </span>
12407
12408
12409
12410
12411             </td> <!-- entry_type -->
12412
12413             <td class="entry_description">
12414               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12415             </td>
12416
12417             <td class="entry_units">
12418               Exposure Value (EV)
12419             </td>
12420
12421             <td class="entry_range">
12422               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12423             </td>
12424
12425             <td class="entry_hal_version">
12426               <p>3.<wbr/>2</p>
12427             </td>
12428
12429             <td class="entry_tags">
12430               <ul class="entry_tags">
12431                   <li><a href="#tag_V1">V1</a></li>
12432               </ul>
12433             </td>
12434
12435           </tr>
12436           <tr class="entries_header">
12437             <th class="th_details" colspan="6">Details</th>
12438           </tr>
12439           <tr class="entry_cont">
12440             <td class="entry_details" colspan="6">
12441               <p>This control will not be supported on most camera devices.<wbr/></p>
12442 <p>Lens filters are typically used to lower the amount of light the
12443 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12444 step is the standard logarithmic representation,<wbr/> which are
12445 non-negative,<wbr/> and inversely proportional to the amount of light
12446 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
12447 in no reduction of the incoming light,<wbr/> and setting this to 2 would
12448 mean that the filter is set to reduce incoming light by two stops
12449 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12450 <p>It may take several frames before the lens filter density changes
12451 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12452 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12453             </td>
12454           </tr>
12455
12456
12457           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12458            <!-- end of entry -->
12459         
12460                 
12461           <tr class="entry" id="controls_android.lens.focalLength">
12462             <td class="entry_name
12463              " rowspan="3">
12464               android.<wbr/>lens.<wbr/>focal<wbr/>Length
12465             </td>
12466             <td class="entry_type">
12467                 <span class="entry_type_name">float</span>
12468
12469               <span class="entry_type_visibility"> [public]</span>
12470
12471
12472               <span class="entry_type_hwlevel">[legacy] </span>
12473
12474
12475
12476
12477             </td> <!-- entry_type -->
12478
12479             <td class="entry_description">
12480               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12481             </td>
12482
12483             <td class="entry_units">
12484               Millimeters
12485             </td>
12486
12487             <td class="entry_range">
12488               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12489             </td>
12490
12491             <td class="entry_hal_version">
12492               <p>3.<wbr/>2</p>
12493             </td>
12494
12495             <td class="entry_tags">
12496               <ul class="entry_tags">
12497                   <li><a href="#tag_V1">V1</a></li>
12498               </ul>
12499             </td>
12500
12501           </tr>
12502           <tr class="entries_header">
12503             <th class="th_details" colspan="6">Details</th>
12504           </tr>
12505           <tr class="entry_cont">
12506             <td class="entry_details" colspan="6">
12507               <p>This setting controls the physical focal length of the camera
12508 device's lens.<wbr/> Changing the focal length changes the field of
12509 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12510 <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
12511 setting won't be applied instantaneously,<wbr/> and it may take several
12512 frames before the lens can change to the requested focal length.<wbr/>
12513 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12514 be set to MOVING.<wbr/></p>
12515 <p>Optical zoom will not be supported on most devices.<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.focusDistance">
12525             <td class="entry_name
12526              " rowspan="3">
12527               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
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">[full] </span>
12536
12537
12538
12539
12540             </td> <!-- entry_type -->
12541
12542             <td class="entry_description">
12543               <p>Desired distance to plane of sharpest focus,<wbr/>
12544 measured from frontmost surface of the lens.<wbr/></p>
12545             </td>
12546
12547             <td class="entry_units">
12548               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12549             </td>
12550
12551             <td class="entry_range">
12552               <p>&gt;= 0</p>
12553             </td>
12554
12555             <td class="entry_hal_version">
12556               <p>3.<wbr/>2</p>
12557             </td>
12558
12559             <td class="entry_tags">
12560               <ul class="entry_tags">
12561                   <li><a href="#tag_BC">BC</a></li>
12562                   <li><a href="#tag_V1">V1</a></li>
12563               </ul>
12564             </td>
12565
12566           </tr>
12567           <tr class="entries_header">
12568             <th class="th_details" colspan="6">Details</th>
12569           </tr>
12570           <tr class="entry_cont">
12571             <td class="entry_details" colspan="6">
12572               <p>This control can be used for setting manual focus,<wbr/> on devices that support
12573 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
12574 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
12575 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
12576 <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>
12577 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
12578 instantaneously,<wbr/> and it may take several frames before the lens
12579 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
12580 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12581 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
12582 for infinity focus.<wbr/></p>
12583             </td>
12584           </tr>
12585
12586
12587           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12588            <!-- end of entry -->
12589         
12590                 
12591           <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
12592             <td class="entry_name
12593              " rowspan="3">
12594               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12595             </td>
12596             <td class="entry_type">
12597                 <span class="entry_type_name entry_type_name_enum">byte</span>
12598
12599               <span class="entry_type_visibility"> [public]</span>
12600
12601
12602               <span class="entry_type_hwlevel">[limited] </span>
12603
12604
12605
12606                 <ul class="entry_type_enum">
12607                   <li>
12608                     <span class="entry_type_enum_name">OFF (v3.2)</span>
12609                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12610                   </li>
12611                   <li>
12612                     <span class="entry_type_enum_name">ON (v3.2)</span>
12613                     <span class="entry_type_enum_optional">[optional]</span>
12614                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12615                   </li>
12616                 </ul>
12617
12618             </td> <!-- entry_type -->
12619
12620             <td class="entry_description">
12621               <p>Sets whether the camera device uses optical image stabilization (OIS)
12622 when capturing images.<wbr/></p>
12623             </td>
12624
12625             <td class="entry_units">
12626             </td>
12627
12628             <td class="entry_range">
12629               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12630             </td>
12631
12632             <td class="entry_hal_version">
12633               <p>3.<wbr/>2</p>
12634             </td>
12635
12636             <td class="entry_tags">
12637               <ul class="entry_tags">
12638                   <li><a href="#tag_V1">V1</a></li>
12639               </ul>
12640             </td>
12641
12642           </tr>
12643           <tr class="entries_header">
12644             <th class="th_details" colspan="6">Details</th>
12645           </tr>
12646           <tr class="entry_cont">
12647             <td class="entry_details" colspan="6">
12648               <p>OIS is used to compensate for motion blur due to small
12649 movements of the camera during capture.<wbr/> Unlike digital image
12650 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12651 makes use of mechanical elements to stabilize the camera
12652 sensor,<wbr/> and thus allows for longer exposure times before
12653 camera shake becomes apparent.<wbr/></p>
12654 <p>Switching between different optical stabilization modes may take several
12655 frames to initialize,<wbr/> the camera device will report the current mode in
12656 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12657 optical stabilization modes in the first several capture results may still
12658 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12659 <p>If a camera device supports both OIS and digital image stabilization
12660 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12661 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12662 <p>Not all devices will support OIS; see
12663 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12664 available controls.<wbr/></p>
12665             </td>
12666           </tr>
12667
12668
12669           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12670            <!-- end of entry -->
12671         
12672         
12673
12674       <!-- end of kind -->
12675       </tbody>
12676       <tr><td colspan="7" class="kind">static</td></tr>
12677
12678       <thead class="entries_header">
12679         <tr>
12680           <th class="th_name">Property Name</th>
12681           <th class="th_type">Type</th>
12682           <th class="th_description">Description</th>
12683           <th class="th_units">Units</th>
12684           <th class="th_range">Range</th>
12685           <th class="th_hal_version">Initial HIDL HAL version</th>
12686           <th class="th_tags">Tags</th>
12687         </tr>
12688       </thead>
12689
12690       <tbody>
12691
12692         
12693
12694         
12695
12696         
12697
12698         
12699                 
12700             
12701
12702                 
12703           <tr class="entry" id="static_android.lens.info.availableApertures">
12704             <td class="entry_name
12705              " rowspan="3">
12706               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
12707             </td>
12708             <td class="entry_type">
12709                 <span class="entry_type_name">float</span>
12710                 <span class="entry_type_container">x</span>
12711
12712                 <span class="entry_type_array">
12713                   n
12714                 </span>
12715               <span class="entry_type_visibility"> [public]</span>
12716
12717
12718               <span class="entry_type_hwlevel">[full] </span>
12719
12720
12721
12722
12723             </td> <!-- entry_type -->
12724
12725             <td class="entry_description">
12726               <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
12727 supported by this camera device.<wbr/></p>
12728             </td>
12729
12730             <td class="entry_units">
12731               The aperture f-number
12732             </td>
12733
12734             <td class="entry_range">
12735             </td>
12736
12737             <td class="entry_hal_version">
12738               <p>3.<wbr/>2</p>
12739             </td>
12740
12741             <td class="entry_tags">
12742               <ul class="entry_tags">
12743                   <li><a href="#tag_V1">V1</a></li>
12744               </ul>
12745             </td>
12746
12747           </tr>
12748           <tr class="entries_header">
12749             <th class="th_details" colspan="6">Details</th>
12750           </tr>
12751           <tr class="entry_cont">
12752             <td class="entry_details" colspan="6">
12753               <p>If the camera device doesn't support a variable lens aperture,<wbr/>
12754 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
12755 <p>If the camera device supports a variable aperture,<wbr/> the aperture values
12756 in this list will be sorted in ascending order.<wbr/></p>
12757             </td>
12758           </tr>
12759
12760
12761           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12762            <!-- end of entry -->
12763         
12764                 
12765           <tr class="entry" id="static_android.lens.info.availableFilterDensities">
12766             <td class="entry_name
12767              " rowspan="3">
12768               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
12769             </td>
12770             <td class="entry_type">
12771                 <span class="entry_type_name">float</span>
12772                 <span class="entry_type_container">x</span>
12773
12774                 <span class="entry_type_array">
12775                   n
12776                 </span>
12777               <span class="entry_type_visibility"> [public]</span>
12778
12779
12780               <span class="entry_type_hwlevel">[full] </span>
12781
12782
12783
12784
12785             </td> <!-- entry_type -->
12786
12787             <td class="entry_description">
12788               <p>List of neutral density filter values for
12789 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
12790             </td>
12791
12792             <td class="entry_units">
12793               Exposure value (EV)
12794             </td>
12795
12796             <td class="entry_range">
12797               <p>Values are &gt;= 0</p>
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 a neutral density filter is not supported by this camera device,<wbr/>
12817 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
12818 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
12819             </td>
12820           </tr>
12821
12822
12823           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12824            <!-- end of entry -->
12825         
12826                 
12827           <tr class="entry" id="static_android.lens.info.availableFocalLengths">
12828             <td class="entry_name
12829              " rowspan="3">
12830               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
12831             </td>
12832             <td class="entry_type">
12833                 <span class="entry_type_name">float</span>
12834                 <span class="entry_type_container">x</span>
12835
12836                 <span class="entry_type_array">
12837                   n
12838                 </span>
12839               <span class="entry_type_visibility"> [public]</span>
12840
12841
12842               <span class="entry_type_hwlevel">[legacy] </span>
12843
12844
12845                 <div class="entry_type_notes">The list of available focal lengths</div>
12846
12847
12848             </td> <!-- entry_type -->
12849
12850             <td class="entry_description">
12851               <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
12852 device.<wbr/></p>
12853             </td>
12854
12855             <td class="entry_units">
12856               Millimeters
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_BC">BC</a></li>
12870                   <li><a href="#tag_V1">V1</a></li>
12871               </ul>
12872             </td>
12873
12874           </tr>
12875           <tr class="entries_header">
12876             <th class="th_details" colspan="6">Details</th>
12877           </tr>
12878           <tr class="entry_cont">
12879             <td class="entry_details" colspan="6">
12880               <p>If optical zoom is not supported,<wbr/> this list will only contain
12881 a single value corresponding to the fixed focal length of the
12882 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
12883 by the camera device,<wbr/> in ascending order.<wbr/></p>
12884             </td>
12885           </tr>
12886
12887
12888           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12889            <!-- end of entry -->
12890         
12891                 
12892           <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
12893             <td class="entry_name
12894              " rowspan="3">
12895               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
12896             </td>
12897             <td class="entry_type">
12898                 <span class="entry_type_name">byte</span>
12899                 <span class="entry_type_container">x</span>
12900
12901                 <span class="entry_type_array">
12902                   n
12903                 </span>
12904               <span class="entry_type_visibility"> [public as enumList]</span>
12905
12906
12907               <span class="entry_type_hwlevel">[limited] </span>
12908
12909
12910                 <div class="entry_type_notes">list of enums</div>
12911
12912
12913             </td> <!-- entry_type -->
12914
12915             <td class="entry_description">
12916               <p>List of optical image stabilization (OIS) modes for
12917 <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>
12918             </td>
12919
12920             <td class="entry_units">
12921             </td>
12922
12923             <td class="entry_range">
12924               <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
12925             </td>
12926
12927             <td class="entry_hal_version">
12928               <p>3.<wbr/>2</p>
12929             </td>
12930
12931             <td class="entry_tags">
12932               <ul class="entry_tags">
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 OIS is not supported by a given camera device,<wbr/> this list will
12944 contain only OFF.<wbr/></p>
12945             </td>
12946           </tr>
12947
12948
12949           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12950            <!-- end of entry -->
12951         
12952                 
12953           <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
12954             <td class="entry_name
12955              " rowspan="3">
12956               android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
12957             </td>
12958             <td class="entry_type">
12959                 <span class="entry_type_name">float</span>
12960
12961               <span class="entry_type_visibility"> [public]</span>
12962
12963
12964               <span class="entry_type_hwlevel">[limited] </span>
12965
12966
12967
12968
12969             </td> <!-- entry_type -->
12970
12971             <td class="entry_description">
12972               <p>Hyperfocal distance for this lens.<wbr/></p>
12973             </td>
12974
12975             <td class="entry_units">
12976               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12977             </td>
12978
12979             <td class="entry_range">
12980               <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
12981 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>
12982             </td>
12983
12984             <td class="entry_hal_version">
12985               <p>3.<wbr/>2</p>
12986             </td>
12987
12988             <td class="entry_tags">
12989             </td>
12990
12991           </tr>
12992           <tr class="entries_header">
12993             <th class="th_details" colspan="6">Details</th>
12994           </tr>
12995           <tr class="entry_cont">
12996             <td class="entry_details" colspan="6">
12997               <p>If the lens is not fixed focus,<wbr/> the camera device will report this
12998 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>
12999             </td>
13000           </tr>
13001
13002
13003           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13004            <!-- end of entry -->
13005         
13006                 
13007           <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
13008             <td class="entry_name
13009              " rowspan="5">
13010               android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
13011             </td>
13012             <td class="entry_type">
13013                 <span class="entry_type_name">float</span>
13014
13015               <span class="entry_type_visibility"> [public]</span>
13016
13017
13018               <span class="entry_type_hwlevel">[limited] </span>
13019
13020
13021
13022
13023             </td> <!-- entry_type -->
13024
13025             <td class="entry_description">
13026               <p>Shortest distance from frontmost surface
13027 of the lens that can be brought into sharp focus.<wbr/></p>
13028             </td>
13029
13030             <td class="entry_units">
13031               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13032             </td>
13033
13034             <td class="entry_range">
13035               <p>&gt;= 0</p>
13036             </td>
13037
13038             <td class="entry_hal_version">
13039               <p>3.<wbr/>2</p>
13040             </td>
13041
13042             <td class="entry_tags">
13043               <ul class="entry_tags">
13044                   <li><a href="#tag_V1">V1</a></li>
13045               </ul>
13046             </td>
13047
13048           </tr>
13049           <tr class="entries_header">
13050             <th class="th_details" colspan="6">Details</th>
13051           </tr>
13052           <tr class="entry_cont">
13053             <td class="entry_details" colspan="6">
13054               <p>If the lens is fixed-focus,<wbr/> this will be
13055 0.<wbr/></p>
13056             </td>
13057           </tr>
13058
13059           <tr class="entries_header">
13060             <th class="th_details" colspan="6">HAL Implementation Details</th>
13061           </tr>
13062           <tr class="entry_cont">
13063             <td class="entry_details" colspan="6">
13064               <p>Mandatory for FULL devices; LIMITED devices
13065 must always set this value to 0 for fixed-focus; and may omit
13066 the minimum focus distance otherwise.<wbr/></p>
13067 <p>This field is also mandatory for all devices advertising
13068 the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
13069             </td>
13070           </tr>
13071
13072           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13073            <!-- end of entry -->
13074         
13075                 
13076           <tr class="entry" id="static_android.lens.info.shadingMapSize">
13077             <td class="entry_name
13078              " rowspan="3">
13079               android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
13080             </td>
13081             <td class="entry_type">
13082                 <span class="entry_type_name">int32</span>
13083                 <span class="entry_type_container">x</span>
13084
13085                 <span class="entry_type_array">
13086                   2
13087                 </span>
13088               <span class="entry_type_visibility"> [ndk_public as size]</span>
13089
13090
13091               <span class="entry_type_hwlevel">[full] </span>
13092
13093
13094                 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
13095
13096
13097             </td> <!-- entry_type -->
13098
13099             <td class="entry_description">
13100               <p>Dimensions of lens shading map.<wbr/></p>
13101             </td>
13102
13103             <td class="entry_units">
13104             </td>
13105
13106             <td class="entry_range">
13107               <p>Both values &gt;= 1</p>
13108             </td>
13109
13110             <td class="entry_hal_version">
13111               <p>3.<wbr/>2</p>
13112             </td>
13113
13114             <td class="entry_tags">
13115               <ul class="entry_tags">
13116                   <li><a href="#tag_V1">V1</a></li>
13117               </ul>
13118             </td>
13119
13120           </tr>
13121           <tr class="entries_header">
13122             <th class="th_details" colspan="6">Details</th>
13123           </tr>
13124           <tr class="entry_cont">
13125             <td class="entry_details" colspan="6">
13126               <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
13127 must be smaller than 64x64.<wbr/></p>
13128             </td>
13129           </tr>
13130
13131
13132           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13133            <!-- end of entry -->
13134         
13135                 
13136           <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
13137             <td class="entry_name
13138              " rowspan="5">
13139               android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
13140             </td>
13141             <td class="entry_type">
13142                 <span class="entry_type_name entry_type_name_enum">byte</span>
13143
13144               <span class="entry_type_visibility"> [public]</span>
13145
13146
13147               <span class="entry_type_hwlevel">[limited] </span>
13148
13149
13150
13151                 <ul class="entry_type_enum">
13152                   <li>
13153                     <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span>
13154                     <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
13155 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
13156 <p>Setting the lens to the same focus distance on separate occasions may
13157 result in a different real focus distance,<wbr/> depending on factors such
13158 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
13159 and the device temperature.<wbr/> The focus distance value will still be
13160 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
13161 represents the farthest focus.<wbr/></p></span>
13162                   </li>
13163                   <li>
13164                     <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span>
13165                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
13166 <p>However,<wbr/> setting the lens to the same focus distance
13167 on separate occasions may result in a different real
13168 focus distance,<wbr/> depending on factors such as the
13169 orientation of the device,<wbr/> the age of the focusing
13170 mechanism,<wbr/> and the device temperature.<wbr/></p></span>
13171                   </li>
13172                   <li>
13173                     <span class="entry_type_enum_name">CALIBRATED (v3.2)</span>
13174                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
13175 is calibrated.<wbr/></p>
13176 <p>The lens mechanism is calibrated so that setting the
13177 same focus distance is repeatable on multiple
13178 occasions with good accuracy,<wbr/> and the focus distance
13179 corresponds to the real physical distance to the plane
13180 of best focus.<wbr/></p></span>
13181                   </li>
13182                 </ul>
13183
13184             </td> <!-- entry_type -->
13185
13186             <td class="entry_description">
13187               <p>The lens focus distance calibration quality.<wbr/></p>
13188             </td>
13189
13190             <td class="entry_units">
13191             </td>
13192
13193             <td class="entry_range">
13194             </td>
13195
13196             <td class="entry_hal_version">
13197               <p>3.<wbr/>2</p>
13198             </td>
13199
13200             <td class="entry_tags">
13201               <ul class="entry_tags">
13202                   <li><a href="#tag_V1">V1</a></li>
13203               </ul>
13204             </td>
13205
13206           </tr>
13207           <tr class="entries_header">
13208             <th class="th_details" colspan="6">Details</th>
13209           </tr>
13210           <tr class="entry_cont">
13211             <td class="entry_details" colspan="6">
13212               <p>The lens focus distance calibration quality determines the reliability of
13213 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
13214 <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
13215 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
13216 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in
13217 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
13218 and increasing positive numbers represent focusing closer and closer
13219 to the camera device.<wbr/> The focus distance control also uses diopters
13220 on these devices.<wbr/></p>
13221 <p>UNCALIBRATED devices do not use units that are directly comparable
13222 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
13223 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
13224 nearest focus the device can achieve.<wbr/></p>
13225             </td>
13226           </tr>
13227
13228           <tr class="entries_header">
13229             <th class="th_details" colspan="6">HAL Implementation Details</th>
13230           </tr>
13231           <tr class="entry_cont">
13232             <td class="entry_details" colspan="6">
13233               <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
13234 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
13235 and the lens focus distance is set to 0 diopters
13236 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
13237 and is stably focused at infinity even if the device tilts.<wbr/> It may take the
13238 lens some time to move; during the move the lens state should be MOVING and
13239 the output diopter value should be changing toward 0.<wbr/></p>
13240             </td>
13241           </tr>
13242
13243           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13244            <!-- end of entry -->
13245         
13246         
13247         
13248
13249                 
13250           <tr class="entry" id="static_android.lens.facing">
13251             <td class="entry_name
13252              " rowspan="1">
13253               android.<wbr/>lens.<wbr/>facing
13254             </td>
13255             <td class="entry_type">
13256                 <span class="entry_type_name entry_type_name_enum">byte</span>
13257
13258               <span class="entry_type_visibility"> [public]</span>
13259
13260
13261               <span class="entry_type_hwlevel">[legacy] </span>
13262
13263
13264
13265                 <ul class="entry_type_enum">
13266                   <li>
13267                     <span class="entry_type_enum_name">FRONT (v3.2)</span>
13268                     <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
13269                   </li>
13270                   <li>
13271                     <span class="entry_type_enum_name">BACK (v3.2)</span>
13272                     <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
13273                   </li>
13274                   <li>
13275                     <span class="entry_type_enum_name">EXTERNAL (v3.2)</span>
13276                     <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
13277 device's screen.<wbr/></p></span>
13278                   </li>
13279                 </ul>
13280
13281             </td> <!-- entry_type -->
13282
13283             <td class="entry_description">
13284               <p>Direction the camera faces relative to
13285 device screen.<wbr/></p>
13286             </td>
13287
13288             <td class="entry_units">
13289             </td>
13290
13291             <td class="entry_range">
13292             </td>
13293
13294             <td class="entry_hal_version">
13295               <p>3.<wbr/>2</p>
13296             </td>
13297
13298             <td class="entry_tags">
13299             </td>
13300
13301           </tr>
13302
13303
13304           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13305            <!-- end of entry -->
13306         
13307                 
13308           <tr class="entry" id="static_android.lens.poseRotation">
13309             <td class="entry_name
13310              " rowspan="3">
13311               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13312             </td>
13313             <td class="entry_type">
13314                 <span class="entry_type_name">float</span>
13315                 <span class="entry_type_container">x</span>
13316
13317                 <span class="entry_type_array">
13318                   4
13319                 </span>
13320               <span class="entry_type_visibility"> [public]</span>
13321
13322
13323
13324
13325
13326
13327             </td> <!-- entry_type -->
13328
13329             <td class="entry_description">
13330               <p>The orientation of the camera relative to the sensor
13331 coordinate system.<wbr/></p>
13332             </td>
13333
13334             <td class="entry_units">
13335               
13336             Quaternion coefficients
13337           
13338             </td>
13339
13340             <td class="entry_range">
13341             </td>
13342
13343             <td class="entry_hal_version">
13344               <p>3.<wbr/>2</p>
13345             </td>
13346
13347             <td class="entry_tags">
13348               <ul class="entry_tags">
13349                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13350               </ul>
13351             </td>
13352
13353           </tr>
13354           <tr class="entries_header">
13355             <th class="th_details" colspan="6">Details</th>
13356           </tr>
13357           <tr class="entry_cont">
13358             <td class="entry_details" colspan="6">
13359               <p>The four coefficients that describe the quaternion
13360 rotation from the Android sensor coordinate system to a
13361 camera-aligned coordinate system where the X-axis is
13362 aligned with the long side of the image sensor,<wbr/> the Y-axis
13363 is aligned with the short side of the image sensor,<wbr/> and
13364 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13365 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13366 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13367 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13368 <pre><code> theta = 2 * acos(w)
13369 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13370 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13371 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13372 </code></pre>
13373 <p>To create a 3x3 rotation matrix that applies the rotation
13374 defined by this quaternion,<wbr/> the following matrix can be
13375 used:</p>
13376 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
13377            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
13378            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13379 </code></pre>
13380 <p>This matrix can then be used to apply the rotation to a
13381  column vector point with</p>
13382 <p><code>p' = Rp</code></p>
13383 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13384  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13385             </td>
13386           </tr>
13387
13388
13389           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13390            <!-- end of entry -->
13391         
13392                 
13393           <tr class="entry" id="static_android.lens.poseTranslation">
13394             <td class="entry_name
13395              " rowspan="3">
13396               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13397             </td>
13398             <td class="entry_type">
13399                 <span class="entry_type_name">float</span>
13400                 <span class="entry_type_container">x</span>
13401
13402                 <span class="entry_type_array">
13403                   3
13404                 </span>
13405               <span class="entry_type_visibility"> [public]</span>
13406
13407
13408
13409
13410
13411
13412             </td> <!-- entry_type -->
13413
13414             <td class="entry_description">
13415               <p>Position of the camera optical center.<wbr/></p>
13416             </td>
13417
13418             <td class="entry_units">
13419               Meters
13420             </td>
13421
13422             <td class="entry_range">
13423             </td>
13424
13425             <td class="entry_hal_version">
13426               <p>3.<wbr/>2</p>
13427             </td>
13428
13429             <td class="entry_tags">
13430               <ul class="entry_tags">
13431                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13432               </ul>
13433             </td>
13434
13435           </tr>
13436           <tr class="entries_header">
13437             <th class="th_details" colspan="6">Details</th>
13438           </tr>
13439           <tr class="entry_cont">
13440             <td class="entry_details" colspan="6">
13441               <p>The position of the camera device's lens optical center,<wbr/>
13442 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
13443 optical center of the largest camera device facing in the
13444 same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
13445 axes</a>.<wbr/> Note that only the axis definitions are shared with
13446 the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
13447 <p>If this device is the largest or only camera device with a
13448 given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
13449 camera device with a lens optical center located 3 cm from
13450 the main sensor along the +X axis (to the right from the
13451 user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13452 <p>To transform a pixel coordinates between two cameras
13453 facing the same direction,<wbr/> first the source camera
13454 <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
13455 the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
13456 to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
13457 of the source camera,<wbr/> the translation of the source camera
13458 relative to the destination camera,<wbr/> the
13459 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
13460 finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
13461 of the destination camera.<wbr/> This obtains a
13462 radial-distortion-free coordinate in the destination
13463 camera pixel coordinates.<wbr/></p>
13464 <p>To compare this against a real image from the destination
13465 camera,<wbr/> the destination camera image then needs to be
13466 corrected for radial distortion before comparison or
13467 sampling.<wbr/></p>
13468             </td>
13469           </tr>
13470
13471
13472           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13473            <!-- end of entry -->
13474         
13475                 
13476           <tr class="entry" id="static_android.lens.intrinsicCalibration">
13477             <td class="entry_name
13478              " rowspan="3">
13479               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13480             </td>
13481             <td class="entry_type">
13482                 <span class="entry_type_name">float</span>
13483                 <span class="entry_type_container">x</span>
13484
13485                 <span class="entry_type_array">
13486                   5
13487                 </span>
13488               <span class="entry_type_visibility"> [public]</span>
13489
13490
13491
13492
13493
13494
13495             </td> <!-- entry_type -->
13496
13497             <td class="entry_description">
13498               <p>The parameters for this camera device's intrinsic
13499 calibration.<wbr/></p>
13500             </td>
13501
13502             <td class="entry_units">
13503               
13504             Pixels in the
13505             android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13506             coordinate system.<wbr/>
13507           
13508             </td>
13509
13510             <td class="entry_range">
13511             </td>
13512
13513             <td class="entry_hal_version">
13514               <p>3.<wbr/>2</p>
13515             </td>
13516
13517             <td class="entry_tags">
13518               <ul class="entry_tags">
13519                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13520               </ul>
13521             </td>
13522
13523           </tr>
13524           <tr class="entries_header">
13525             <th class="th_details" colspan="6">Details</th>
13526           </tr>
13527           <tr class="entry_cont">
13528             <td class="entry_details" colspan="6">
13529               <p>The five calibration parameters that describe the
13530 transform from camera-centric 3D coordinates to sensor
13531 pixel coordinates:</p>
13532 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13533 </code></pre>
13534 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13535 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13536 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13537 being aligned with the lens plane.<wbr/></p>
13538 <p>These are typically used within a transformation matrix K:</p>
13539 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
13540        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13541        0    0,<wbr/>   1 ]
13542 </code></pre>
13543 <p>which can then be combined with the camera pose rotation
13544 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13545 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13546 complete transform from world coordinates to pixel
13547 coordinates:</p>
13548 <pre><code>P = [ K 0   * [ R t
13549      0 1 ]     0 1 ]
13550 </code></pre>
13551 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13552 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13553 coordinate system,<wbr/> and with the mapping including the
13554 homogeneous division by z:</p>
13555 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13556 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13557 </code></pre>
13558 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13559 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13560 (depth) in pixel coordinates.<wbr/></p>
13561 <p>Note that the coordinate system for this transform is the
13562 <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/>
13563 where <code>(0,<wbr/>0)</code> is the top-left of the
13564 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13565 intrinsic calibration transforms have been applied to a
13566 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
13567 transform needs to be applied,<wbr/> and the result adjusted to
13568 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13569 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13570 activeArraySize rectangle),<wbr/> to determine the final pixel
13571 coordinate of the world point for processed (non-RAW)
13572 output buffers.<wbr/></p>
13573             </td>
13574           </tr>
13575
13576
13577           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13578            <!-- end of entry -->
13579         
13580                 
13581           <tr class="entry" id="static_android.lens.radialDistortion">
13582             <td class="entry_name
13583              " rowspan="3">
13584               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13585             </td>
13586             <td class="entry_type">
13587                 <span class="entry_type_name">float</span>
13588                 <span class="entry_type_container">x</span>
13589
13590                 <span class="entry_type_array">
13591                   6
13592                 </span>
13593               <span class="entry_type_visibility"> [public]</span>
13594
13595
13596
13597
13598
13599
13600             </td> <!-- entry_type -->
13601
13602             <td class="entry_description">
13603               <p>The correction coefficients to correct for this camera device's
13604 radial and tangential lens distortion.<wbr/></p>
13605             </td>
13606
13607             <td class="entry_units">
13608               
13609             Unitless coefficients.<wbr/>
13610           
13611             </td>
13612
13613             <td class="entry_range">
13614             </td>
13615
13616             <td class="entry_hal_version">
13617               <p>3.<wbr/>2</p>
13618             </td>
13619
13620             <td class="entry_tags">
13621               <ul class="entry_tags">
13622                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13623               </ul>
13624             </td>
13625
13626           </tr>
13627           <tr class="entries_header">
13628             <th class="th_details" colspan="6">Details</th>
13629           </tr>
13630           <tr class="entry_cont">
13631             <td class="entry_details" colspan="6">
13632               <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13633 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13634 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13635 lens's geometric distortion with the mapping equations:</p>
13636 <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 ) +
13637        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13638  y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13639        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13640 </code></pre>
13641 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13642 input image that correspond to the pixel values in the
13643 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13644 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13645 </code></pre>
13646 <p>The pixel coordinates are defined in a normalized
13647 coordinate system related to the
13648 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13649 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
13650 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13651 of both x and y coordinates are normalized to be 1 at the
13652 edge further from the optical center,<wbr/> so the range
13653 for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
13654 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13655 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13656 is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
13657 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13658             </td>
13659           </tr>
13660
13661
13662           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13663            <!-- end of entry -->
13664         
13665         
13666
13667       <!-- end of kind -->
13668       </tbody>
13669       <tr><td colspan="7" class="kind">dynamic</td></tr>
13670
13671       <thead class="entries_header">
13672         <tr>
13673           <th class="th_name">Property Name</th>
13674           <th class="th_type">Type</th>
13675           <th class="th_description">Description</th>
13676           <th class="th_units">Units</th>
13677           <th class="th_range">Range</th>
13678           <th class="th_hal_version">Initial HIDL HAL version</th>
13679           <th class="th_tags">Tags</th>
13680         </tr>
13681       </thead>
13682
13683       <tbody>
13684
13685         
13686
13687         
13688
13689         
13690
13691         
13692
13693                 
13694           <tr class="entry" id="dynamic_android.lens.aperture">
13695             <td class="entry_name
13696              " rowspan="3">
13697               android.<wbr/>lens.<wbr/>aperture
13698             </td>
13699             <td class="entry_type">
13700                 <span class="entry_type_name">float</span>
13701
13702               <span class="entry_type_visibility"> [public]</span>
13703
13704
13705               <span class="entry_type_hwlevel">[full] </span>
13706
13707
13708
13709
13710             </td> <!-- entry_type -->
13711
13712             <td class="entry_description">
13713               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
13714 effective aperture diameter.<wbr/></p>
13715             </td>
13716
13717             <td class="entry_units">
13718               The f-number (f/<wbr/>N)
13719             </td>
13720
13721             <td class="entry_range">
13722               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
13723             </td>
13724
13725             <td class="entry_hal_version">
13726               <p>3.<wbr/>2</p>
13727             </td>
13728
13729             <td class="entry_tags">
13730               <ul class="entry_tags">
13731                   <li><a href="#tag_V1">V1</a></li>
13732               </ul>
13733             </td>
13734
13735           </tr>
13736           <tr class="entries_header">
13737             <th class="th_details" colspan="6">Details</th>
13738           </tr>
13739           <tr class="entry_cont">
13740             <td class="entry_details" colspan="6">
13741               <p>Setting this value is only supported on the camera devices that have a variable
13742 aperture lens.<wbr/></p>
13743 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
13744 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
13745 <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>
13746 to achieve manual exposure control.<wbr/></p>
13747 <p>The requested aperture value may take several frames to reach the
13748 requested value; the camera device will report the current (intermediate)
13749 aperture size in capture result metadata while the aperture is changing.<wbr/>
13750 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>
13751 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
13752 the ON modes,<wbr/> this will be overridden by the camera device
13753 auto-exposure algorithm,<wbr/> the overridden values are then provided
13754 back to the user in the corresponding result.<wbr/></p>
13755             </td>
13756           </tr>
13757
13758
13759           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13760            <!-- end of entry -->
13761         
13762                 
13763           <tr class="entry" id="dynamic_android.lens.filterDensity">
13764             <td class="entry_name
13765              " rowspan="3">
13766               android.<wbr/>lens.<wbr/>filter<wbr/>Density
13767             </td>
13768             <td class="entry_type">
13769                 <span class="entry_type_name">float</span>
13770
13771               <span class="entry_type_visibility"> [public]</span>
13772
13773
13774               <span class="entry_type_hwlevel">[full] </span>
13775
13776
13777
13778
13779             </td> <!-- entry_type -->
13780
13781             <td class="entry_description">
13782               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
13783             </td>
13784
13785             <td class="entry_units">
13786               Exposure Value (EV)
13787             </td>
13788
13789             <td class="entry_range">
13790               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
13791             </td>
13792
13793             <td class="entry_hal_version">
13794               <p>3.<wbr/>2</p>
13795             </td>
13796
13797             <td class="entry_tags">
13798               <ul class="entry_tags">
13799                   <li><a href="#tag_V1">V1</a></li>
13800               </ul>
13801             </td>
13802
13803           </tr>
13804           <tr class="entries_header">
13805             <th class="th_details" colspan="6">Details</th>
13806           </tr>
13807           <tr class="entry_cont">
13808             <td class="entry_details" colspan="6">
13809               <p>This control will not be supported on most camera devices.<wbr/></p>
13810 <p>Lens filters are typically used to lower the amount of light the
13811 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
13812 step is the standard logarithmic representation,<wbr/> which are
13813 non-negative,<wbr/> and inversely proportional to the amount of light
13814 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
13815 in no reduction of the incoming light,<wbr/> and setting this to 2 would
13816 mean that the filter is set to reduce incoming light by two stops
13817 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
13818 <p>It may take several frames before the lens filter density changes
13819 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
13820 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
13821             </td>
13822           </tr>
13823
13824
13825           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13826            <!-- end of entry -->
13827         
13828                 
13829           <tr class="entry" id="dynamic_android.lens.focalLength">
13830             <td class="entry_name
13831              " rowspan="3">
13832               android.<wbr/>lens.<wbr/>focal<wbr/>Length
13833             </td>
13834             <td class="entry_type">
13835                 <span class="entry_type_name">float</span>
13836
13837               <span class="entry_type_visibility"> [public]</span>
13838
13839
13840               <span class="entry_type_hwlevel">[legacy] </span>
13841
13842
13843
13844
13845             </td> <!-- entry_type -->
13846
13847             <td class="entry_description">
13848               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
13849             </td>
13850
13851             <td class="entry_units">
13852               Millimeters
13853             </td>
13854
13855             <td class="entry_range">
13856               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
13857             </td>
13858
13859             <td class="entry_hal_version">
13860               <p>3.<wbr/>2</p>
13861             </td>
13862
13863             <td class="entry_tags">
13864               <ul class="entry_tags">
13865                   <li><a href="#tag_BC">BC</a></li>
13866               </ul>
13867             </td>
13868
13869           </tr>
13870           <tr class="entries_header">
13871             <th class="th_details" colspan="6">Details</th>
13872           </tr>
13873           <tr class="entry_cont">
13874             <td class="entry_details" colspan="6">
13875               <p>This setting controls the physical focal length of the camera
13876 device's lens.<wbr/> Changing the focal length changes the field of
13877 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
13878 <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
13879 setting won't be applied instantaneously,<wbr/> and it may take several
13880 frames before the lens can change to the requested focal length.<wbr/>
13881 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
13882 be set to MOVING.<wbr/></p>
13883 <p>Optical zoom will not be supported on most devices.<wbr/></p>
13884             </td>
13885           </tr>
13886
13887
13888           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13889            <!-- end of entry -->
13890         
13891                 
13892           <tr class="entry" id="dynamic_android.lens.focusDistance">
13893             <td class="entry_name
13894              " rowspan="3">
13895               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
13896             </td>
13897             <td class="entry_type">
13898                 <span class="entry_type_name">float</span>
13899
13900               <span class="entry_type_visibility"> [public]</span>
13901
13902
13903               <span class="entry_type_hwlevel">[full] </span>
13904
13905
13906
13907
13908             </td> <!-- entry_type -->
13909
13910             <td class="entry_description">
13911               <p>Desired distance to plane of sharpest focus,<wbr/>
13912 measured from frontmost surface of the lens.<wbr/></p>
13913             </td>
13914
13915             <td class="entry_units">
13916               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13917             </td>
13918
13919             <td class="entry_range">
13920               <p>&gt;= 0</p>
13921             </td>
13922
13923             <td class="entry_hal_version">
13924               <p>3.<wbr/>2</p>
13925             </td>
13926
13927             <td class="entry_tags">
13928               <ul class="entry_tags">
13929                   <li><a href="#tag_BC">BC</a></li>
13930               </ul>
13931             </td>
13932
13933           </tr>
13934           <tr class="entries_header">
13935             <th class="th_details" colspan="6">Details</th>
13936           </tr>
13937           <tr class="entry_cont">
13938             <td class="entry_details" colspan="6">
13939               <p>Should be zero for fixed-focus cameras</p>
13940             </td>
13941           </tr>
13942
13943
13944           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13945            <!-- end of entry -->
13946         
13947                 
13948           <tr class="entry" id="dynamic_android.lens.focusRange">
13949             <td class="entry_name
13950              " rowspan="3">
13951               android.<wbr/>lens.<wbr/>focus<wbr/>Range
13952             </td>
13953             <td class="entry_type">
13954                 <span class="entry_type_name">float</span>
13955                 <span class="entry_type_container">x</span>
13956
13957                 <span class="entry_type_array">
13958                   2
13959                 </span>
13960               <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
13961
13962
13963               <span class="entry_type_hwlevel">[limited] </span>
13964
13965
13966                 <div class="entry_type_notes">Range of scene distances that are in focus</div>
13967
13968
13969             </td> <!-- entry_type -->
13970
13971             <td class="entry_description">
13972               <p>The range of scene distances that are in
13973 sharp focus (depth of field).<wbr/></p>
13974             </td>
13975
13976             <td class="entry_units">
13977               A pair of focus distances in diopters: (near,<wbr/>
13978           far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
13979             </td>
13980
13981             <td class="entry_range">
13982               <p>&gt;=0</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>If variable focus not supported,<wbr/> can still report
14002 fixed depth of field range</p>
14003             </td>
14004           </tr>
14005
14006
14007           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14008            <!-- end of entry -->
14009         
14010                 
14011           <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
14012             <td class="entry_name
14013              " rowspan="3">
14014               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
14015             </td>
14016             <td class="entry_type">
14017                 <span class="entry_type_name entry_type_name_enum">byte</span>
14018
14019               <span class="entry_type_visibility"> [public]</span>
14020
14021
14022               <span class="entry_type_hwlevel">[limited] </span>
14023
14024
14025
14026                 <ul class="entry_type_enum">
14027                   <li>
14028                     <span class="entry_type_enum_name">OFF (v3.2)</span>
14029                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
14030                   </li>
14031                   <li>
14032                     <span class="entry_type_enum_name">ON (v3.2)</span>
14033                     <span class="entry_type_enum_optional">[optional]</span>
14034                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
14035                   </li>
14036                 </ul>
14037
14038             </td> <!-- entry_type -->
14039
14040             <td class="entry_description">
14041               <p>Sets whether the camera device uses optical image stabilization (OIS)
14042 when capturing images.<wbr/></p>
14043             </td>
14044
14045             <td class="entry_units">
14046             </td>
14047
14048             <td class="entry_range">
14049               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
14050             </td>
14051
14052             <td class="entry_hal_version">
14053               <p>3.<wbr/>2</p>
14054             </td>
14055
14056             <td class="entry_tags">
14057               <ul class="entry_tags">
14058                   <li><a href="#tag_V1">V1</a></li>
14059               </ul>
14060             </td>
14061
14062           </tr>
14063           <tr class="entries_header">
14064             <th class="th_details" colspan="6">Details</th>
14065           </tr>
14066           <tr class="entry_cont">
14067             <td class="entry_details" colspan="6">
14068               <p>OIS is used to compensate for motion blur due to small
14069 movements of the camera during capture.<wbr/> Unlike digital image
14070 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
14071 makes use of mechanical elements to stabilize the camera
14072 sensor,<wbr/> and thus allows for longer exposure times before
14073 camera shake becomes apparent.<wbr/></p>
14074 <p>Switching between different optical stabilization modes may take several
14075 frames to initialize,<wbr/> the camera device will report the current mode in
14076 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
14077 optical stabilization modes in the first several capture results may still
14078 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
14079 <p>If a camera device supports both OIS and digital image stabilization
14080 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
14081 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
14082 <p>Not all devices will support OIS; see
14083 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
14084 available controls.<wbr/></p>
14085             </td>
14086           </tr>
14087
14088
14089           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14090            <!-- end of entry -->
14091         
14092                 
14093           <tr class="entry" id="dynamic_android.lens.state">
14094             <td class="entry_name
14095              " rowspan="3">
14096               android.<wbr/>lens.<wbr/>state
14097             </td>
14098             <td class="entry_type">
14099                 <span class="entry_type_name entry_type_name_enum">byte</span>
14100
14101               <span class="entry_type_visibility"> [public]</span>
14102
14103
14104               <span class="entry_type_hwlevel">[limited] </span>
14105
14106
14107
14108                 <ul class="entry_type_enum">
14109                   <li>
14110                     <span class="entry_type_enum_name">STATIONARY (v3.2)</span>
14111                     <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/>
14112 <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>
14113                   </li>
14114                   <li>
14115                     <span class="entry_type_enum_name">MOVING (v3.2)</span>
14116                     <span class="entry_type_enum_notes"><p>One or several of the lens parameters
14117 (<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/>
14118 <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
14119 currently changing.<wbr/></p></span>
14120                   </li>
14121                 </ul>
14122
14123             </td> <!-- entry_type -->
14124
14125             <td class="entry_description">
14126               <p>Current lens status.<wbr/></p>
14127             </td>
14128
14129             <td class="entry_units">
14130             </td>
14131
14132             <td class="entry_range">
14133             </td>
14134
14135             <td class="entry_hal_version">
14136               <p>3.<wbr/>2</p>
14137             </td>
14138
14139             <td class="entry_tags">
14140               <ul class="entry_tags">
14141                   <li><a href="#tag_V1">V1</a></li>
14142               </ul>
14143             </td>
14144
14145           </tr>
14146           <tr class="entries_header">
14147             <th class="th_details" colspan="6">Details</th>
14148           </tr>
14149           <tr class="entry_cont">
14150             <td class="entry_details" colspan="6">
14151               <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/>
14152 <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/>
14153 they may take several frames to reach the requested values.<wbr/> This state indicates
14154 the current status of the lens parameters.<wbr/></p>
14155 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
14156 either because the parameters are all fixed,<wbr/> or because the lens has had enough
14157 time to reach the most recently-requested values.<wbr/>
14158 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
14159 <ul>
14160 <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
14161 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
14162 <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/>
14163 which means the optical zoom is not supported.<wbr/></li>
14164 <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>
14165 <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>
14166 </ul>
14167 <p>Then this state will always be STATIONARY.<wbr/></p>
14168 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
14169 is changing.<wbr/></p>
14170             </td>
14171           </tr>
14172
14173
14174           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14175            <!-- end of entry -->
14176         
14177                 
14178           <tr class="entry" id="dynamic_android.lens.poseRotation">
14179             <td class="entry_name
14180              " rowspan="3">
14181               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
14182             </td>
14183             <td class="entry_type">
14184                 <span class="entry_type_name">float</span>
14185                 <span class="entry_type_container">x</span>
14186
14187                 <span class="entry_type_array">
14188                   4
14189                 </span>
14190               <span class="entry_type_visibility"> [public]</span>
14191
14192
14193
14194
14195
14196
14197             </td> <!-- entry_type -->
14198
14199             <td class="entry_description">
14200               <p>The orientation of the camera relative to the sensor
14201 coordinate system.<wbr/></p>
14202             </td>
14203
14204             <td class="entry_units">
14205               
14206             Quaternion coefficients
14207           
14208             </td>
14209
14210             <td class="entry_range">
14211             </td>
14212
14213             <td class="entry_hal_version">
14214               <p>3.<wbr/>2</p>
14215             </td>
14216
14217             <td class="entry_tags">
14218               <ul class="entry_tags">
14219                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14220               </ul>
14221             </td>
14222
14223           </tr>
14224           <tr class="entries_header">
14225             <th class="th_details" colspan="6">Details</th>
14226           </tr>
14227           <tr class="entry_cont">
14228             <td class="entry_details" colspan="6">
14229               <p>The four coefficients that describe the quaternion
14230 rotation from the Android sensor coordinate system to a
14231 camera-aligned coordinate system where the X-axis is
14232 aligned with the long side of the image sensor,<wbr/> the Y-axis
14233 is aligned with the short side of the image sensor,<wbr/> and
14234 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
14235 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
14236 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
14237 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
14238 <pre><code> theta = 2 * acos(w)
14239 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
14240 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
14241 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
14242 </code></pre>
14243 <p>To create a 3x3 rotation matrix that applies the rotation
14244 defined by this quaternion,<wbr/> the following matrix can be
14245 used:</p>
14246 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
14247            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
14248            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
14249 </code></pre>
14250 <p>This matrix can then be used to apply the rotation to a
14251  column vector point with</p>
14252 <p><code>p' = Rp</code></p>
14253 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
14254  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
14255             </td>
14256           </tr>
14257
14258
14259           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14260            <!-- end of entry -->
14261         
14262                 
14263           <tr class="entry" id="dynamic_android.lens.poseTranslation">
14264             <td class="entry_name
14265              " rowspan="3">
14266               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
14267             </td>
14268             <td class="entry_type">
14269                 <span class="entry_type_name">float</span>
14270                 <span class="entry_type_container">x</span>
14271
14272                 <span class="entry_type_array">
14273                   3
14274                 </span>
14275               <span class="entry_type_visibility"> [public]</span>
14276
14277
14278
14279
14280
14281
14282             </td> <!-- entry_type -->
14283
14284             <td class="entry_description">
14285               <p>Position of the camera optical center.<wbr/></p>
14286             </td>
14287
14288             <td class="entry_units">
14289               Meters
14290             </td>
14291
14292             <td class="entry_range">
14293             </td>
14294
14295             <td class="entry_hal_version">
14296               <p>3.<wbr/>2</p>
14297             </td>
14298
14299             <td class="entry_tags">
14300               <ul class="entry_tags">
14301                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14302               </ul>
14303             </td>
14304
14305           </tr>
14306           <tr class="entries_header">
14307             <th class="th_details" colspan="6">Details</th>
14308           </tr>
14309           <tr class="entry_cont">
14310             <td class="entry_details" colspan="6">
14311               <p>The position of the camera device's lens optical center,<wbr/>
14312 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
14313 optical center of the largest camera device facing in the
14314 same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
14315 axes</a>.<wbr/> Note that only the axis definitions are shared with
14316 the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
14317 <p>If this device is the largest or only camera device with a
14318 given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
14319 camera device with a lens optical center located 3 cm from
14320 the main sensor along the +X axis (to the right from the
14321 user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
14322 <p>To transform a pixel coordinates between two cameras
14323 facing the same direction,<wbr/> first the source camera
14324 <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
14325 the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
14326 to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
14327 of the source camera,<wbr/> the translation of the source camera
14328 relative to the destination camera,<wbr/> the
14329 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
14330 finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
14331 of the destination camera.<wbr/> This obtains a
14332 radial-distortion-free coordinate in the destination
14333 camera pixel coordinates.<wbr/></p>
14334 <p>To compare this against a real image from the destination
14335 camera,<wbr/> the destination camera image then needs to be
14336 corrected for radial distortion before comparison or
14337 sampling.<wbr/></p>
14338             </td>
14339           </tr>
14340
14341
14342           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14343            <!-- end of entry -->
14344         
14345                 
14346           <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
14347             <td class="entry_name
14348              " rowspan="3">
14349               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
14350             </td>
14351             <td class="entry_type">
14352                 <span class="entry_type_name">float</span>
14353                 <span class="entry_type_container">x</span>
14354
14355                 <span class="entry_type_array">
14356                   5
14357                 </span>
14358               <span class="entry_type_visibility"> [public]</span>
14359
14360
14361
14362
14363
14364
14365             </td> <!-- entry_type -->
14366
14367             <td class="entry_description">
14368               <p>The parameters for this camera device's intrinsic
14369 calibration.<wbr/></p>
14370             </td>
14371
14372             <td class="entry_units">
14373               
14374             Pixels in the
14375             android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
14376             coordinate system.<wbr/>
14377           
14378             </td>
14379
14380             <td class="entry_range">
14381             </td>
14382
14383             <td class="entry_hal_version">
14384               <p>3.<wbr/>2</p>
14385             </td>
14386
14387             <td class="entry_tags">
14388               <ul class="entry_tags">
14389                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14390               </ul>
14391             </td>
14392
14393           </tr>
14394           <tr class="entries_header">
14395             <th class="th_details" colspan="6">Details</th>
14396           </tr>
14397           <tr class="entry_cont">
14398             <td class="entry_details" colspan="6">
14399               <p>The five calibration parameters that describe the
14400 transform from camera-centric 3D coordinates to sensor
14401 pixel coordinates:</p>
14402 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
14403 </code></pre>
14404 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
14405 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
14406 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
14407 being aligned with the lens plane.<wbr/></p>
14408 <p>These are typically used within a transformation matrix K:</p>
14409 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
14410        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
14411        0    0,<wbr/>   1 ]
14412 </code></pre>
14413 <p>which can then be combined with the camera pose rotation
14414 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
14415 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
14416 complete transform from world coordinates to pixel
14417 coordinates:</p>
14418 <pre><code>P = [ K 0   * [ R t
14419      0 1 ]     0 1 ]
14420 </code></pre>
14421 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
14422 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
14423 coordinate system,<wbr/> and with the mapping including the
14424 homogeneous division by z:</p>
14425 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
14426 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
14427 </code></pre>
14428 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
14429 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
14430 (depth) in pixel coordinates.<wbr/></p>
14431 <p>Note that the coordinate system for this transform is the
14432 <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/>
14433 where <code>(0,<wbr/>0)</code> is the top-left of the
14434 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
14435 intrinsic calibration transforms have been applied to a
14436 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
14437 transform needs to be applied,<wbr/> and the result adjusted to
14438 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
14439 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
14440 activeArraySize rectangle),<wbr/> to determine the final pixel
14441 coordinate of the world point for processed (non-RAW)
14442 output buffers.<wbr/></p>
14443             </td>
14444           </tr>
14445
14446
14447           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14448            <!-- end of entry -->
14449         
14450                 
14451           <tr class="entry" id="dynamic_android.lens.radialDistortion">
14452             <td class="entry_name
14453              " rowspan="3">
14454               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
14455             </td>
14456             <td class="entry_type">
14457                 <span class="entry_type_name">float</span>
14458                 <span class="entry_type_container">x</span>
14459
14460                 <span class="entry_type_array">
14461                   6
14462                 </span>
14463               <span class="entry_type_visibility"> [public]</span>
14464
14465
14466
14467
14468
14469
14470             </td> <!-- entry_type -->
14471
14472             <td class="entry_description">
14473               <p>The correction coefficients to correct for this camera device's
14474 radial and tangential lens distortion.<wbr/></p>
14475             </td>
14476
14477             <td class="entry_units">
14478               
14479             Unitless coefficients.<wbr/>
14480           
14481             </td>
14482
14483             <td class="entry_range">
14484             </td>
14485
14486             <td class="entry_hal_version">
14487               <p>3.<wbr/>2</p>
14488             </td>
14489
14490             <td class="entry_tags">
14491               <ul class="entry_tags">
14492                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14493               </ul>
14494             </td>
14495
14496           </tr>
14497           <tr class="entries_header">
14498             <th class="th_details" colspan="6">Details</th>
14499           </tr>
14500           <tr class="entry_cont">
14501             <td class="entry_details" colspan="6">
14502               <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14503 kappa_<wbr/>3]</code> and two tangential distortion coefficients
14504 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14505 lens's geometric distortion with the mapping equations:</p>
14506 <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 ) +
14507        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14508  y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14509        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14510 </code></pre>
14511 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14512 input image that correspond to the pixel values in the
14513 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14514 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14515 </code></pre>
14516 <p>The pixel coordinates are defined in a normalized
14517 coordinate system related to the
14518 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
14519 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
14520 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
14521 of both x and y coordinates are normalized to be 1 at the
14522 edge further from the optical center,<wbr/> so the range
14523 for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
14524 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14525 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
14526 is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
14527 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14528             </td>
14529           </tr>
14530
14531
14532           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14533            <!-- end of entry -->
14534         
14535         
14536
14537       <!-- end of kind -->
14538       </tbody>
14539
14540   <!-- end of section -->
14541   <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
14542
14543
14544       <tr><td colspan="7" class="kind">controls</td></tr>
14545
14546       <thead class="entries_header">
14547         <tr>
14548           <th class="th_name">Property Name</th>
14549           <th class="th_type">Type</th>
14550           <th class="th_description">Description</th>
14551           <th class="th_units">Units</th>
14552           <th class="th_range">Range</th>
14553           <th class="th_hal_version">Initial HIDL HAL version</th>
14554           <th class="th_tags">Tags</th>
14555         </tr>
14556       </thead>
14557
14558       <tbody>
14559
14560         
14561
14562         
14563
14564         
14565
14566         
14567
14568                 
14569           <tr class="entry" id="controls_android.noiseReduction.mode">
14570             <td class="entry_name
14571              " rowspan="5">
14572               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14573             </td>
14574             <td class="entry_type">
14575                 <span class="entry_type_name entry_type_name_enum">byte</span>
14576
14577               <span class="entry_type_visibility"> [public]</span>
14578
14579
14580               <span class="entry_type_hwlevel">[full] </span>
14581
14582
14583
14584                 <ul class="entry_type_enum">
14585                   <li>
14586                     <span class="entry_type_enum_name">OFF (v3.2)</span>
14587                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14588                   </li>
14589                   <li>
14590                     <span class="entry_type_enum_name">FAST (v3.2)</span>
14591                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14592 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14593 relative to sensor.<wbr/></p></span>
14594                   </li>
14595                   <li>
14596                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
14597                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14598 rate relative to sensor output.<wbr/></p></span>
14599                   </li>
14600                   <li>
14601                     <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
14602                     <span class="entry_type_enum_optional">[optional]</span>
14603                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14604 sensor output.<wbr/> </p></span>
14605                   </li>
14606                   <li>
14607                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
14608                     <span class="entry_type_enum_optional">[optional]</span>
14609                     <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14610 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>)
14611 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
14612 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
14613 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
14614 and the quality is equal to or better than FAST (since it is only applied to
14615 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
14616 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14617 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14618 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14619 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
14620 high-resolution buffers must not have noise reduction applied to maximize efficiency of
14621 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14622 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14623 applied for reasonable preview quality.<wbr/></p>
14624 <p>This mode is guaranteed to be supported by devices that support either the
14625 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14626 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14627 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14628                   </li>
14629                 </ul>
14630
14631             </td> <!-- entry_type -->
14632
14633             <td class="entry_description">
14634               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14635             </td>
14636
14637             <td class="entry_units">
14638             </td>
14639
14640             <td class="entry_range">
14641               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14642             </td>
14643
14644             <td class="entry_hal_version">
14645               <p>3.<wbr/>2</p>
14646             </td>
14647
14648             <td class="entry_tags">
14649               <ul class="entry_tags">
14650                   <li><a href="#tag_V1">V1</a></li>
14651                   <li><a href="#tag_REPROC">REPROC</a></li>
14652               </ul>
14653             </td>
14654
14655           </tr>
14656           <tr class="entries_header">
14657             <th class="th_details" colspan="6">Details</th>
14658           </tr>
14659           <tr class="entry_cont">
14660             <td class="entry_details" colspan="6">
14661               <p>The noise reduction algorithm attempts to improve image quality by removing
14662 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
14663 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
14664 YUV domain.<wbr/></p>
14665 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
14666 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
14667 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14668 <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>
14669 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14670 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14671 will use the highest-quality noise filtering algorithms,<wbr/>
14672 even if it slows down capture rate.<wbr/> FAST means the camera device will not
14673 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14674 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14675 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14676 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14677 buffer of high-resolution images during preview and reprocess image(s) from that buffer
14678 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14679 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14680 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14681 those will be reprocessed later if necessary.<wbr/></p>
14682 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14683 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14684 may adjust the noise reduction parameters for best image quality based on the
14685 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
14686             </td>
14687           </tr>
14688
14689           <tr class="entries_header">
14690             <th class="th_details" colspan="6">HAL Implementation Details</th>
14691           </tr>
14692           <tr class="entry_cont">
14693             <td class="entry_details" colspan="6">
14694               <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
14695 adjust the internal noise reduction parameters appropriately to get the best quality
14696 images.<wbr/></p>
14697             </td>
14698           </tr>
14699
14700           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14701            <!-- end of entry -->
14702         
14703                 
14704           <tr class="entry" id="controls_android.noiseReduction.strength">
14705             <td class="entry_name
14706              " rowspan="1">
14707               android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
14708             </td>
14709             <td class="entry_type">
14710                 <span class="entry_type_name">byte</span>
14711
14712               <span class="entry_type_visibility"> [system]</span>
14713
14714
14715
14716
14717
14718
14719             </td> <!-- entry_type -->
14720
14721             <td class="entry_description">
14722               <p>Control the amount of noise reduction
14723 applied to the images</p>
14724             </td>
14725
14726             <td class="entry_units">
14727               1-10; 10 is max noise reduction
14728             </td>
14729
14730             <td class="entry_range">
14731               <p>1 - 10</p>
14732             </td>
14733
14734             <td class="entry_hal_version">
14735               <p>3.<wbr/>2</p>
14736             </td>
14737
14738             <td class="entry_tags">
14739               <ul class="entry_tags">
14740                   <li><a href="#tag_FUTURE">FUTURE</a></li>
14741               </ul>
14742             </td>
14743
14744           </tr>
14745
14746
14747           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14748            <!-- end of entry -->
14749         
14750         
14751
14752       <!-- end of kind -->
14753       </tbody>
14754       <tr><td colspan="7" class="kind">static</td></tr>
14755
14756       <thead class="entries_header">
14757         <tr>
14758           <th class="th_name">Property Name</th>
14759           <th class="th_type">Type</th>
14760           <th class="th_description">Description</th>
14761           <th class="th_units">Units</th>
14762           <th class="th_range">Range</th>
14763           <th class="th_hal_version">Initial HIDL HAL version</th>
14764           <th class="th_tags">Tags</th>
14765         </tr>
14766       </thead>
14767
14768       <tbody>
14769
14770         
14771
14772         
14773
14774         
14775
14776         
14777
14778                 
14779           <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
14780             <td class="entry_name
14781              " rowspan="5">
14782               android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
14783             </td>
14784             <td class="entry_type">
14785                 <span class="entry_type_name">byte</span>
14786                 <span class="entry_type_container">x</span>
14787
14788                 <span class="entry_type_array">
14789                   n
14790                 </span>
14791               <span class="entry_type_visibility"> [public as enumList]</span>
14792
14793
14794               <span class="entry_type_hwlevel">[limited] </span>
14795
14796
14797                 <div class="entry_type_notes">list of enums</div>
14798
14799
14800             </td> <!-- entry_type -->
14801
14802             <td class="entry_description">
14803               <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
14804 by this camera device.<wbr/></p>
14805             </td>
14806
14807             <td class="entry_units">
14808             </td>
14809
14810             <td class="entry_range">
14811               <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
14812             </td>
14813
14814             <td class="entry_hal_version">
14815               <p>3.<wbr/>2</p>
14816             </td>
14817
14818             <td class="entry_tags">
14819               <ul class="entry_tags">
14820                   <li><a href="#tag_V1">V1</a></li>
14821                   <li><a href="#tag_REPROC">REPROC</a></li>
14822               </ul>
14823             </td>
14824
14825           </tr>
14826           <tr class="entries_header">
14827             <th class="th_details" colspan="6">Details</th>
14828           </tr>
14829           <tr class="entry_cont">
14830             <td class="entry_details" colspan="6">
14831               <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
14832 <p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
14833 ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
14834 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
14835             </td>
14836           </tr>
14837
14838           <tr class="entries_header">
14839             <th class="th_details" colspan="6">HAL Implementation Details</th>
14840           </tr>
14841           <tr class="entry_cont">
14842             <td class="entry_details" colspan="6">
14843               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
14844 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
14845 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
14846 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
14847             </td>
14848           </tr>
14849
14850           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14851            <!-- end of entry -->
14852         
14853         
14854
14855       <!-- end of kind -->
14856       </tbody>
14857       <tr><td colspan="7" class="kind">dynamic</td></tr>
14858
14859       <thead class="entries_header">
14860         <tr>
14861           <th class="th_name">Property Name</th>
14862           <th class="th_type">Type</th>
14863           <th class="th_description">Description</th>
14864           <th class="th_units">Units</th>
14865           <th class="th_range">Range</th>
14866           <th class="th_hal_version">Initial HIDL HAL version</th>
14867           <th class="th_tags">Tags</th>
14868         </tr>
14869       </thead>
14870
14871       <tbody>
14872
14873         
14874
14875         
14876
14877         
14878
14879         
14880
14881                 
14882           <tr class="entry" id="dynamic_android.noiseReduction.mode">
14883             <td class="entry_name
14884              " rowspan="5">
14885               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14886             </td>
14887             <td class="entry_type">
14888                 <span class="entry_type_name entry_type_name_enum">byte</span>
14889
14890               <span class="entry_type_visibility"> [public]</span>
14891
14892
14893               <span class="entry_type_hwlevel">[full] </span>
14894
14895
14896
14897                 <ul class="entry_type_enum">
14898                   <li>
14899                     <span class="entry_type_enum_name">OFF (v3.2)</span>
14900                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14901                   </li>
14902                   <li>
14903                     <span class="entry_type_enum_name">FAST (v3.2)</span>
14904                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14905 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14906 relative to sensor.<wbr/></p></span>
14907                   </li>
14908                   <li>
14909                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
14910                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14911 rate relative to sensor output.<wbr/></p></span>
14912                   </li>
14913                   <li>
14914                     <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
14915                     <span class="entry_type_enum_optional">[optional]</span>
14916                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14917 sensor output.<wbr/> </p></span>
14918                   </li>
14919                   <li>
14920                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
14921                     <span class="entry_type_enum_optional">[optional]</span>
14922                     <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14923 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>)
14924 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
14925 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
14926 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
14927 and the quality is equal to or better than FAST (since it is only applied to
14928 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
14929 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14930 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14931 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14932 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
14933 high-resolution buffers must not have noise reduction applied to maximize efficiency of
14934 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14935 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14936 applied for reasonable preview quality.<wbr/></p>
14937 <p>This mode is guaranteed to be supported by devices that support either the
14938 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14939 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14940 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14941                   </li>
14942                 </ul>
14943
14944             </td> <!-- entry_type -->
14945
14946             <td class="entry_description">
14947               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14948             </td>
14949
14950             <td class="entry_units">
14951             </td>
14952
14953             <td class="entry_range">
14954               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14955             </td>
14956
14957             <td class="entry_hal_version">
14958               <p>3.<wbr/>2</p>
14959             </td>
14960
14961             <td class="entry_tags">
14962               <ul class="entry_tags">
14963                   <li><a href="#tag_V1">V1</a></li>
14964                   <li><a href="#tag_REPROC">REPROC</a></li>
14965               </ul>
14966             </td>
14967
14968           </tr>
14969           <tr class="entries_header">
14970             <th class="th_details" colspan="6">Details</th>
14971           </tr>
14972           <tr class="entry_cont">
14973             <td class="entry_details" colspan="6">
14974               <p>The noise reduction algorithm attempts to improve image quality by removing
14975 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
14976 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
14977 YUV domain.<wbr/></p>
14978 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
14979 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
14980 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14981 <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>
14982 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14983 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14984 will use the highest-quality noise filtering algorithms,<wbr/>
14985 even if it slows down capture rate.<wbr/> FAST means the camera device will not
14986 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14987 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14988 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14989 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14990 buffer of high-resolution images during preview and reprocess image(s) from that buffer
14991 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14992 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14993 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14994 those will be reprocessed later if necessary.<wbr/></p>
14995 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14996 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14997 may adjust the noise reduction parameters for best image quality based on the
14998 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
14999             </td>
15000           </tr>
15001
15002           <tr class="entries_header">
15003             <th class="th_details" colspan="6">HAL Implementation Details</th>
15004           </tr>
15005           <tr class="entry_cont">
15006             <td class="entry_details" colspan="6">
15007               <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
15008 adjust the internal noise reduction parameters appropriately to get the best quality
15009 images.<wbr/></p>
15010             </td>
15011           </tr>
15012
15013           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15014            <!-- end of entry -->
15015         
15016         
15017
15018       <!-- end of kind -->
15019       </tbody>
15020
15021   <!-- end of section -->
15022   <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
15023
15024
15025       <tr><td colspan="7" class="kind">static</td></tr>
15026
15027       <thead class="entries_header">
15028         <tr>
15029           <th class="th_name">Property Name</th>
15030           <th class="th_type">Type</th>
15031           <th class="th_description">Description</th>
15032           <th class="th_units">Units</th>
15033           <th class="th_range">Range</th>
15034           <th class="th_hal_version">Initial HIDL HAL version</th>
15035           <th class="th_tags">Tags</th>
15036         </tr>
15037       </thead>
15038
15039       <tbody>
15040
15041         
15042
15043         
15044
15045         
15046
15047         
15048
15049                 
15050           <tr class="entry" id="static_android.quirks.meteringCropRegion">
15051             <td class="entry_name
15052                 entry_name_deprecated
15053              " rowspan="3">
15054               android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
15055             </td>
15056             <td class="entry_type">
15057                 <span class="entry_type_name">byte</span>
15058
15059               <span class="entry_type_visibility"> [system]</span>
15060
15061
15062
15063               <span class="entry_type_deprecated">[deprecated] </span>
15064
15065
15066
15067             </td> <!-- entry_type -->
15068
15069             <td class="entry_description">
15070               <p>If set to 1,<wbr/> the camera service does not
15071 scale 'normalized' coordinates with respect to the crop
15072 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
15073 and output (face rectangles).<wbr/></p>
15074             </td>
15075
15076             <td class="entry_units">
15077             </td>
15078
15079             <td class="entry_range">
15080               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15081             </td>
15082
15083             <td class="entry_hal_version">
15084               <p>3.<wbr/>2</p>
15085             </td>
15086
15087             <td class="entry_tags">
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>Normalized coordinates refer to those in the
15097 (-1000,<wbr/>1000) range mentioned in the
15098 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15099 <p>HAL implementations should instead always use and emit
15100 sensor array-relative coordinates for all region data.<wbr/> Does
15101 not need to be listed in static metadata.<wbr/> Support will be
15102 removed in future versions of camera service.<wbr/></p>
15103             </td>
15104           </tr>
15105
15106
15107           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15108            <!-- end of entry -->
15109         
15110                 
15111           <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
15112             <td class="entry_name
15113                 entry_name_deprecated
15114              " rowspan="3">
15115               android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
15116             </td>
15117             <td class="entry_type">
15118                 <span class="entry_type_name">byte</span>
15119
15120               <span class="entry_type_visibility"> [system]</span>
15121
15122
15123
15124               <span class="entry_type_deprecated">[deprecated] </span>
15125
15126
15127
15128             </td> <!-- entry_type -->
15129
15130             <td class="entry_description">
15131               <p>If set to 1,<wbr/> then the camera service always
15132 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
15133 trigger.<wbr/></p>
15134             </td>
15135
15136             <td class="entry_units">
15137             </td>
15138
15139             <td class="entry_range">
15140               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15141             </td>
15142
15143             <td class="entry_hal_version">
15144               <p>3.<wbr/>2</p>
15145             </td>
15146
15147             <td class="entry_tags">
15148             </td>
15149
15150           </tr>
15151           <tr class="entries_header">
15152             <th class="th_details" colspan="6">Details</th>
15153           </tr>
15154           <tr class="entry_cont">
15155             <td class="entry_details" colspan="6">
15156               <p>HAL implementations should implement AF trigger
15157 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
15158 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
15159 not need to be listed in static metadata.<wbr/> Support will be
15160 removed in future versions of camera service</p>
15161             </td>
15162           </tr>
15163
15164
15165           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15166            <!-- end of entry -->
15167         
15168                 
15169           <tr class="entry" id="static_android.quirks.useZslFormat">
15170             <td class="entry_name
15171                 entry_name_deprecated
15172              " rowspan="3">
15173               android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
15174             </td>
15175             <td class="entry_type">
15176                 <span class="entry_type_name">byte</span>
15177
15178               <span class="entry_type_visibility"> [system]</span>
15179
15180
15181
15182               <span class="entry_type_deprecated">[deprecated] </span>
15183
15184
15185
15186             </td> <!-- entry_type -->
15187
15188             <td class="entry_description">
15189               <p>If set to 1,<wbr/> the camera service uses
15190 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
15191 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
15192 shutter lag stream</p>
15193             </td>
15194
15195             <td class="entry_units">
15196             </td>
15197
15198             <td class="entry_range">
15199               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15200             </td>
15201
15202             <td class="entry_hal_version">
15203               <p>3.<wbr/>2</p>
15204             </td>
15205
15206             <td class="entry_tags">
15207             </td>
15208
15209           </tr>
15210           <tr class="entries_header">
15211             <th class="th_details" colspan="6">Details</th>
15212           </tr>
15213           <tr class="entry_cont">
15214             <td class="entry_details" colspan="6">
15215               <p>HAL implementations should use gralloc usage flags
15216 to determine that a stream will be used for
15217 zero-shutter-lag,<wbr/> instead of relying on an explicit
15218 format setting.<wbr/> Does not need to be listed in static
15219 metadata.<wbr/> Support will be removed in future versions of
15220 camera service.<wbr/></p>
15221             </td>
15222           </tr>
15223
15224
15225           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15226            <!-- end of entry -->
15227         
15228                 
15229           <tr class="entry" id="static_android.quirks.usePartialResult">
15230             <td class="entry_name
15231                 entry_name_deprecated
15232              " rowspan="5">
15233               android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
15234             </td>
15235             <td class="entry_type">
15236                 <span class="entry_type_name">byte</span>
15237
15238               <span class="entry_type_visibility"> [hidden]</span>
15239
15240
15241
15242               <span class="entry_type_deprecated">[deprecated] </span>
15243
15244
15245
15246             </td> <!-- entry_type -->
15247
15248             <td class="entry_description">
15249               <p>If set to 1,<wbr/> the HAL will always split result
15250 metadata for a single capture into multiple buffers,<wbr/>
15251 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
15252             </td>
15253
15254             <td class="entry_units">
15255             </td>
15256
15257             <td class="entry_range">
15258               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15259             </td>
15260
15261             <td class="entry_hal_version">
15262               <p>3.<wbr/>2</p>
15263             </td>
15264
15265             <td class="entry_tags">
15266             </td>
15267
15268           </tr>
15269           <tr class="entries_header">
15270             <th class="th_details" colspan="6">Details</th>
15271           </tr>
15272           <tr class="entry_cont">
15273             <td class="entry_details" colspan="6">
15274               <p>Does not need to be listed in static
15275 metadata.<wbr/> Support for partial results will be reworked in
15276 future versions of camera service.<wbr/> This quirk will stop
15277 working at that point; DO NOT USE without careful
15278 consideration of future support.<wbr/></p>
15279             </td>
15280           </tr>
15281
15282           <tr class="entries_header">
15283             <th class="th_details" colspan="6">HAL Implementation Details</th>
15284           </tr>
15285           <tr class="entry_cont">
15286             <td class="entry_details" colspan="6">
15287               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15288 for information on how to implement partial results.<wbr/></p>
15289             </td>
15290           </tr>
15291
15292           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15293            <!-- end of entry -->
15294         
15295         
15296
15297       <!-- end of kind -->
15298       </tbody>
15299       <tr><td colspan="7" class="kind">dynamic</td></tr>
15300
15301       <thead class="entries_header">
15302         <tr>
15303           <th class="th_name">Property Name</th>
15304           <th class="th_type">Type</th>
15305           <th class="th_description">Description</th>
15306           <th class="th_units">Units</th>
15307           <th class="th_range">Range</th>
15308           <th class="th_hal_version">Initial HIDL HAL version</th>
15309           <th class="th_tags">Tags</th>
15310         </tr>
15311       </thead>
15312
15313       <tbody>
15314
15315         
15316
15317         
15318
15319         
15320
15321         
15322
15323                 
15324           <tr class="entry" id="dynamic_android.quirks.partialResult">
15325             <td class="entry_name
15326                 entry_name_deprecated
15327              " rowspan="5">
15328               android.<wbr/>quirks.<wbr/>partial<wbr/>Result
15329             </td>
15330             <td class="entry_type">
15331                 <span class="entry_type_name entry_type_name_enum">byte</span>
15332
15333               <span class="entry_type_visibility"> [hidden as boolean]</span>
15334
15335
15336
15337               <span class="entry_type_deprecated">[deprecated] </span>
15338
15339
15340                 <ul class="entry_type_enum">
15341                   <li>
15342                     <span class="entry_type_enum_name">FINAL (v3.2)</span>
15343                     <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
15344 for this capture.<wbr/></p></span>
15345                   </li>
15346                   <li>
15347                     <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
15348                     <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
15349 capture.<wbr/> More result buffers for this capture will be sent
15350 by the camera device,<wbr/> the last of which will be marked
15351 FINAL.<wbr/></p></span>
15352                   </li>
15353                 </ul>
15354
15355             </td> <!-- entry_type -->
15356
15357             <td class="entry_description">
15358               <p>Whether a result given to the framework is the
15359 final one for the capture,<wbr/> or only a partial that contains a
15360 subset of the full set of dynamic metadata
15361 values.<wbr/></p>
15362             </td>
15363
15364             <td class="entry_units">
15365             </td>
15366
15367             <td class="entry_range">
15368               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15369               <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
15370             </td>
15371
15372             <td class="entry_hal_version">
15373               <p>3.<wbr/>2</p>
15374             </td>
15375
15376             <td class="entry_tags">
15377             </td>
15378
15379           </tr>
15380           <tr class="entries_header">
15381             <th class="th_details" colspan="6">Details</th>
15382           </tr>
15383           <tr class="entry_cont">
15384             <td class="entry_details" colspan="6">
15385               <p>The entries in the result metadata buffers for a
15386 single capture may not overlap,<wbr/> except for this entry.<wbr/> The
15387 FINAL buffers must retain FIFO ordering relative to the
15388 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
15389 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
15390 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
15391 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
15392 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
15393 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
15394             </td>
15395           </tr>
15396
15397           <tr class="entries_header">
15398             <th class="th_details" colspan="6">HAL Implementation Details</th>
15399           </tr>
15400           <tr class="entry_cont">
15401             <td class="entry_details" colspan="6">
15402               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15403 for information on how to implement partial results.<wbr/></p>
15404             </td>
15405           </tr>
15406
15407           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15408            <!-- end of entry -->
15409         
15410         
15411
15412       <!-- end of kind -->
15413       </tbody>
15414
15415   <!-- end of section -->
15416   <tr><td colspan="7" id="section_request" class="section">request</td></tr>
15417
15418
15419       <tr><td colspan="7" class="kind">controls</td></tr>
15420
15421       <thead class="entries_header">
15422         <tr>
15423           <th class="th_name">Property Name</th>
15424           <th class="th_type">Type</th>
15425           <th class="th_description">Description</th>
15426           <th class="th_units">Units</th>
15427           <th class="th_range">Range</th>
15428           <th class="th_hal_version">Initial HIDL HAL version</th>
15429           <th class="th_tags">Tags</th>
15430         </tr>
15431       </thead>
15432
15433       <tbody>
15434
15435         
15436
15437         
15438
15439         
15440
15441         
15442
15443                 
15444           <tr class="entry" id="controls_android.request.frameCount">
15445             <td class="entry_name
15446                 entry_name_deprecated
15447              " rowspan="1">
15448               android.<wbr/>request.<wbr/>frame<wbr/>Count
15449             </td>
15450             <td class="entry_type">
15451                 <span class="entry_type_name">int32</span>
15452
15453               <span class="entry_type_visibility"> [system]</span>
15454
15455
15456
15457               <span class="entry_type_deprecated">[deprecated] </span>
15458
15459
15460
15461             </td> <!-- entry_type -->
15462
15463             <td class="entry_description">
15464               <p>A frame counter set by the framework.<wbr/> Must
15465 be maintained unchanged in output frame.<wbr/> This value monotonically
15466 increases with every new result (that is,<wbr/> each new result has a unique
15467 frameCount value).<wbr/></p>
15468             </td>
15469
15470             <td class="entry_units">
15471               incrementing integer
15472             </td>
15473
15474             <td class="entry_range">
15475               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15476               <p>Any int.<wbr/></p>
15477             </td>
15478
15479             <td class="entry_hal_version">
15480               <p>3.<wbr/>2</p>
15481             </td>
15482
15483             <td class="entry_tags">
15484             </td>
15485
15486           </tr>
15487
15488
15489           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15490            <!-- end of entry -->
15491         
15492                 
15493           <tr class="entry" id="controls_android.request.id">
15494             <td class="entry_name
15495              " rowspan="1">
15496               android.<wbr/>request.<wbr/>id
15497             </td>
15498             <td class="entry_type">
15499                 <span class="entry_type_name">int32</span>
15500
15501               <span class="entry_type_visibility"> [hidden]</span>
15502
15503
15504
15505
15506
15507
15508             </td> <!-- entry_type -->
15509
15510             <td class="entry_description">
15511               <p>An application-specified ID for the current
15512 request.<wbr/> Must be maintained unchanged in output
15513 frame</p>
15514             </td>
15515
15516             <td class="entry_units">
15517               arbitrary integer assigned by application
15518             </td>
15519
15520             <td class="entry_range">
15521               <p>Any int</p>
15522             </td>
15523
15524             <td class="entry_hal_version">
15525               <p>3.<wbr/>2</p>
15526             </td>
15527
15528             <td class="entry_tags">
15529               <ul class="entry_tags">
15530                   <li><a href="#tag_V1">V1</a></li>
15531               </ul>
15532             </td>
15533
15534           </tr>
15535
15536
15537           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15538            <!-- end of entry -->
15539         
15540                 
15541           <tr class="entry" id="controls_android.request.inputStreams">
15542             <td class="entry_name
15543                 entry_name_deprecated
15544              " rowspan="3">
15545               android.<wbr/>request.<wbr/>input<wbr/>Streams
15546             </td>
15547             <td class="entry_type">
15548                 <span class="entry_type_name">int32</span>
15549                 <span class="entry_type_container">x</span>
15550
15551                 <span class="entry_type_array">
15552                   n
15553                 </span>
15554               <span class="entry_type_visibility"> [system]</span>
15555
15556
15557
15558               <span class="entry_type_deprecated">[deprecated] </span>
15559
15560
15561
15562             </td> <!-- entry_type -->
15563
15564             <td class="entry_description">
15565               <p>List which camera reprocess stream is used
15566 for the source of reprocessing data.<wbr/></p>
15567             </td>
15568
15569             <td class="entry_units">
15570               List of camera reprocess stream IDs
15571             </td>
15572
15573             <td class="entry_range">
15574               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15575               <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
15576             </td>
15577
15578             <td class="entry_hal_version">
15579               <p>3.<wbr/>2</p>
15580             </td>
15581
15582             <td class="entry_tags">
15583               <ul class="entry_tags">
15584                   <li><a href="#tag_HAL2">HAL2</a></li>
15585               </ul>
15586             </td>
15587
15588           </tr>
15589           <tr class="entries_header">
15590             <th class="th_details" colspan="6">Details</th>
15591           </tr>
15592           <tr class="entry_cont">
15593             <td class="entry_details" colspan="6">
15594               <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
15595 REPROCESS.<wbr/> Ignored otherwise</p>
15596             </td>
15597           </tr>
15598
15599
15600           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15601            <!-- end of entry -->
15602         
15603                 
15604           <tr class="entry" id="controls_android.request.metadataMode">
15605             <td class="entry_name
15606              " rowspan="1">
15607               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
15608             </td>
15609             <td class="entry_type">
15610                 <span class="entry_type_name entry_type_name_enum">byte</span>
15611
15612               <span class="entry_type_visibility"> [system]</span>
15613
15614
15615
15616
15617
15618                 <ul class="entry_type_enum">
15619                   <li>
15620                     <span class="entry_type_enum_name">NONE (v3.2)</span>
15621                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
15622 for application-bound buffer data.<wbr/> If no
15623 application-bound streams exist,<wbr/> no frame should be
15624 placed in the output frame queue.<wbr/> If such streams
15625 exist,<wbr/> a frame should be placed on the output queue
15626 with null metadata but with the necessary output buffer
15627 information.<wbr/> Timestamp information should still be
15628 included with any output stream buffers</p></span>
15629                   </li>
15630                   <li>
15631                     <span class="entry_type_enum_name">FULL (v3.2)</span>
15632                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
15633 only be produced if they are separately
15634 enabled</p></span>
15635                   </li>
15636                 </ul>
15637
15638             </td> <!-- entry_type -->
15639
15640             <td class="entry_description">
15641               <p>How much metadata to produce on
15642 output</p>
15643             </td>
15644
15645             <td class="entry_units">
15646             </td>
15647
15648             <td class="entry_range">
15649             </td>
15650
15651             <td class="entry_hal_version">
15652               <p>3.<wbr/>2</p>
15653             </td>
15654
15655             <td class="entry_tags">
15656               <ul class="entry_tags">
15657                   <li><a href="#tag_FUTURE">FUTURE</a></li>
15658               </ul>
15659             </td>
15660
15661           </tr>
15662
15663
15664           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15665            <!-- end of entry -->
15666         
15667                 
15668           <tr class="entry" id="controls_android.request.outputStreams">
15669             <td class="entry_name
15670                 entry_name_deprecated
15671              " rowspan="3">
15672               android.<wbr/>request.<wbr/>output<wbr/>Streams
15673             </td>
15674             <td class="entry_type">
15675                 <span class="entry_type_name">int32</span>
15676                 <span class="entry_type_container">x</span>
15677
15678                 <span class="entry_type_array">
15679                   n
15680                 </span>
15681               <span class="entry_type_visibility"> [system]</span>
15682
15683
15684
15685               <span class="entry_type_deprecated">[deprecated] </span>
15686
15687
15688
15689             </td> <!-- entry_type -->
15690
15691             <td class="entry_description">
15692               <p>Lists which camera output streams image data
15693 from this capture must be sent to</p>
15694             </td>
15695
15696             <td class="entry_units">
15697               List of camera stream IDs
15698             </td>
15699
15700             <td class="entry_range">
15701               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15702               <p>List must only include streams that have been
15703 created</p>
15704             </td>
15705
15706             <td class="entry_hal_version">
15707               <p>3.<wbr/>2</p>
15708             </td>
15709
15710             <td class="entry_tags">
15711               <ul class="entry_tags">
15712                   <li><a href="#tag_HAL2">HAL2</a></li>
15713               </ul>
15714             </td>
15715
15716           </tr>
15717           <tr class="entries_header">
15718             <th class="th_details" colspan="6">Details</th>
15719           </tr>
15720           <tr class="entry_cont">
15721             <td class="entry_details" colspan="6">
15722               <p>If no output streams are listed,<wbr/> then the image
15723 data should simply be discarded.<wbr/> The image data must
15724 still be captured for metadata and statistics production,<wbr/>
15725 and the lens and flash must operate as requested.<wbr/></p>
15726             </td>
15727           </tr>
15728
15729
15730           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15731            <!-- end of entry -->
15732         
15733                 
15734           <tr class="entry" id="controls_android.request.type">
15735             <td class="entry_name
15736                 entry_name_deprecated
15737              " rowspan="1">
15738               android.<wbr/>request.<wbr/>type
15739             </td>
15740             <td class="entry_type">
15741                 <span class="entry_type_name entry_type_name_enum">byte</span>
15742
15743               <span class="entry_type_visibility"> [system]</span>
15744
15745
15746
15747               <span class="entry_type_deprecated">[deprecated] </span>
15748
15749
15750                 <ul class="entry_type_enum">
15751                   <li>
15752                     <span class="entry_type_enum_name">CAPTURE (v3.2)</span>
15753                     <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
15754 and process it according to the
15755 settings</p></span>
15756                   </li>
15757                   <li>
15758                     <span class="entry_type_enum_name">REPROCESS (v3.2)</span>
15759                     <span class="entry_type_enum_notes"><p>Process previously captured data; the
15760 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
15761 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
15762 needed for reprocessing with [RP]</p></span>
15763                   </li>
15764                 </ul>
15765
15766             </td> <!-- entry_type -->
15767
15768             <td class="entry_description">
15769               <p>The type of the request; either CAPTURE or
15770 REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p>
15771             </td>
15772
15773             <td class="entry_units">
15774             </td>
15775
15776             <td class="entry_range">
15777               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15778             </td>
15779
15780             <td class="entry_hal_version">
15781               <p>3.<wbr/>2</p>
15782             </td>
15783
15784             <td class="entry_tags">
15785               <ul class="entry_tags">
15786                   <li><a href="#tag_HAL2">HAL2</a></li>
15787               </ul>
15788             </td>
15789
15790           </tr>
15791
15792
15793           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15794            <!-- end of entry -->
15795         
15796         
15797
15798       <!-- end of kind -->
15799       </tbody>
15800       <tr><td colspan="7" class="kind">static</td></tr>
15801
15802       <thead class="entries_header">
15803         <tr>
15804           <th class="th_name">Property Name</th>
15805           <th class="th_type">Type</th>
15806           <th class="th_description">Description</th>
15807           <th class="th_units">Units</th>
15808           <th class="th_range">Range</th>
15809           <th class="th_hal_version">Initial HIDL HAL version</th>
15810           <th class="th_tags">Tags</th>
15811         </tr>
15812       </thead>
15813
15814       <tbody>
15815
15816         
15817
15818         
15819
15820         
15821
15822         
15823
15824                 
15825           <tr class="entry" id="static_android.request.maxNumOutputStreams">
15826             <td class="entry_name
15827              " rowspan="3">
15828               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
15829             </td>
15830             <td class="entry_type">
15831                 <span class="entry_type_name">int32</span>
15832                 <span class="entry_type_container">x</span>
15833
15834                 <span class="entry_type_array">
15835                   3
15836                 </span>
15837               <span class="entry_type_visibility"> [ndk_public]</span>
15838
15839
15840               <span class="entry_type_hwlevel">[legacy] </span>
15841
15842
15843
15844
15845             </td> <!-- entry_type -->
15846
15847             <td class="entry_description">
15848               <p>The maximum numbers of different types of output streams
15849 that can be configured and used simultaneously by a camera device.<wbr/></p>
15850             </td>
15851
15852             <td class="entry_units">
15853             </td>
15854
15855             <td class="entry_range">
15856               <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
15857 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
15858 <p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
15859 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
15860 &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>
15861             </td>
15862
15863             <td class="entry_hal_version">
15864               <p>3.<wbr/>2</p>
15865             </td>
15866
15867             <td class="entry_tags">
15868               <ul class="entry_tags">
15869                   <li><a href="#tag_BC">BC</a></li>
15870               </ul>
15871             </td>
15872
15873           </tr>
15874           <tr class="entries_header">
15875             <th class="th_details" colspan="6">Details</th>
15876           </tr>
15877           <tr class="entry_cont">
15878             <td class="entry_details" colspan="6">
15879               <p>This is a 3 element tuple that contains the max number of output simultaneous
15880 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
15881 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
15882 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
15883 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>
15884 <p>This lists the upper bound of the number of output streams supported by
15885 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15886 CPU resources that will consume more power.<wbr/> The image format for an output stream can
15887 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
15888 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
15889 into the 3 stream types as below:</p>
15890 <ul>
15891 <li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
15892   Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
15893 <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
15894   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
15895 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>  Typically
15896   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
15897   <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>
15898 </ul>
15899             </td>
15900           </tr>
15901
15902
15903           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15904            <!-- end of entry -->
15905         
15906                 
15907           <tr class="entry" id="static_android.request.maxNumOutputRaw">
15908             <td class="entry_name
15909              " rowspan="3">
15910               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
15911             </td>
15912             <td class="entry_type">
15913                 <span class="entry_type_name">int32</span>
15914
15915               <span class="entry_type_visibility"> [java_public]</span>
15916
15917               <span class="entry_type_synthetic">[synthetic] </span>
15918
15919               <span class="entry_type_hwlevel">[legacy] </span>
15920
15921
15922
15923
15924             </td> <!-- entry_type -->
15925
15926             <td class="entry_description">
15927               <p>The maximum numbers of different types of output streams
15928 that can be configured and used simultaneously by a camera device
15929 for any <code>RAW</code> formats.<wbr/></p>
15930             </td>
15931
15932             <td class="entry_units">
15933             </td>
15934
15935             <td class="entry_range">
15936               <p>&gt;= 0</p>
15937             </td>
15938
15939             <td class="entry_hal_version">
15940               <p>3.<wbr/>2</p>
15941             </td>
15942
15943             <td class="entry_tags">
15944             </td>
15945
15946           </tr>
15947           <tr class="entries_header">
15948             <th class="th_details" colspan="6">Details</th>
15949           </tr>
15950           <tr class="entry_cont">
15951             <td class="entry_details" colspan="6">
15952               <p>This value contains the max number of output simultaneous
15953 streams from the raw sensor.<wbr/></p>
15954 <p>This lists the upper bound of the number of output streams supported by
15955 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15956 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
15957 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>
15958 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
15959 <ul>
15960 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
15961 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
15962 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
15963 </ul>
15964 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
15965 never support raw streams.<wbr/></p>
15966             </td>
15967           </tr>
15968
15969
15970           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15971            <!-- end of entry -->
15972         
15973                 
15974           <tr class="entry" id="static_android.request.maxNumOutputProc">
15975             <td class="entry_name
15976              " rowspan="3">
15977               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
15978             </td>
15979             <td class="entry_type">
15980                 <span class="entry_type_name">int32</span>
15981
15982               <span class="entry_type_visibility"> [java_public]</span>
15983
15984               <span class="entry_type_synthetic">[synthetic] </span>
15985
15986               <span class="entry_type_hwlevel">[legacy] </span>
15987
15988
15989
15990
15991             </td> <!-- entry_type -->
15992
15993             <td class="entry_description">
15994               <p>The maximum numbers of different types of output streams
15995 that can be configured and used simultaneously by a camera device
15996 for any processed (but not-stalling) formats.<wbr/></p>
15997             </td>
15998
15999             <td class="entry_units">
16000             </td>
16001
16002             <td class="entry_range">
16003               <p>&gt;= 3
16004 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16005 &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>
16006             </td>
16007
16008             <td class="entry_hal_version">
16009               <p>3.<wbr/>2</p>
16010             </td>
16011
16012             <td class="entry_tags">
16013             </td>
16014
16015           </tr>
16016           <tr class="entries_header">
16017             <th class="th_details" colspan="6">Details</th>
16018           </tr>
16019           <tr class="entry_cont">
16020             <td class="entry_details" colspan="6">
16021               <p>This value contains the max number of output simultaneous
16022 streams for any processed (but not-stalling) formats.<wbr/></p>
16023 <p>This lists the upper bound of the number of output streams supported by
16024 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16025 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16026 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>
16027 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
16028 Typically:</p>
16029 <ul>
16030 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
16031 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
16032 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
16033 <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>
16034 </ul>
16035 <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
16036 processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
16037 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
16038             </td>
16039           </tr>
16040
16041
16042           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16043            <!-- end of entry -->
16044         
16045                 
16046           <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
16047             <td class="entry_name
16048              " rowspan="3">
16049               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
16050             </td>
16051             <td class="entry_type">
16052                 <span class="entry_type_name">int32</span>
16053
16054               <span class="entry_type_visibility"> [java_public]</span>
16055
16056               <span class="entry_type_synthetic">[synthetic] </span>
16057
16058               <span class="entry_type_hwlevel">[legacy] </span>
16059
16060
16061
16062
16063             </td> <!-- entry_type -->
16064
16065             <td class="entry_description">
16066               <p>The maximum numbers of different types of output streams
16067 that can be configured and used simultaneously by a camera device
16068 for any processed (and stalling) formats.<wbr/></p>
16069             </td>
16070
16071             <td class="entry_units">
16072             </td>
16073
16074             <td class="entry_range">
16075               <p>&gt;= 1</p>
16076             </td>
16077
16078             <td class="entry_hal_version">
16079               <p>3.<wbr/>2</p>
16080             </td>
16081
16082             <td class="entry_tags">
16083             </td>
16084
16085           </tr>
16086           <tr class="entries_header">
16087             <th class="th_details" colspan="6">Details</th>
16088           </tr>
16089           <tr class="entry_cont">
16090             <td class="entry_details" colspan="6">
16091               <p>This value contains the max number of output simultaneous
16092 streams for any processed (but not-stalling) formats.<wbr/></p>
16093 <p>This lists the upper bound of the number of output streams supported by
16094 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16095 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16096 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>
16097 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations
16098 &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>
16099 <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
16100 processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
16101 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
16102             </td>
16103           </tr>
16104
16105
16106           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16107            <!-- end of entry -->
16108         
16109                 
16110           <tr class="entry" id="static_android.request.maxNumReprocessStreams">
16111             <td class="entry_name
16112                 entry_name_deprecated
16113              " rowspan="3">
16114               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
16115             </td>
16116             <td class="entry_type">
16117                 <span class="entry_type_name">int32</span>
16118                 <span class="entry_type_container">x</span>
16119
16120                 <span class="entry_type_array">
16121                   1
16122                 </span>
16123               <span class="entry_type_visibility"> [system]</span>
16124
16125
16126
16127               <span class="entry_type_deprecated">[deprecated] </span>
16128
16129
16130
16131             </td> <!-- entry_type -->
16132
16133             <td class="entry_description">
16134               <p>How many reprocessing streams of any type
16135 can be allocated at the same time.<wbr/></p>
16136             </td>
16137
16138             <td class="entry_units">
16139             </td>
16140
16141             <td class="entry_range">
16142               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16143               <p>&gt;= 0</p>
16144             </td>
16145
16146             <td class="entry_hal_version">
16147               <p>3.<wbr/>2</p>
16148             </td>
16149
16150             <td class="entry_tags">
16151               <ul class="entry_tags">
16152                   <li><a href="#tag_HAL2">HAL2</a></li>
16153               </ul>
16154             </td>
16155
16156           </tr>
16157           <tr class="entries_header">
16158             <th class="th_details" colspan="6">Details</th>
16159           </tr>
16160           <tr class="entry_cont">
16161             <td class="entry_details" colspan="6">
16162               <p>Only used by HAL2.<wbr/>x.<wbr/></p>
16163 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
16164             </td>
16165           </tr>
16166
16167
16168           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16169            <!-- end of entry -->
16170         
16171                 
16172           <tr class="entry" id="static_android.request.maxNumInputStreams">
16173             <td class="entry_name
16174              " rowspan="5">
16175               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
16176             </td>
16177             <td class="entry_type">
16178                 <span class="entry_type_name">int32</span>
16179
16180               <span class="entry_type_visibility"> [java_public]</span>
16181
16182
16183               <span class="entry_type_hwlevel">[full] </span>
16184
16185
16186
16187
16188             </td> <!-- entry_type -->
16189
16190             <td class="entry_description">
16191               <p>The maximum numbers of any type of input streams
16192 that can be configured and used simultaneously by a camera device.<wbr/></p>
16193             </td>
16194
16195             <td class="entry_units">
16196             </td>
16197
16198             <td class="entry_range">
16199               <p>0 or 1.<wbr/></p>
16200             </td>
16201
16202             <td class="entry_hal_version">
16203               <p>3.<wbr/>2</p>
16204             </td>
16205
16206             <td class="entry_tags">
16207               <ul class="entry_tags">
16208                   <li><a href="#tag_REPROC">REPROC</a></li>
16209               </ul>
16210             </td>
16211
16212           </tr>
16213           <tr class="entries_header">
16214             <th class="th_details" colspan="6">Details</th>
16215           </tr>
16216           <tr class="entry_cont">
16217             <td class="entry_details" colspan="6">
16218               <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
16219 <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
16220 input stream,<wbr/> there must be at least one output stream configured to to receive the
16221 reprocessed images.<wbr/></p>
16222 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
16223 only the input buffer will be used to produce these output stream buffers,<wbr/> and a
16224 new sensor image will not be captured.<wbr/></p>
16225 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
16226 stream image format will be PRIVATE,<wbr/> the associated output stream image format
16227 should be JPEG.<wbr/></p>
16228             </td>
16229           </tr>
16230
16231           <tr class="entries_header">
16232             <th class="th_details" colspan="6">HAL Implementation Details</th>
16233           </tr>
16234           <tr class="entry_cont">
16235             <td class="entry_details" colspan="6">
16236               <p>For the reprocessing flow and controls,<wbr/> see
16237 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
16238             </td>
16239           </tr>
16240
16241           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16242            <!-- end of entry -->
16243         
16244                 
16245           <tr class="entry" id="static_android.request.pipelineMaxDepth">
16246             <td class="entry_name
16247              " rowspan="5">
16248               android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
16249             </td>
16250             <td class="entry_type">
16251                 <span class="entry_type_name">byte</span>
16252
16253               <span class="entry_type_visibility"> [public]</span>
16254
16255
16256               <span class="entry_type_hwlevel">[legacy] </span>
16257
16258
16259
16260
16261             </td> <!-- entry_type -->
16262
16263             <td class="entry_description">
16264               <p>Specifies the number of maximum pipeline stages a frame
16265 has to go through from when it's exposed to when it's available
16266 to the framework.<wbr/></p>
16267             </td>
16268
16269             <td class="entry_units">
16270             </td>
16271
16272             <td class="entry_range">
16273             </td>
16274
16275             <td class="entry_hal_version">
16276               <p>3.<wbr/>2</p>
16277             </td>
16278
16279             <td class="entry_tags">
16280             </td>
16281
16282           </tr>
16283           <tr class="entries_header">
16284             <th class="th_details" colspan="6">Details</th>
16285           </tr>
16286           <tr class="entry_cont">
16287             <td class="entry_details" colspan="6">
16288               <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
16289 one stage to readout) from the sensor.<wbr/> The ISP then usually adds
16290 its own stages to do custom HW processing.<wbr/> Further stages may be
16291 added by SW processing.<wbr/></p>
16292 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
16293 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
16294 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
16295 the max pipeline depth.<wbr/></p>
16296 <p>A pipeline depth of X stages is equivalent to a pipeline latency of
16297 X frame intervals.<wbr/></p>
16298 <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
16299 the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
16300             </td>
16301           </tr>
16302
16303           <tr class="entries_header">
16304             <th class="th_details" colspan="6">HAL Implementation Details</th>
16305           </tr>
16306           <tr class="entry_cont">
16307             <td class="entry_details" colspan="6">
16308               <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
16309 max batch sizes may be larger than 1.<wbr/></p>
16310             </td>
16311           </tr>
16312
16313           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16314            <!-- end of entry -->
16315         
16316                 
16317           <tr class="entry" id="static_android.request.partialResultCount">
16318             <td class="entry_name
16319              " rowspan="3">
16320               android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
16321             </td>
16322             <td class="entry_type">
16323                 <span class="entry_type_name">int32</span>
16324
16325               <span class="entry_type_visibility"> [public]</span>
16326
16327
16328
16329
16330
16331
16332             </td> <!-- entry_type -->
16333
16334             <td class="entry_description">
16335               <p>Defines how many sub-components
16336 a result will be composed of.<wbr/></p>
16337             </td>
16338
16339             <td class="entry_units">
16340             </td>
16341
16342             <td class="entry_range">
16343               <p>&gt;= 1</p>
16344             </td>
16345
16346             <td class="entry_hal_version">
16347               <p>3.<wbr/>2</p>
16348             </td>
16349
16350             <td class="entry_tags">
16351             </td>
16352
16353           </tr>
16354           <tr class="entries_header">
16355             <th class="th_details" colspan="6">Details</th>
16356           </tr>
16357           <tr class="entry_cont">
16358             <td class="entry_details" colspan="6">
16359               <p>In order to combat the pipeline latency,<wbr/> partial results
16360 may be delivered to the application layer from the camera device as
16361 soon as they are available.<wbr/></p>
16362 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
16363 results are not supported,<wbr/> and only the final TotalCaptureResult will
16364 be produced by the camera device.<wbr/></p>
16365 <p>A typical use case for this might be: after requesting an
16366 auto-focus (AF) lock the new AF state might be available 50%
16367 of the way through the pipeline.<wbr/>  The camera device could
16368 then immediately dispatch this state via a partial result to
16369 the application,<wbr/> and the rest of the metadata via later
16370 partial results.<wbr/></p>
16371             </td>
16372           </tr>
16373
16374
16375           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16376            <!-- end of entry -->
16377         
16378                 
16379           <tr class="entry" id="static_android.request.availableCapabilities">
16380             <td class="entry_name
16381              " rowspan="5">
16382               android.<wbr/>request.<wbr/>available<wbr/>Capabilities
16383             </td>
16384             <td class="entry_type">
16385                 <span class="entry_type_name entry_type_name_enum">byte</span>
16386                 <span class="entry_type_container">x</span>
16387
16388                 <span class="entry_type_array">
16389                   n
16390                 </span>
16391               <span class="entry_type_visibility"> [public]</span>
16392
16393
16394               <span class="entry_type_hwlevel">[legacy] </span>
16395
16396
16397
16398                 <ul class="entry_type_enum">
16399                   <li>
16400                     <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span>
16401                     <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
16402 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
16403 supports.<wbr/></p>
16404 <p>This capability is listed by all normal devices,<wbr/> and
16405 indicates that the camera device has a feature set
16406 that's comparable to the baseline requirements for the
16407 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
16408 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
16409 capability,<wbr/> indicating that they support only depth measurement,<wbr/>
16410 not standard color output.<wbr/></p></span>
16411                   </li>
16412                   <li>
16413                     <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span>
16414                     <span class="entry_type_enum_optional">[optional]</span>
16415                     <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
16416 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
16417 The camera device supports basic manual control of the sensor image
16418 acquisition related stages.<wbr/> This means the following controls are
16419 guaranteed to be supported:</p>
16420 <ul>
16421 <li>Manual frame duration control<ul>
16422 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
16423 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
16424 </ul>
16425 </li>
16426 <li>Manual exposure control<ul>
16427 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16428 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
16429 </ul>
16430 </li>
16431 <li>Manual sensitivity control<ul>
16432 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16433 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
16434 </ul>
16435 </li>
16436 <li>Manual lens control (if the lens is adjustable)<ul>
16437 <li>android.<wbr/>lens.<wbr/>*</li>
16438 </ul>
16439 </li>
16440 <li>Manual flash control (if a flash unit is present)<ul>
16441 <li>android.<wbr/>flash.<wbr/>*</li>
16442 </ul>
16443 </li>
16444 <li>Manual black level locking<ul>
16445 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
16446 </ul>
16447 </li>
16448 <li>Auto exposure lock<ul>
16449 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16450 </ul>
16451 </li>
16452 </ul>
16453 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
16454 device will accurately report the values applied by 3A in the
16455 result.<wbr/></p>
16456 <p>A given camera device may also support additional manual sensor controls,<wbr/>
16457 but this capability only covers the above list of controls.<wbr/></p>
16458 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
16459 additionally return a min frame duration that is greater than
16460 zero for each supported size-format combination.<wbr/></p></span>
16461                   </li>
16462                   <li>
16463                     <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span>
16464                     <span class="entry_type_enum_optional">[optional]</span>
16465                     <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
16466 The camera device supports basic manual control of the image post-processing
16467 stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
16468 <ul>
16469 <li>
16470 <p>Manual tonemap control</p>
16471 <ul>
16472 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
16473 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
16474 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
16475 <li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
16476 <li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
16477 </ul>
16478 </li>
16479 <li>
16480 <p>Manual white balance control</p>
16481 <ul>
16482 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
16483 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
16484 </ul>
16485 </li>
16486 <li>Manual lens shading map control<ul>
16487 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
16488 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
16489 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
16490 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
16491 </ul>
16492 </li>
16493 <li>Manual aberration correction control (if aberration correction is supported)<ul>
16494 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
16495 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
16496 </ul>
16497 </li>
16498 <li>Auto white balance lock<ul>
16499 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16500 </ul>
16501 </li>
16502 </ul>
16503 <p>If auto white balance is enabled,<wbr/> then the camera device
16504 will accurately report the values applied by AWB in the result.<wbr/></p>
16505 <p>A given camera device may also support additional post-processing
16506 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
16507                   </li>
16508                   <li>
16509                     <span class="entry_type_enum_name">RAW (v3.2)</span>
16510                     <span class="entry_type_enum_optional">[optional]</span>
16511                     <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
16512 metadata for interpreting them.<wbr/></p>
16513 <p>Devices supporting the RAW capability allow both for
16514 saving DNG files,<wbr/> and for direct application processing of
16515 raw sensor images.<wbr/></p>
16516 <ul>
16517 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
16518 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams
16519   will match either the value in
16520   <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
16521   <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>
16522 <li>All DNG-related optional metadata entries are provided
16523   by the camera device.<wbr/></li>
16524 </ul></span>
16525                   </li>
16526                   <li>
16527                     <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span>
16528                     <span class="entry_type_enum_optional">[optional]</span>
16529                     <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
16530 <ul>
16531 <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>
16532 <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/>
16533   that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
16534   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>
16535 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16536   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>
16537 <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>
16538 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
16539   relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16540 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
16541   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
16542   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
16543 <li>The maximum available resolution for PRIVATE streams
16544   (both input/<wbr/>output) will match the maximum available
16545   resolution of JPEG streams.<wbr/></li>
16546 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16547 <li>Only below controls are effective for reprocessing requests and
16548   will be present in capture results,<wbr/> other controls in reprocess
16549   requests will be ignored by the camera device.<wbr/><ul>
16550 <li>android.<wbr/>jpeg.<wbr/>*</li>
16551 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16552 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16553 </ul>
16554 </li>
16555 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16556   <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>
16557 </ul></span>
16558                   </li>
16559                   <li>
16560                     <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span>
16561                     <span class="entry_type_enum_optional">[optional]</span>
16562                     <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
16563 the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
16564 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
16565 <p>The values reported for the following controls are guaranteed to be available
16566 in the CaptureResult,<wbr/> including when 3A is enabled:</p>
16567 <ul>
16568 <li>Exposure control<ul>
16569 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16570 </ul>
16571 </li>
16572 <li>Sensitivity control<ul>
16573 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16574 </ul>
16575 </li>
16576 <li>Lens controls (if the lens is adjustable)<ul>
16577 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
16578 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
16579 </ul>
16580 </li>
16581 </ul>
16582 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
16583 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
16584                   </li>
16585                   <li>
16586                     <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span>
16587                     <span class="entry_type_enum_optional">[optional]</span>
16588                     <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
16589 second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
16590 to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at &gt;= 10 frames
16591 per second.<wbr/>  Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
16592 resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span>
16593                   </li>
16594                   <li>
16595                     <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span>
16596                     <span class="entry_type_enum_optional">[optional]</span>
16597                     <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
16598 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
16599 following:</p>
16600 <ul>
16601 <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>
16602 <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
16603   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>
16604 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16605   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>
16606 <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>
16607 <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
16608   drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16609 <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
16610   <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>
16611 <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
16612   maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
16613 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16614 <li>Only the below controls are effective for reprocessing requests and will be present
16615   in capture results.<wbr/> The reprocess requests are from the original capture results
16616   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
16617   reprocess requests will be ignored by the camera device.<wbr/><ul>
16618 <li>android.<wbr/>jpeg.<wbr/>*</li>
16619 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16620 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16621 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
16622 </ul>
16623 </li>
16624 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16625   <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>
16626 </ul></span>
16627                   </li>
16628                   <li>
16629                     <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span>
16630                     <span class="entry_type_enum_optional">[optional]</span>
16631                     <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
16632 <p>This capability requires the camera device to support the following:</p>
16633 <ul>
16634 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as
16635   an output format.<wbr/></li>
16636 <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
16637   optionally supported as an output format.<wbr/></li>
16638 <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
16639   list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>
16640   and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
16641 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
16642 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
16643 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
16644 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
16645 </ul>
16646 </li>
16647 <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>
16648 <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
16649   normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
16650   format.<wbr/></li>
16651 </ul>
16652 <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
16653 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
16654 should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
16655 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
16656 using a repeating burst is recommended,<wbr/> where a depth-output target is only included
16657 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
16658 rate,<wbr/> including depth stall time.<wbr/></p></span>
16659                   </li>
16660                   <li>
16661                     <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span>
16662                     <span class="entry_type_enum_optional">[optional]</span>
16663                     <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps) use
16664 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
16665 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>
16666 <p>A camera device can still support high speed video streaming by advertising the high
16667 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
16668 normal capture request per frame control and synchronization requirements will apply
16669 to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability
16670 describes the capability of a specialized operating mode with many limitations (see
16671 below),<wbr/> which is only targeted at high speed video recording.<wbr/></p>
16672 <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/>
16673 To get desired output frame rates,<wbr/> the application is only allowed to select video
16674 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
16675 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>
16676 <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
16677 ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
16678 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
16679 and post-processing parameters is possible.<wbr/> All other controls operate the
16680 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
16681 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
16682 <ul>
16683 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
16684 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
16685 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16686 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16687 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
16688 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
16689 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
16690 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
16691 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
16692 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
16693 </ul>
16694 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
16695 <ul>
16696 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
16697 work since aeMode is ON)</li>
16698 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
16699 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
16700 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
16701 </ul>
16702 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
16703 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
16704 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
16705 the application need check if the video encoder is capable of supporting the
16706 high frame rate for a given video size,<wbr/> or it will end up with lower recording
16707 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
16708 rate will be bounded by the screen refresh rate.<wbr/></p>
16709 <p>The camera device will only support up to 2 high speed simultaneous output surfaces
16710 (preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only
16711 if all of below conditions are true:</p>
16712 <ul>
16713 <li>The application creates a camera capture session with no more than 2 surfaces via
16714 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
16715 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
16716 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>
16717 <li>The stream sizes are selected from the sizes reported by
16718 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
16719 <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>
16720 </ul>
16721 <p>When above conditions are NOT satistied,<wbr/>
16722 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
16723 will fail.<wbr/></p>
16724 <p>Switching to a FPS range that has different maximum FPS may trigger some camera device
16725 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
16726 the application avoids unnecessary maximum target FPS changes as much as possible
16727 during high speed streaming.<wbr/></p></span>
16728                   </li>
16729                 </ul>
16730
16731             </td> <!-- entry_type -->
16732
16733             <td class="entry_description">
16734               <p>List of capabilities that this camera device
16735 advertises as fully supporting.<wbr/></p>
16736             </td>
16737
16738             <td class="entry_units">
16739             </td>
16740
16741             <td class="entry_range">
16742             </td>
16743
16744             <td class="entry_hal_version">
16745               <p>3.<wbr/>2</p>
16746             </td>
16747
16748             <td class="entry_tags">
16749             </td>
16750
16751           </tr>
16752           <tr class="entries_header">
16753             <th class="th_details" colspan="6">Details</th>
16754           </tr>
16755           <tr class="entry_cont">
16756             <td class="entry_details" colspan="6">
16757               <p>A capability is a contract that the camera device makes in order
16758 to be able to satisfy one or more use cases.<wbr/></p>
16759 <p>Listing a capability guarantees that the whole set of features
16760 required to support a common use will all be available.<wbr/></p>
16761 <p>Using a subset of the functionality provided by an unsupported
16762 capability may be possible on a specific camera device implementation;
16763 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
16764 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
16765 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
16766 <p>The following capabilities are guaranteed to be available on
16767 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
16768 <ul>
16769 <li>MANUAL_<wbr/>SENSOR</li>
16770 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
16771 </ul>
16772 <p>Other capabilities may be available on either FULL or LIMITED
16773 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
16774             </td>
16775           </tr>
16776
16777           <tr class="entries_header">
16778             <th class="th_details" colspan="6">HAL Implementation Details</th>
16779           </tr>
16780           <tr class="entry_cont">
16781             <td class="entry_details" colspan="6">
16782               <p>Additional constraint details per-capability will be available
16783 in the Compatibility Test Suite.<wbr/></p>
16784 <p>Minimum baseline requirements required for the
16785 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
16786 Instead refer to "BC" tags and the camera CTS tests in the
16787 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
16788 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
16789 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
16790 request and the result in order to be considered to be
16791 capability-compliant.<wbr/></p>
16792 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
16793 then exposure time must be configurable via the request <em>and</em>
16794 the actual exposure applied must be available via
16795 the result.<wbr/></p>
16796 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
16797 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
16798 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
16799 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
16800 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
16801 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
16802 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
16803 YUV_<wbr/>REPROCESSING capability must support the
16804 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
16805 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
16806 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
16807 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
16808 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
16809 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
16810 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
16811 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
16812 DEPTH).<wbr/></p>
16813             </td>
16814           </tr>
16815
16816           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16817            <!-- end of entry -->
16818         
16819                 
16820           <tr class="entry" id="static_android.request.availableRequestKeys">
16821             <td class="entry_name
16822              " rowspan="5">
16823               android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
16824             </td>
16825             <td class="entry_type">
16826                 <span class="entry_type_name">int32</span>
16827                 <span class="entry_type_container">x</span>
16828
16829                 <span class="entry_type_array">
16830                   n
16831                 </span>
16832               <span class="entry_type_visibility"> [ndk_public]</span>
16833
16834
16835               <span class="entry_type_hwlevel">[legacy] </span>
16836
16837
16838
16839
16840             </td> <!-- entry_type -->
16841
16842             <td class="entry_description">
16843               <p>A list of all keys that the camera device has available
16844 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
16845             </td>
16846
16847             <td class="entry_units">
16848             </td>
16849
16850             <td class="entry_range">
16851             </td>
16852
16853             <td class="entry_hal_version">
16854               <p>3.<wbr/>2</p>
16855             </td>
16856
16857             <td class="entry_tags">
16858             </td>
16859
16860           </tr>
16861           <tr class="entries_header">
16862             <th class="th_details" colspan="6">Details</th>
16863           </tr>
16864           <tr class="entry_cont">
16865             <td class="entry_details" colspan="6">
16866               <p>Attempting to set a key into a CaptureRequest that is not
16867 listed here will result in an invalid request and will be rejected
16868 by the camera device.<wbr/></p>
16869 <p>This field can be used to query the feature set of a camera device
16870 at a more granular level than capabilities.<wbr/> This is especially
16871 important for optional keys that are not listed under any capability
16872 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
16873             </td>
16874           </tr>
16875
16876           <tr class="entries_header">
16877             <th class="th_details" colspan="6">HAL Implementation Details</th>
16878           </tr>
16879           <tr class="entry_cont">
16880             <td class="entry_details" colspan="6">
16881               <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
16882 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
16883 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16884 vendor extensions API and not against this field.<wbr/></p>
16885 <p>The HAL must not consume any request tags that are not listed either
16886 here or in the vendor tag list.<wbr/></p>
16887 <p>The public camera2 API will always make the vendor tags visible
16888 via
16889 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
16890             </td>
16891           </tr>
16892
16893           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16894            <!-- end of entry -->
16895         
16896                 
16897           <tr class="entry" id="static_android.request.availableResultKeys">
16898             <td class="entry_name
16899              " rowspan="5">
16900               android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
16901             </td>
16902             <td class="entry_type">
16903                 <span class="entry_type_name">int32</span>
16904                 <span class="entry_type_container">x</span>
16905
16906                 <span class="entry_type_array">
16907                   n
16908                 </span>
16909               <span class="entry_type_visibility"> [ndk_public]</span>
16910
16911
16912               <span class="entry_type_hwlevel">[legacy] </span>
16913
16914
16915
16916
16917             </td> <!-- entry_type -->
16918
16919             <td class="entry_description">
16920               <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>
16921             </td>
16922
16923             <td class="entry_units">
16924             </td>
16925
16926             <td class="entry_range">
16927             </td>
16928
16929             <td class="entry_hal_version">
16930               <p>3.<wbr/>2</p>
16931             </td>
16932
16933             <td class="entry_tags">
16934             </td>
16935
16936           </tr>
16937           <tr class="entries_header">
16938             <th class="th_details" colspan="6">Details</th>
16939           </tr>
16940           <tr class="entry_cont">
16941             <td class="entry_details" colspan="6">
16942               <p>Attempting to get a key from a CaptureResult that is not
16943 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
16944 a CaptureResult that is listed here will generally never return a <code>null</code>
16945 value.<wbr/></p>
16946 <p>The following keys may return <code>null</code> unless they are enabled:</p>
16947 <ul>
16948 <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>
16949 </ul>
16950 <p>(Those sometimes-null keys will nevertheless be listed here
16951 if they are available.<wbr/>)</p>
16952 <p>This field can be used to query the feature set of a camera device
16953 at a more granular level than capabilities.<wbr/> This is especially
16954 important for optional keys that are not listed under any capability
16955 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
16956             </td>
16957           </tr>
16958
16959           <tr class="entries_header">
16960             <th class="th_details" colspan="6">HAL Implementation Details</th>
16961           </tr>
16962           <tr class="entry_cont">
16963             <td class="entry_details" colspan="6">
16964               <p>Tags listed here must always have an entry in the result metadata,<wbr/>
16965 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
16966 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
16967 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
16968 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
16969 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16970 vendor extensions API and not against this field.<wbr/></p>
16971 <p>The HAL must not produce any result tags that are not listed either
16972 here or in the vendor tag list.<wbr/></p>
16973 <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>
16974             </td>
16975           </tr>
16976
16977           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16978            <!-- end of entry -->
16979         
16980                 
16981           <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
16982             <td class="entry_name
16983              " rowspan="5">
16984               android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
16985             </td>
16986             <td class="entry_type">
16987                 <span class="entry_type_name">int32</span>
16988                 <span class="entry_type_container">x</span>
16989
16990                 <span class="entry_type_array">
16991                   n
16992                 </span>
16993               <span class="entry_type_visibility"> [ndk_public]</span>
16994
16995
16996               <span class="entry_type_hwlevel">[legacy] </span>
16997
16998
16999
17000
17001             </td> <!-- entry_type -->
17002
17003             <td class="entry_description">
17004               <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>
17005             </td>
17006
17007             <td class="entry_units">
17008             </td>
17009
17010             <td class="entry_range">
17011             </td>
17012
17013             <td class="entry_hal_version">
17014               <p>3.<wbr/>2</p>
17015             </td>
17016
17017             <td class="entry_tags">
17018             </td>
17019
17020           </tr>
17021           <tr class="entries_header">
17022             <th class="th_details" colspan="6">Details</th>
17023           </tr>
17024           <tr class="entry_cont">
17025             <td class="entry_details" colspan="6">
17026               <p>This entry follows the same rules as
17027 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
17028 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
17029 details.<wbr/></p>
17030             </td>
17031           </tr>
17032
17033           <tr class="entries_header">
17034             <th class="th_details" colspan="6">HAL Implementation Details</th>
17035           </tr>
17036           <tr class="entry_cont">
17037             <td class="entry_details" colspan="6">
17038               <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
17039 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17040 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17041 <p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
17042 the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17043 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17044 vendor extensions API and not against this field.<wbr/></p>
17045 <p>The HAL must not have any tags in its static info that are not listed
17046 either here or in the vendor tag list.<wbr/></p>
17047 <p>The public camera2 API will always make the vendor tags visible
17048 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
17049             </td>
17050           </tr>
17051
17052           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17053            <!-- end of entry -->
17054         
17055                 
17056           <tr class="entry" id="static_android.request.availableSessionKeys">
17057             <td class="entry_name
17058              " rowspan="5">
17059               android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys
17060             </td>
17061             <td class="entry_type">
17062                 <span class="entry_type_name">int32</span>
17063                 <span class="entry_type_container">x</span>
17064
17065                 <span class="entry_type_array">
17066                   n
17067                 </span>
17068               <span class="entry_type_visibility"> [ndk_public]</span>
17069
17070
17071               <span class="entry_type_hwlevel">[legacy] </span>
17072
17073
17074
17075
17076             </td> <!-- entry_type -->
17077
17078             <td class="entry_description">
17079               <p>A subset of the available request keys that the camera device
17080 can pass as part of the capture session initialization.<wbr/></p>
17081             </td>
17082
17083             <td class="entry_units">
17084             </td>
17085
17086             <td class="entry_range">
17087             </td>
17088
17089             <td class="entry_hal_version">
17090               <p>3.<wbr/>4</p>
17091             </td>
17092
17093             <td class="entry_tags">
17094             </td>
17095
17096           </tr>
17097           <tr class="entries_header">
17098             <th class="th_details" colspan="6">Details</th>
17099           </tr>
17100           <tr class="entry_cont">
17101             <td class="entry_details" colspan="6">
17102               <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which
17103 contains a list of keys that are difficult to apply per-frame and
17104 can result in unexpected delays when modified during the capture session
17105 lifetime.<wbr/> Typical examples include parameters that require a
17106 time-consuming hardware re-configuration or internal camera pipeline
17107 change.<wbr/> For performance reasons we advise clients to pass their initial
17108 values as part of
17109 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>i
17110 Once the camera capture session is enabled it is also recommended to avoid
17111 changing them from their initial values set in
17112 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17113 Control over session parameters can still be exerted in capture requests
17114 but clients should be aware and expect delays during their application.<wbr/>
17115 An example usage scenario could look like this:</p>
17116 <ul>
17117 <li>The camera client starts by quering the session parameter key list via
17118   <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li>
17119 <li>Before triggering the capture session create sequence,<wbr/> a capture request
17120   must be built via
17121   <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a>
17122   using an appropriate template matching the particular use case.<wbr/></li>
17123 <li>The client should go over the list of session parameters and check
17124   whether some of the keys listed matches with the parameters that
17125   they intend to modify as part of the first capture request.<wbr/></li>
17126 <li>If there is no such match,<wbr/> the capture request can be  passed
17127   unmodified to
17128   <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17129 <li>If matches do exist,<wbr/> the client should update the respective values
17130   and pass the request to
17131   <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17132 <li>After the capture session initialization completes the session parameter
17133   key list can continue to serve as reference when posting or updating
17134   further requests.<wbr/> As mentioned above further changes to session
17135   parameters should ideally be avoided,<wbr/> if updates are necessary
17136   however clients could expect a delay/<wbr/>glitch during the
17137   parameter switch.<wbr/></li>
17138 </ul>
17139             </td>
17140           </tr>
17141
17142           <tr class="entries_header">
17143             <th class="th_details" colspan="6">HAL Implementation Details</th>
17144           </tr>
17145           <tr class="entry_cont">
17146             <td class="entry_details" colspan="6">
17147               <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17148 use the extensions C api (refer to
17149 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p>
17150 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17151 vendor extensions API and not against this field.<wbr/></p>
17152 <p>The HAL must not consume any request tags in the session parameters that
17153 are not listed either here or in the vendor tag list.<wbr/></p>
17154 <p>The public camera2 API will always make the vendor tags visible
17155 via
17156 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
17157             </td>
17158           </tr>
17159
17160           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17161            <!-- end of entry -->
17162         
17163         
17164
17165       <!-- end of kind -->
17166       </tbody>
17167       <tr><td colspan="7" class="kind">dynamic</td></tr>
17168
17169       <thead class="entries_header">
17170         <tr>
17171           <th class="th_name">Property Name</th>
17172           <th class="th_type">Type</th>
17173           <th class="th_description">Description</th>
17174           <th class="th_units">Units</th>
17175           <th class="th_range">Range</th>
17176           <th class="th_hal_version">Initial HIDL HAL version</th>
17177           <th class="th_tags">Tags</th>
17178         </tr>
17179       </thead>
17180
17181       <tbody>
17182
17183         
17184
17185         
17186
17187         
17188
17189         
17190
17191                 
17192           <tr class="entry" id="dynamic_android.request.frameCount">
17193             <td class="entry_name
17194                 entry_name_deprecated
17195              " rowspan="3">
17196               android.<wbr/>request.<wbr/>frame<wbr/>Count
17197             </td>
17198             <td class="entry_type">
17199                 <span class="entry_type_name">int32</span>
17200
17201               <span class="entry_type_visibility"> [hidden]</span>
17202
17203
17204
17205               <span class="entry_type_deprecated">[deprecated] </span>
17206
17207
17208
17209             </td> <!-- entry_type -->
17210
17211             <td class="entry_description">
17212               <p>A frame counter set by the framework.<wbr/> This value monotonically
17213 increases with every new result (that is,<wbr/> each new result has a unique
17214 frameCount value).<wbr/></p>
17215             </td>
17216
17217             <td class="entry_units">
17218               count of frames
17219             </td>
17220
17221             <td class="entry_range">
17222               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17223               <p>&gt; 0</p>
17224             </td>
17225
17226             <td class="entry_hal_version">
17227               <p>3.<wbr/>2</p>
17228             </td>
17229
17230             <td class="entry_tags">
17231             </td>
17232
17233           </tr>
17234           <tr class="entries_header">
17235             <th class="th_details" colspan="6">Details</th>
17236           </tr>
17237           <tr class="entry_cont">
17238             <td class="entry_details" colspan="6">
17239               <p>Reset on release()</p>
17240             </td>
17241           </tr>
17242
17243
17244           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17245            <!-- end of entry -->
17246         
17247                 
17248           <tr class="entry" id="dynamic_android.request.id">
17249             <td class="entry_name
17250              " rowspan="1">
17251               android.<wbr/>request.<wbr/>id
17252             </td>
17253             <td class="entry_type">
17254                 <span class="entry_type_name">int32</span>
17255
17256               <span class="entry_type_visibility"> [hidden]</span>
17257
17258
17259
17260
17261
17262
17263             </td> <!-- entry_type -->
17264
17265             <td class="entry_description">
17266               <p>An application-specified ID for the current
17267 request.<wbr/> Must be maintained unchanged in output
17268 frame</p>
17269             </td>
17270
17271             <td class="entry_units">
17272               arbitrary integer assigned by application
17273             </td>
17274
17275             <td class="entry_range">
17276               <p>Any int</p>
17277             </td>
17278
17279             <td class="entry_hal_version">
17280               <p>3.<wbr/>2</p>
17281             </td>
17282
17283             <td class="entry_tags">
17284               <ul class="entry_tags">
17285                   <li><a href="#tag_V1">V1</a></li>
17286               </ul>
17287             </td>
17288
17289           </tr>
17290
17291
17292           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17293            <!-- end of entry -->
17294         
17295                 
17296           <tr class="entry" id="dynamic_android.request.metadataMode">
17297             <td class="entry_name
17298              " rowspan="1">
17299               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
17300             </td>
17301             <td class="entry_type">
17302                 <span class="entry_type_name entry_type_name_enum">byte</span>
17303
17304               <span class="entry_type_visibility"> [system]</span>
17305
17306
17307
17308
17309
17310                 <ul class="entry_type_enum">
17311                   <li>
17312                     <span class="entry_type_enum_name">NONE (v3.2)</span>
17313                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
17314 for application-bound buffer data.<wbr/> If no
17315 application-bound streams exist,<wbr/> no frame should be
17316 placed in the output frame queue.<wbr/> If such streams
17317 exist,<wbr/> a frame should be placed on the output queue
17318 with null metadata but with the necessary output buffer
17319 information.<wbr/> Timestamp information should still be
17320 included with any output stream buffers</p></span>
17321                   </li>
17322                   <li>
17323                     <span class="entry_type_enum_name">FULL (v3.2)</span>
17324                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
17325 only be produced if they are separately
17326 enabled</p></span>
17327                   </li>
17328                 </ul>
17329
17330             </td> <!-- entry_type -->
17331
17332             <td class="entry_description">
17333               <p>How much metadata to produce on
17334 output</p>
17335             </td>
17336
17337             <td class="entry_units">
17338             </td>
17339
17340             <td class="entry_range">
17341             </td>
17342
17343             <td class="entry_hal_version">
17344               <p>3.<wbr/>2</p>
17345             </td>
17346
17347             <td class="entry_tags">
17348               <ul class="entry_tags">
17349                   <li><a href="#tag_FUTURE">FUTURE</a></li>
17350               </ul>
17351             </td>
17352
17353           </tr>
17354
17355
17356           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17357            <!-- end of entry -->
17358         
17359                 
17360           <tr class="entry" id="dynamic_android.request.outputStreams">
17361             <td class="entry_name
17362                 entry_name_deprecated
17363              " rowspan="3">
17364               android.<wbr/>request.<wbr/>output<wbr/>Streams
17365             </td>
17366             <td class="entry_type">
17367                 <span class="entry_type_name">int32</span>
17368                 <span class="entry_type_container">x</span>
17369
17370                 <span class="entry_type_array">
17371                   n
17372                 </span>
17373               <span class="entry_type_visibility"> [system]</span>
17374
17375
17376
17377               <span class="entry_type_deprecated">[deprecated] </span>
17378
17379
17380
17381             </td> <!-- entry_type -->
17382
17383             <td class="entry_description">
17384               <p>Lists which camera output streams image data
17385 from this capture must be sent to</p>
17386             </td>
17387
17388             <td class="entry_units">
17389               List of camera stream IDs
17390             </td>
17391
17392             <td class="entry_range">
17393               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17394               <p>List must only include streams that have been
17395 created</p>
17396             </td>
17397
17398             <td class="entry_hal_version">
17399               <p>3.<wbr/>2</p>
17400             </td>
17401
17402             <td class="entry_tags">
17403               <ul class="entry_tags">
17404                   <li><a href="#tag_HAL2">HAL2</a></li>
17405               </ul>
17406             </td>
17407
17408           </tr>
17409           <tr class="entries_header">
17410             <th class="th_details" colspan="6">Details</th>
17411           </tr>
17412           <tr class="entry_cont">
17413             <td class="entry_details" colspan="6">
17414               <p>If no output streams are listed,<wbr/> then the image
17415 data should simply be discarded.<wbr/> The image data must
17416 still be captured for metadata and statistics production,<wbr/>
17417 and the lens and flash must operate as requested.<wbr/></p>
17418             </td>
17419           </tr>
17420
17421
17422           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17423            <!-- end of entry -->
17424         
17425                 
17426           <tr class="entry" id="dynamic_android.request.pipelineDepth">
17427             <td class="entry_name
17428              " rowspan="5">
17429               android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
17430             </td>
17431             <td class="entry_type">
17432                 <span class="entry_type_name">byte</span>
17433
17434               <span class="entry_type_visibility"> [public]</span>
17435
17436
17437               <span class="entry_type_hwlevel">[legacy] </span>
17438
17439
17440
17441
17442             </td> <!-- entry_type -->
17443
17444             <td class="entry_description">
17445               <p>Specifies the number of pipeline stages the frame went
17446 through from when it was exposed to when the final completed result
17447 was available to the framework.<wbr/></p>
17448             </td>
17449
17450             <td class="entry_units">
17451             </td>
17452
17453             <td class="entry_range">
17454               <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
17455             </td>
17456
17457             <td class="entry_hal_version">
17458               <p>3.<wbr/>2</p>
17459             </td>
17460
17461             <td class="entry_tags">
17462             </td>
17463
17464           </tr>
17465           <tr class="entries_header">
17466             <th class="th_details" colspan="6">Details</th>
17467           </tr>
17468           <tr class="entry_cont">
17469             <td class="entry_details" colspan="6">
17470               <p>Depending on what settings are used in the request,<wbr/> and
17471 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
17472 and some pipeline stages skipped.<wbr/></p>
17473 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
17474             </td>
17475           </tr>
17476
17477           <tr class="entries_header">
17478             <th class="th_details" colspan="6">HAL Implementation Details</th>
17479           </tr>
17480           <tr class="entry_cont">
17481             <td class="entry_details" colspan="6">
17482               <p>This value must always represent the accurate count of how many
17483 pipeline stages were actually used.<wbr/></p>
17484             </td>
17485           </tr>
17486
17487           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17488            <!-- end of entry -->
17489         
17490         
17491
17492       <!-- end of kind -->
17493       </tbody>
17494
17495   <!-- end of section -->
17496   <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
17497
17498
17499       <tr><td colspan="7" class="kind">controls</td></tr>
17500
17501       <thead class="entries_header">
17502         <tr>
17503           <th class="th_name">Property Name</th>
17504           <th class="th_type">Type</th>
17505           <th class="th_description">Description</th>
17506           <th class="th_units">Units</th>
17507           <th class="th_range">Range</th>
17508           <th class="th_hal_version">Initial HIDL HAL version</th>
17509           <th class="th_tags">Tags</th>
17510         </tr>
17511       </thead>
17512
17513       <tbody>
17514
17515         
17516
17517         
17518
17519         
17520
17521         
17522
17523                 
17524           <tr class="entry" id="controls_android.scaler.cropRegion">
17525             <td class="entry_name
17526              " rowspan="5">
17527               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
17528             </td>
17529             <td class="entry_type">
17530                 <span class="entry_type_name">int32</span>
17531                 <span class="entry_type_container">x</span>
17532
17533                 <span class="entry_type_array">
17534                   4
17535                 </span>
17536               <span class="entry_type_visibility"> [public as rectangle]</span>
17537
17538
17539               <span class="entry_type_hwlevel">[legacy] </span>
17540
17541
17542
17543
17544             </td> <!-- entry_type -->
17545
17546             <td class="entry_description">
17547               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
17548             </td>
17549
17550             <td class="entry_units">
17551               Pixel coordinates relative to
17552           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
17553             </td>
17554
17555             <td class="entry_range">
17556             </td>
17557
17558             <td class="entry_hal_version">
17559               <p>3.<wbr/>2</p>
17560             </td>
17561
17562             <td class="entry_tags">
17563               <ul class="entry_tags">
17564                   <li><a href="#tag_BC">BC</a></li>
17565               </ul>
17566             </td>
17567
17568           </tr>
17569           <tr class="entries_header">
17570             <th class="th_details" colspan="6">Details</th>
17571           </tr>
17572           <tr class="entry_cont">
17573             <td class="entry_details" colspan="6">
17574               <p>This control can be used to implement digital zoom.<wbr/></p>
17575 <p>The crop region coordinate system is based off
17576 <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
17577 top-left corner of the sensor active array.<wbr/></p>
17578 <p>Output streams use this rectangle to produce their output,<wbr/>
17579 cropping to a smaller region if necessary to maintain the
17580 stream's aspect ratio,<wbr/> then scaling the sensor input to
17581 match the output's configured resolution.<wbr/></p>
17582 <p>The crop region is applied after the RAW to other color
17583 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
17584 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
17585 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
17586 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
17587 be done to maximize the final pixel area of the stream.<wbr/></p>
17588 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
17589 ratio,<wbr/> then 4:3 streams will use the exact crop
17590 region.<wbr/> 16:9 streams will further crop vertically
17591 (letterbox).<wbr/></p>
17592 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
17593 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
17594 streams will match exactly.<wbr/> These additional crops will
17595 be centered within the crop region.<wbr/></p>
17596 <p>The width and height of the crop region cannot
17597 be set to be smaller than
17598 <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
17599 <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>
17600 <p>The camera device may adjust the crop region to account
17601 for rounding and other hardware requirements; the final
17602 crop region used will be included in the output capture
17603 result.<wbr/></p>
17604             </td>
17605           </tr>
17606
17607           <tr class="entries_header">
17608             <th class="th_details" colspan="6">HAL Implementation Details</th>
17609           </tr>
17610           <tr class="entry_cont">
17611             <td class="entry_details" colspan="6">
17612               <p>The output streams must maintain square pixels at all
17613 times,<wbr/> no matter what the relative aspect ratios of the
17614 crop region and the stream are.<wbr/>  Negative values for
17615 corner are allowed for raw output if full pixel array is
17616 larger than active pixel array.<wbr/> Width and height may be
17617 rounded to nearest larger supportable width,<wbr/> especially
17618 for raw output,<wbr/> where only a few fixed scales may be
17619 possible.<wbr/></p>
17620 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
17621 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
17622 <ul>
17623 <li>
17624 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
17625 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
17626 <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>
17627 <ol>
17628 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
17629 cropped pixel area by (tx,<wbr/> ty),<wbr/>
17630 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
17631 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
17632 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
17633 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
17634 <li>Scale the width and height of requested cropRegion with scaling factor of
17635 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
17636 respectively.<wbr/>
17637 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
17638 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
17639 follow the general cropping rule for this new cropRegion and effective active
17640 array size.<wbr/></li>
17641 </ol>
17642 </li>
17643 <li>
17644 <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/>
17645 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
17646 The reported cropRegion may be slightly different with the requested cropRegion since
17647 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
17648 hardware limitations.<wbr/></p>
17649 </li>
17650 </ul>
17651 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
17652             </td>
17653           </tr>
17654
17655           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17656            <!-- end of entry -->
17657         
17658         
17659
17660       <!-- end of kind -->
17661       </tbody>
17662       <tr><td colspan="7" class="kind">static</td></tr>
17663
17664       <thead class="entries_header">
17665         <tr>
17666           <th class="th_name">Property Name</th>
17667           <th class="th_type">Type</th>
17668           <th class="th_description">Description</th>
17669           <th class="th_units">Units</th>
17670           <th class="th_range">Range</th>
17671           <th class="th_hal_version">Initial HIDL HAL version</th>
17672           <th class="th_tags">Tags</th>
17673         </tr>
17674       </thead>
17675
17676       <tbody>
17677
17678         
17679
17680         
17681
17682         
17683
17684         
17685
17686                 
17687           <tr class="entry" id="static_android.scaler.availableFormats">
17688             <td class="entry_name
17689                 entry_name_deprecated
17690              " rowspan="5">
17691               android.<wbr/>scaler.<wbr/>available<wbr/>Formats
17692             </td>
17693             <td class="entry_type">
17694                 <span class="entry_type_name entry_type_name_enum">int32</span>
17695                 <span class="entry_type_container">x</span>
17696
17697                 <span class="entry_type_array">
17698                   n
17699                 </span>
17700               <span class="entry_type_visibility"> [hidden as imageFormat]</span>
17701
17702
17703
17704               <span class="entry_type_deprecated">[deprecated] </span>
17705
17706
17707                 <ul class="entry_type_enum">
17708                   <li>
17709                     <span class="entry_type_enum_name">RAW16 (v3.2)</span>
17710                     <span class="entry_type_enum_optional">[optional]</span>
17711                     <span class="entry_type_enum_value">0x20</span>
17712                     <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
17713 buffers with 16-bit pixels.<wbr/></p>
17714 <p>Buffers of this format are typically expected to have a
17715 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
17716 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
17717 CFAs that are not representable by a format in
17718 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
17719 use this format.<wbr/></p>
17720 <p>Buffers of this format will also follow the constraints given for
17721 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
17722 <p>This format is intended to give users access to the full contents
17723 of the buffers coming directly from the image sensor prior to any
17724 cropping or scaling operations,<wbr/> and all coordinate systems for
17725 metadata used for this format are relative to the size of the
17726 active region of the image sensor before any geometric distortion
17727 correction has been applied (i.<wbr/>e.<wbr/>
17728 <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
17729 dimensions for this format are limited to the full dimensions of
17730 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
17731 <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
17732 only supported output size).<wbr/></p>
17733 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
17734 the full set of performance guarantees.<wbr/></p></span>
17735                   </li>
17736                   <li>
17737                     <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span>
17738                     <span class="entry_type_enum_optional">[optional]</span>
17739                     <span class="entry_type_enum_value">0x24</span>
17740                     <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
17741 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
17742 as referred in public API) is a format for raw image buffers
17743 coming from an image sensor.<wbr/></p>
17744 <p>The actual structure of buffers of this format is
17745 platform-specific,<wbr/> but must follow several constraints:</p>
17746 <ol>
17747 <li>No image post-processing operations may have been applied to
17748 buffers of this type.<wbr/> These buffers contain raw image data coming
17749 directly from the image sensor.<wbr/></li>
17750 <li>If a buffer of this format is passed to the camera device for
17751 reprocessing,<wbr/> the resulting images will be identical to the images
17752 produced if the buffer had come directly from the sensor and was
17753 processed with the same settings.<wbr/></li>
17754 </ol>
17755 <p>The intended use for this format is to allow access to the native
17756 raw format buffers coming directly from the camera sensor without
17757 any additional conversions or decrease in framerate.<wbr/></p>
17758 <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
17759 performance guarantees.<wbr/></p></span>
17760                   </li>
17761                   <li>
17762                     <span class="entry_type_enum_name">YV12 (v3.2)</span>
17763                     <span class="entry_type_enum_optional">[optional]</span>
17764                     <span class="entry_type_enum_value">0x32315659</span>
17765                     <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
17766                   </li>
17767                   <li>
17768                     <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span>
17769                     <span class="entry_type_enum_optional">[optional]</span>
17770                     <span class="entry_type_enum_value">0x11</span>
17771                     <span class="entry_type_enum_notes"><p>NV21</p></span>
17772                   </li>
17773                   <li>
17774                     <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span>
17775                     <span class="entry_type_enum_value">0x22</span>
17776                     <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
17777                   </li>
17778                   <li>
17779                     <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span>
17780                     <span class="entry_type_enum_value">0x23</span>
17781                     <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
17782                   </li>
17783                   <li>
17784                     <span class="entry_type_enum_name">BLOB (v3.2)</span>
17785                     <span class="entry_type_enum_value">0x21</span>
17786                     <span class="entry_type_enum_notes"><p>JPEG format</p></span>
17787                   </li>
17788                 </ul>
17789
17790             </td> <!-- entry_type -->
17791
17792             <td class="entry_description">
17793               <p>The list of image formats that are supported by this
17794 camera device for output streams.<wbr/></p>
17795             </td>
17796
17797             <td class="entry_units">
17798             </td>
17799
17800             <td class="entry_range">
17801               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17802             </td>
17803
17804             <td class="entry_hal_version">
17805               <p>3.<wbr/>2</p>
17806             </td>
17807
17808             <td class="entry_tags">
17809               <ul class="entry_tags">
17810                   <li><a href="#tag_BC">BC</a></li>
17811               </ul>
17812             </td>
17813
17814           </tr>
17815           <tr class="entries_header">
17816             <th class="th_details" colspan="6">Details</th>
17817           </tr>
17818           <tr class="entry_cont">
17819             <td class="entry_details" colspan="6">
17820               <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
17821 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
17822             </td>
17823           </tr>
17824
17825           <tr class="entries_header">
17826             <th class="th_details" colspan="6">HAL Implementation Details</th>
17827           </tr>
17828           <tr class="entry_cont">
17829             <td class="entry_details" colspan="6">
17830               <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
17831 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
17832 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
17833 gralloc module will select a format based on the usage flags provided
17834 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
17835 usually used by preview and recording streams,<wbr/> where the application doesn't
17836 need access the image data.<wbr/></p>
17837 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
17838 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
17839 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
17840 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
17841 recommended that any information used by the camera device when
17842 processing images is fully expressed by the result metadata
17843 for that image buffer.<wbr/></p>
17844             </td>
17845           </tr>
17846
17847           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17848            <!-- end of entry -->
17849         
17850                 
17851           <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
17852             <td class="entry_name
17853                 entry_name_deprecated
17854              " rowspan="3">
17855               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
17856             </td>
17857             <td class="entry_type">
17858                 <span class="entry_type_name">int64</span>
17859                 <span class="entry_type_container">x</span>
17860
17861                 <span class="entry_type_array">
17862                   n
17863                 </span>
17864               <span class="entry_type_visibility"> [hidden]</span>
17865
17866
17867
17868               <span class="entry_type_deprecated">[deprecated] </span>
17869
17870
17871
17872             </td> <!-- entry_type -->
17873
17874             <td class="entry_description">
17875               <p>The minimum frame duration that is supported
17876 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
17877             </td>
17878
17879             <td class="entry_units">
17880               Nanoseconds
17881             </td>
17882
17883             <td class="entry_range">
17884               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17885               <p>TODO: Remove property.<wbr/></p>
17886             </td>
17887
17888             <td class="entry_hal_version">
17889               <p>3.<wbr/>2</p>
17890             </td>
17891
17892             <td class="entry_tags">
17893               <ul class="entry_tags">
17894                   <li><a href="#tag_BC">BC</a></li>
17895               </ul>
17896             </td>
17897
17898           </tr>
17899           <tr class="entries_header">
17900             <th class="th_details" colspan="6">Details</th>
17901           </tr>
17902           <tr class="entry_cont">
17903             <td class="entry_details" colspan="6">
17904               <p>This corresponds to the minimum steady-state frame duration when only
17905 that JPEG stream is active and captured in a burst,<wbr/> with all
17906 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
17907 <p>When multiple streams are configured,<wbr/> the minimum
17908 frame duration will be &gt;= max(individual stream min
17909 durations)</p>
17910             </td>
17911           </tr>
17912
17913
17914           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17915            <!-- end of entry -->
17916         
17917                 
17918           <tr class="entry" id="static_android.scaler.availableJpegSizes">
17919             <td class="entry_name
17920                 entry_name_deprecated
17921              " rowspan="5">
17922               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
17923             </td>
17924             <td class="entry_type">
17925                 <span class="entry_type_name">int32</span>
17926                 <span class="entry_type_container">x</span>
17927
17928                 <span class="entry_type_array">
17929                   n x 2
17930                 </span>
17931               <span class="entry_type_visibility"> [hidden as size]</span>
17932
17933
17934
17935               <span class="entry_type_deprecated">[deprecated] </span>
17936
17937
17938
17939             </td> <!-- entry_type -->
17940
17941             <td class="entry_description">
17942               <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
17943             </td>
17944
17945             <td class="entry_units">
17946             </td>
17947
17948             <td class="entry_range">
17949               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17950               <p>TODO: Remove property.<wbr/></p>
17951             </td>
17952
17953             <td class="entry_hal_version">
17954               <p>3.<wbr/>2</p>
17955             </td>
17956
17957             <td class="entry_tags">
17958               <ul class="entry_tags">
17959                   <li><a href="#tag_BC">BC</a></li>
17960               </ul>
17961             </td>
17962
17963           </tr>
17964           <tr class="entries_header">
17965             <th class="th_details" colspan="6">Details</th>
17966           </tr>
17967           <tr class="entry_cont">
17968             <td class="entry_details" colspan="6">
17969               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
17970 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>
17971             </td>
17972           </tr>
17973
17974           <tr class="entries_header">
17975             <th class="th_details" colspan="6">HAL Implementation Details</th>
17976           </tr>
17977           <tr class="entry_cont">
17978             <td class="entry_details" colspan="6">
17979               <p>The HAL must include sensor maximum resolution
17980 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
17981 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
17982             </td>
17983           </tr>
17984
17985           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17986            <!-- end of entry -->
17987         
17988                 
17989           <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
17990             <td class="entry_name
17991              " rowspan="3">
17992               android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
17993             </td>
17994             <td class="entry_type">
17995                 <span class="entry_type_name">float</span>
17996
17997               <span class="entry_type_visibility"> [public]</span>
17998
17999
18000               <span class="entry_type_hwlevel">[legacy] </span>
18001
18002
18003
18004
18005             </td> <!-- entry_type -->
18006
18007             <td class="entry_description">
18008               <p>The maximum ratio between both active area width
18009 and crop region width,<wbr/> and active area height and
18010 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18011             </td>
18012
18013             <td class="entry_units">
18014               Zoom scale factor
18015             </td>
18016
18017             <td class="entry_range">
18018               <p>&gt;=1</p>
18019             </td>
18020
18021             <td class="entry_hal_version">
18022               <p>3.<wbr/>2</p>
18023             </td>
18024
18025             <td class="entry_tags">
18026               <ul class="entry_tags">
18027                   <li><a href="#tag_BC">BC</a></li>
18028               </ul>
18029             </td>
18030
18031           </tr>
18032           <tr class="entries_header">
18033             <th class="th_details" colspan="6">Details</th>
18034           </tr>
18035           <tr class="entry_cont">
18036             <td class="entry_details" colspan="6">
18037               <p>This represents the maximum amount of zooming possible by
18038 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
18039 window size.<wbr/></p>
18040 <p>Crop regions that have a width or height that is smaller
18041 than this ratio allows will be rounded up to the minimum
18042 allowed size by the camera device.<wbr/></p>
18043             </td>
18044           </tr>
18045
18046
18047           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18048            <!-- end of entry -->
18049         
18050                 
18051           <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
18052             <td class="entry_name
18053                 entry_name_deprecated
18054              " rowspan="3">
18055               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
18056             </td>
18057             <td class="entry_type">
18058                 <span class="entry_type_name">int64</span>
18059                 <span class="entry_type_container">x</span>
18060
18061                 <span class="entry_type_array">
18062                   n
18063                 </span>
18064               <span class="entry_type_visibility"> [hidden]</span>
18065
18066
18067
18068               <span class="entry_type_deprecated">[deprecated] </span>
18069
18070
18071
18072             </td> <!-- entry_type -->
18073
18074             <td class="entry_description">
18075               <p>For each available processed output size (defined in
18076 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
18077 minimum supportable frame duration for that size.<wbr/></p>
18078             </td>
18079
18080             <td class="entry_units">
18081               Nanoseconds
18082             </td>
18083
18084             <td class="entry_range">
18085               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18086             </td>
18087
18088             <td class="entry_hal_version">
18089               <p>3.<wbr/>2</p>
18090             </td>
18091
18092             <td class="entry_tags">
18093               <ul class="entry_tags">
18094                   <li><a href="#tag_BC">BC</a></li>
18095               </ul>
18096             </td>
18097
18098           </tr>
18099           <tr class="entries_header">
18100             <th class="th_details" colspan="6">Details</th>
18101           </tr>
18102           <tr class="entry_cont">
18103             <td class="entry_details" colspan="6">
18104               <p>This should correspond to the frame duration when only that processed
18105 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18106 set to FAST.<wbr/></p>
18107 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
18108 be &gt;= max(individual stream min durations).<wbr/></p>
18109             </td>
18110           </tr>
18111
18112
18113           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18114            <!-- end of entry -->
18115         
18116                 
18117           <tr class="entry" id="static_android.scaler.availableProcessedSizes">
18118             <td class="entry_name
18119                 entry_name_deprecated
18120              " rowspan="5">
18121               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
18122             </td>
18123             <td class="entry_type">
18124                 <span class="entry_type_name">int32</span>
18125                 <span class="entry_type_container">x</span>
18126
18127                 <span class="entry_type_array">
18128                   n x 2
18129                 </span>
18130               <span class="entry_type_visibility"> [hidden as size]</span>
18131
18132
18133
18134               <span class="entry_type_deprecated">[deprecated] </span>
18135
18136
18137
18138             </td> <!-- entry_type -->
18139
18140             <td class="entry_description">
18141               <p>The resolutions available for use with
18142 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
18143 platform opaque YUV/<wbr/>RGB streams to the GPU or video
18144 encoders.<wbr/></p>
18145             </td>
18146
18147             <td class="entry_units">
18148             </td>
18149
18150             <td class="entry_range">
18151               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18152             </td>
18153
18154             <td class="entry_hal_version">
18155               <p>3.<wbr/>2</p>
18156             </td>
18157
18158             <td class="entry_tags">
18159               <ul class="entry_tags">
18160                   <li><a href="#tag_BC">BC</a></li>
18161               </ul>
18162             </td>
18163
18164           </tr>
18165           <tr class="entries_header">
18166             <th class="th_details" colspan="6">Details</th>
18167           </tr>
18168           <tr class="entry_cont">
18169             <td class="entry_details" colspan="6">
18170               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
18171 <p>For a given use case,<wbr/> the actual maximum supported resolution
18172 may be lower than what is listed here,<wbr/> depending on the destination
18173 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18174 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18175 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18176 can provide.<wbr/></p>
18177 <p>Please reference the documentation for the image data destination to
18178 check if it limits the maximum size for image data.<wbr/></p>
18179             </td>
18180           </tr>
18181
18182           <tr class="entries_header">
18183             <th class="th_details" colspan="6">HAL Implementation Details</th>
18184           </tr>
18185           <tr class="entry_cont">
18186             <td class="entry_details" colspan="6">
18187               <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/>
18188 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>
18189 and each below resolution if it is smaller than or equal to the sensor
18190 maximum resolution (if they are not listed in JPEG sizes already):</p>
18191 <ul>
18192 <li>240p (320 x 240)</li>
18193 <li>480p (640 x 480)</li>
18194 <li>720p (1280 x 720)</li>
18195 <li>1080p (1920 x 1080)</li>
18196 </ul>
18197 <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/>
18198 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
18199             </td>
18200           </tr>
18201
18202           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18203            <!-- end of entry -->
18204         
18205                 
18206           <tr class="entry" id="static_android.scaler.availableRawMinDurations">
18207             <td class="entry_name
18208                 entry_name_deprecated
18209              " rowspan="3">
18210               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
18211             </td>
18212             <td class="entry_type">
18213                 <span class="entry_type_name">int64</span>
18214                 <span class="entry_type_container">x</span>
18215
18216                 <span class="entry_type_array">
18217                   n
18218                 </span>
18219               <span class="entry_type_visibility"> [system]</span>
18220
18221
18222
18223               <span class="entry_type_deprecated">[deprecated] </span>
18224
18225
18226
18227             </td> <!-- entry_type -->
18228
18229             <td class="entry_description">
18230               <p>For each available raw output size (defined in
18231 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
18232 supportable frame duration for that size.<wbr/></p>
18233             </td>
18234
18235             <td class="entry_units">
18236               Nanoseconds
18237             </td>
18238
18239             <td class="entry_range">
18240               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18241             </td>
18242
18243             <td class="entry_hal_version">
18244               <p>3.<wbr/>2</p>
18245             </td>
18246
18247             <td class="entry_tags">
18248               <ul class="entry_tags">
18249                   <li><a href="#tag_BC">BC</a></li>
18250               </ul>
18251             </td>
18252
18253           </tr>
18254           <tr class="entries_header">
18255             <th class="th_details" colspan="6">Details</th>
18256           </tr>
18257           <tr class="entry_cont">
18258             <td class="entry_details" colspan="6">
18259               <p>Should correspond to the frame duration when only the raw stream is
18260 active.<wbr/></p>
18261 <p>When multiple streams are configured,<wbr/> the minimum
18262 frame duration will be &gt;= max(individual stream min
18263 durations)</p>
18264             </td>
18265           </tr>
18266
18267
18268           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18269            <!-- end of entry -->
18270         
18271                 
18272           <tr class="entry" id="static_android.scaler.availableRawSizes">
18273             <td class="entry_name
18274                 entry_name_deprecated
18275              " rowspan="1">
18276               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
18277             </td>
18278             <td class="entry_type">
18279                 <span class="entry_type_name">int32</span>
18280                 <span class="entry_type_container">x</span>
18281
18282                 <span class="entry_type_array">
18283                   n x 2
18284                 </span>
18285               <span class="entry_type_visibility"> [system as size]</span>
18286
18287
18288
18289               <span class="entry_type_deprecated">[deprecated] </span>
18290
18291
18292
18293             </td> <!-- entry_type -->
18294
18295             <td class="entry_description">
18296               <p>The resolutions available for use with raw
18297 sensor output streams,<wbr/> listed as width,<wbr/>
18298 height</p>
18299             </td>
18300
18301             <td class="entry_units">
18302             </td>
18303
18304             <td class="entry_range">
18305               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18306             </td>
18307
18308             <td class="entry_hal_version">
18309               <p>3.<wbr/>2</p>
18310             </td>
18311
18312             <td class="entry_tags">
18313             </td>
18314
18315           </tr>
18316
18317
18318           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18319            <!-- end of entry -->
18320         
18321                 
18322           <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
18323             <td class="entry_name
18324              " rowspan="5">
18325               android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
18326             </td>
18327             <td class="entry_type">
18328                 <span class="entry_type_name">int32</span>
18329
18330               <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
18331
18332
18333
18334
18335
18336
18337             </td> <!-- entry_type -->
18338
18339             <td class="entry_description">
18340               <p>The mapping of image formats that are supported by this
18341 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
18342             </td>
18343
18344             <td class="entry_units">
18345             </td>
18346
18347             <td class="entry_range">
18348             </td>
18349
18350             <td class="entry_hal_version">
18351               <p>3.<wbr/>2</p>
18352             </td>
18353
18354             <td class="entry_tags">
18355               <ul class="entry_tags">
18356                   <li><a href="#tag_REPROC">REPROC</a></li>
18357               </ul>
18358             </td>
18359
18360           </tr>
18361           <tr class="entries_header">
18362             <th class="th_details" colspan="6">Details</th>
18363           </tr>
18364           <tr class="entry_cont">
18365             <td class="entry_details" colspan="6">
18366               <p>All camera devices with at least 1
18367 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
18368 available input format.<wbr/></p>
18369 <p>The camera device will support the following map of formats,<wbr/>
18370 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
18371 <table>
18372 <thead>
18373 <tr>
18374 <th align="left">Input Format</th>
18375 <th align="left">Output Format</th>
18376 <th align="left">Capability</th>
18377 </tr>
18378 </thead>
18379 <tbody>
18380 <tr>
18381 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18382 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18383 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18384 </tr>
18385 <tr>
18386 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18387 <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>
18388 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18389 </tr>
18390 <tr>
18391 <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>
18392 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18393 <td align="left">YUV_<wbr/>REPROCESSING</td>
18394 </tr>
18395 <tr>
18396 <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>
18397 <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>
18398 <td align="left">YUV_<wbr/>REPROCESSING</td>
18399 </tr>
18400 </tbody>
18401 </table>
18402 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
18403 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
18404 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
18405 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
18406 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>
18407 <p>Attempting to configure an input stream with output streams not
18408 listed as available in this map is not valid.<wbr/></p>
18409             </td>
18410           </tr>
18411
18412           <tr class="entries_header">
18413             <th class="th_details" colspan="6">HAL Implementation Details</th>
18414           </tr>
18415           <tr class="entry_cont">
18416             <td class="entry_details" colspan="6">
18417               <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
18418 of the image format enumerations.<wbr/> The PRIVATE format refers to the
18419 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
18420 the actual format by using the gralloc usage flags.<wbr/>
18421 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
18422 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
18423 See camera3.<wbr/>h for more details.<wbr/></p>
18424 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
18425 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
18426 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
18427 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
18428 <p>A code sample to read/<wbr/>write this encoding (with a device that
18429 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
18430 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
18431 <pre><code>//<wbr/> reading
18432 int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
18433 for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
18434     int32_<wbr/>t format = contents[i++];
18435     int32_<wbr/>t length = contents[i++];
18436     int32_<wbr/>t output_<wbr/>formats[length];
18437     memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
18438            length * sizeof(int32_<wbr/>t));
18439     i += length;
18440 }
18441
18442 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
18443 int32_<wbr/>t[] contents = {
18444   IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18445   YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18446 };
18447 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
18448       sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
18449 </code></pre>
18450 <p>If the HAL claims to support any of the capabilities listed in the
18451 above details,<wbr/> then it must also support all the input-output
18452 combinations listed for that capability.<wbr/> It can optionally support
18453 additional formats if it so chooses.<wbr/></p>
18454             </td>
18455           </tr>
18456
18457           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18458            <!-- end of entry -->
18459         
18460                 
18461           <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
18462             <td class="entry_name
18463              " rowspan="5">
18464               android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
18465             </td>
18466             <td class="entry_type">
18467                 <span class="entry_type_name entry_type_name_enum">int32</span>
18468                 <span class="entry_type_container">x</span>
18469
18470                 <span class="entry_type_array">
18471                   n x 4
18472                 </span>
18473               <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
18474
18475
18476               <span class="entry_type_hwlevel">[legacy] </span>
18477
18478
18479
18480                 <ul class="entry_type_enum">
18481                   <li>
18482                     <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
18483                   </li>
18484                   <li>
18485                     <span class="entry_type_enum_name">INPUT (v3.2)</span>
18486                   </li>
18487                 </ul>
18488
18489             </td> <!-- entry_type -->
18490
18491             <td class="entry_description">
18492               <p>The available stream configurations that this
18493 camera device supports
18494 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
18495             </td>
18496
18497             <td class="entry_units">
18498             </td>
18499
18500             <td class="entry_range">
18501             </td>
18502
18503             <td class="entry_hal_version">
18504               <p>3.<wbr/>2</p>
18505             </td>
18506
18507             <td class="entry_tags">
18508             </td>
18509
18510           </tr>
18511           <tr class="entries_header">
18512             <th class="th_details" colspan="6">Details</th>
18513           </tr>
18514           <tr class="entry_cont">
18515             <td class="entry_details" colspan="6">
18516               <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
18517 tuples.<wbr/></p>
18518 <p>For a given use case,<wbr/> the actual maximum supported resolution
18519 may be lower than what is listed here,<wbr/> depending on the destination
18520 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18521 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18522 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18523 can provide.<wbr/></p>
18524 <p>Please reference the documentation for the image data destination to
18525 check if it limits the maximum size for image data.<wbr/></p>
18526 <p>Not all output formats may be supported in a configuration with
18527 an input stream of a particular format.<wbr/> For more details,<wbr/> see
18528 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
18529 <p>The following table describes the minimum required output stream
18530 configurations based on the hardware level
18531 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
18532 <table>
18533 <thead>
18534 <tr>
18535 <th align="center">Format</th>
18536 <th align="center">Size</th>
18537 <th align="center">Hardware Level</th>
18538 <th align="center">Notes</th>
18539 </tr>
18540 </thead>
18541 <tbody>
18542 <tr>
18543 <td align="center">JPEG</td>
18544 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
18545 <td align="center">Any</td>
18546 <td align="center"></td>
18547 </tr>
18548 <tr>
18549 <td align="center">JPEG</td>
18550 <td align="center">1920x1080 (1080p)</td>
18551 <td align="center">Any</td>
18552 <td align="center">if 1080p &lt;= activeArraySize</td>
18553 </tr>
18554 <tr>
18555 <td align="center">JPEG</td>
18556 <td align="center">1280x720 (720)</td>
18557 <td align="center">Any</td>
18558 <td align="center">if 720p &lt;= activeArraySize</td>
18559 </tr>
18560 <tr>
18561 <td align="center">JPEG</td>
18562 <td align="center">640x480 (480p)</td>
18563 <td align="center">Any</td>
18564 <td align="center">if 480p &lt;= activeArraySize</td>
18565 </tr>
18566 <tr>
18567 <td align="center">JPEG</td>
18568 <td align="center">320x240 (240p)</td>
18569 <td align="center">Any</td>
18570 <td align="center">if 240p &lt;= activeArraySize</td>
18571 </tr>
18572 <tr>
18573 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
18574 <td align="center">all output sizes available for JPEG</td>
18575 <td align="center">FULL</td>
18576 <td align="center"></td>
18577 </tr>
18578 <tr>
18579 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
18580 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
18581 <td align="center">LIMITED</td>
18582 <td align="center"></td>
18583 </tr>
18584 <tr>
18585 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
18586 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
18587 <td align="center">Any</td>
18588 <td align="center"></td>
18589 </tr>
18590 </tbody>
18591 </table>
18592 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
18593 mandatory stream configurations on a per-capability basis.<wbr/></p>
18594             </td>
18595           </tr>
18596
18597           <tr class="entries_header">
18598             <th class="th_details" colspan="6">HAL Implementation Details</th>
18599           </tr>
18600           <tr class="entry_cont">
18601             <td class="entry_details" colspan="6">
18602               <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
18603 of sensor maximum resolution for JPEG formats (regardless of hardware
18604 level).<wbr/></p>
18605 <p>(The following is a rewording of the above required table):</p>
18606 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
18607 <ul>
18608 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
18609 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
18610 (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/>
18611 it does not have to be included in the supported JPEG sizes.<wbr/></li>
18612 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
18613 the dimensions being a multiple of 16.<wbr/></li>
18614 </ul>
18615 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
18616 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
18617 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
18618 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
18619 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
18620 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
18621 3264x2448.<wbr/></p>
18622 <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/>
18623 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
18624 here as output streams.<wbr/></p>
18625 <p>It must also include each below resolution if it is smaller than or
18626 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
18627 formats),<wbr/> as output streams:</p>
18628 <ul>
18629 <li>240p (320 x 240)</li>
18630 <li>480p (640 x 480)</li>
18631 <li>720p (1280 x 720)</li>
18632 <li>1080p (1920 x 1080)</li>
18633 </ul>
18634 <p>For LIMITED capability devices
18635 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
18636 the HAL only has to list up to the maximum video size
18637 supported by the device.<wbr/></p>
18638 <p>Regardless of hardware level,<wbr/> every output resolution available for
18639 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
18640 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
18641 <ul>
18642 <li>availableFormats</li>
18643 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
18644 </ul>
18645             </td>
18646           </tr>
18647
18648           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18649            <!-- end of entry -->
18650         
18651                 
18652           <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
18653             <td class="entry_name
18654              " rowspan="3">
18655               android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
18656             </td>
18657             <td class="entry_type">
18658                 <span class="entry_type_name">int64</span>
18659                 <span class="entry_type_container">x</span>
18660
18661                 <span class="entry_type_array">
18662                   4 x n
18663                 </span>
18664               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
18665
18666
18667               <span class="entry_type_hwlevel">[legacy] </span>
18668
18669
18670
18671
18672             </td> <!-- entry_type -->
18673
18674             <td class="entry_description">
18675               <p>This lists the minimum frame duration for each
18676 format/<wbr/>size combination.<wbr/></p>
18677             </td>
18678
18679             <td class="entry_units">
18680               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
18681             </td>
18682
18683             <td class="entry_range">
18684             </td>
18685
18686             <td class="entry_hal_version">
18687               <p>3.<wbr/>2</p>
18688             </td>
18689
18690             <td class="entry_tags">
18691               <ul class="entry_tags">
18692                   <li><a href="#tag_V1">V1</a></li>
18693               </ul>
18694             </td>
18695
18696           </tr>
18697           <tr class="entries_header">
18698             <th class="th_details" colspan="6">Details</th>
18699           </tr>
18700           <tr class="entry_cont">
18701             <td class="entry_details" colspan="6">
18702               <p>This should correspond to the frame duration when only that
18703 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18704 set to either OFF or FAST.<wbr/></p>
18705 <p>When multiple streams are used in a request,<wbr/> the minimum frame
18706 duration will be max(individual stream min durations).<wbr/></p>
18707 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
18708 is the same regardless of whether the stream is input or output.<wbr/></p>
18709 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
18710 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
18711 calculating the max frame rate.<wbr/></p>
18712             </td>
18713           </tr>
18714
18715
18716           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18717            <!-- end of entry -->
18718         
18719                 
18720           <tr class="entry" id="static_android.scaler.availableStallDurations">
18721             <td class="entry_name
18722              " rowspan="5">
18723               android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
18724             </td>
18725             <td class="entry_type">
18726                 <span class="entry_type_name">int64</span>
18727                 <span class="entry_type_container">x</span>
18728
18729                 <span class="entry_type_array">
18730                   4 x n
18731                 </span>
18732               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
18733
18734
18735               <span class="entry_type_hwlevel">[legacy] </span>
18736
18737
18738
18739
18740             </td> <!-- entry_type -->
18741
18742             <td class="entry_description">
18743               <p>This lists the maximum stall duration for each
18744 output format/<wbr/>size combination.<wbr/></p>
18745             </td>
18746
18747             <td class="entry_units">
18748               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
18749             </td>
18750
18751             <td class="entry_range">
18752             </td>
18753
18754             <td class="entry_hal_version">
18755               <p>3.<wbr/>2</p>
18756             </td>
18757
18758             <td class="entry_tags">
18759               <ul class="entry_tags">
18760                   <li><a href="#tag_V1">V1</a></li>
18761               </ul>
18762             </td>
18763
18764           </tr>
18765           <tr class="entries_header">
18766             <th class="th_details" colspan="6">Details</th>
18767           </tr>
18768           <tr class="entry_cont">
18769             <td class="entry_details" colspan="6">
18770               <p>A stall duration is how much extra time would get added
18771 to the normal minimum frame duration for a repeating request
18772 that has streams with non-zero stall.<wbr/></p>
18773 <p>For example,<wbr/> consider JPEG captures which have the following
18774 characteristics:</p>
18775 <ul>
18776 <li>JPEG streams act like processed YUV streams in requests for which
18777 they are not included; in requests in which they are directly
18778 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
18779 JPEG stream requires the underlying YUV data to always be ready for
18780 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
18781 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
18782 <li>The JPEG processor can run concurrently to the rest of the camera
18783 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
18784 </ul>
18785 <p>In other words,<wbr/> using a repeating YUV request would result
18786 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
18787 JPEG request is submitted periodically,<wbr/> the frame rate will stay
18788 at 30 FPS (as long as we wait for the previous JPEG to return each
18789 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
18790 the frame rate will drop from 30 FPS.<wbr/></p>
18791 <p>In general,<wbr/> submitting a new request with a non-0 stall time
18792 stream will <em>not</em> cause a frame rate drop unless there are still
18793 outstanding buffers for that stream from previous requests.<wbr/></p>
18794 <p>Submitting a repeating request with streams (call this <code>S</code>)
18795 is the same as setting the minimum frame duration from
18796 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
18797 the maximum stall duration for <code>S</code>.<wbr/></p>
18798 <p>If interleaving requests with and without a stall duration,<wbr/>
18799 a request will stall by the maximum of the remaining times
18800 for each can-stall stream with outstanding buffers.<wbr/></p>
18801 <p>This means that a stalling request will not have an exposure start
18802 until the stall has completed.<wbr/></p>
18803 <p>This should correspond to the stall duration when only that stream is
18804 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
18805 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
18806 effectively results in an indeterminate stall duration for all
18807 streams in a request (the regular stall calculation rules are
18808 ignored).<wbr/></p>
18809 <p>The following formats may always have a stall duration:</p>
18810 <ul>
18811 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
18812 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
18813 </ul>
18814 <p>The following formats will never have a stall duration:</p>
18815 <ul>
18816 <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>
18817 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
18818 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
18819 </ul>
18820 <p>All other formats may or may not have an allowed stall duration on
18821 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
18822 for more details.<wbr/></p>
18823 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
18824 calculating the max frame rate (absent stalls).<wbr/></p>
18825             </td>
18826           </tr>
18827
18828           <tr class="entries_header">
18829             <th class="th_details" colspan="6">HAL Implementation Details</th>
18830           </tr>
18831           <tr class="entry_cont">
18832             <td class="entry_details" colspan="6">
18833               <p>If possible,<wbr/> it is recommended that all non-JPEG formats
18834 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
18835 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
18836             </td>
18837           </tr>
18838
18839           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18840            <!-- end of entry -->
18841         
18842                 
18843           <tr class="entry" id="static_android.scaler.streamConfigurationMap">
18844             <td class="entry_name
18845              " rowspan="5">
18846               android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
18847             </td>
18848             <td class="entry_type">
18849                 <span class="entry_type_name">int32</span>
18850
18851               <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
18852
18853               <span class="entry_type_synthetic">[synthetic] </span>
18854
18855               <span class="entry_type_hwlevel">[legacy] </span>
18856
18857
18858
18859
18860             </td> <!-- entry_type -->
18861
18862             <td class="entry_description">
18863               <p>The available stream configurations that this
18864 camera device supports; also includes the minimum frame durations
18865 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
18866             </td>
18867
18868             <td class="entry_units">
18869             </td>
18870
18871             <td class="entry_range">
18872             </td>
18873
18874             <td class="entry_hal_version">
18875               <p>3.<wbr/>2</p>
18876             </td>
18877
18878             <td class="entry_tags">
18879             </td>
18880
18881           </tr>
18882           <tr class="entries_header">
18883             <th class="th_details" colspan="6">Details</th>
18884           </tr>
18885           <tr class="entry_cont">
18886             <td class="entry_details" colspan="6">
18887               <p>All camera devices will support sensor maximum resolution (defined by
18888 <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>
18889 <p>For a given use case,<wbr/> the actual maximum supported resolution
18890 may be lower than what is listed here,<wbr/> depending on the destination
18891 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18892 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18893 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18894 can provide.<wbr/></p>
18895 <p>Please reference the documentation for the image data destination to
18896 check if it limits the maximum size for image data.<wbr/></p>
18897 <p>The following table describes the minimum required output stream
18898 configurations based on the hardware level
18899 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
18900 <table>
18901 <thead>
18902 <tr>
18903 <th align="center">Format</th>
18904 <th align="center">Size</th>
18905 <th align="center">Hardware Level</th>
18906 <th align="center">Notes</th>
18907 </tr>
18908 </thead>
18909 <tbody>
18910 <tr>
18911 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18912 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
18913 <td align="center">Any</td>
18914 <td align="center"></td>
18915 </tr>
18916 <tr>
18917 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18918 <td align="center">1920x1080 (1080p)</td>
18919 <td align="center">Any</td>
18920 <td align="center">if 1080p &lt;= activeArraySize</td>
18921 </tr>
18922 <tr>
18923 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18924 <td align="center">1280x720 (720p)</td>
18925 <td align="center">Any</td>
18926 <td align="center">if 720p &lt;= activeArraySize</td>
18927 </tr>
18928 <tr>
18929 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18930 <td align="center">640x480 (480p)</td>
18931 <td align="center">Any</td>
18932 <td align="center">if 480p &lt;= activeArraySize</td>
18933 </tr>
18934 <tr>
18935 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18936 <td align="center">320x240 (240p)</td>
18937 <td align="center">Any</td>
18938 <td align="center">if 240p &lt;= activeArraySize</td>
18939 </tr>
18940 <tr>
18941 <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>
18942 <td align="center">all output sizes available for JPEG</td>
18943 <td align="center">FULL</td>
18944 <td align="center"></td>
18945 </tr>
18946 <tr>
18947 <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>
18948 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
18949 <td align="center">LIMITED</td>
18950 <td align="center"></td>
18951 </tr>
18952 <tr>
18953 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18954 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
18955 <td align="center">Any</td>
18956 <td align="center"></td>
18957 </tr>
18958 </tbody>
18959 </table>
18960 <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
18961 stream configurations on a per-capability basis.<wbr/></p>
18962 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
18963 <ul>
18964 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
18965 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
18966 (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/>
18967 it does not have to be included in the supported JPEG sizes.<wbr/></li>
18968 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
18969 the dimensions being a multiple of 16.<wbr/>
18970 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
18971 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
18972 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
18973 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
18974 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
18975 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
18976 3264x2448.<wbr/></li>
18977 </ul>
18978             </td>
18979           </tr>
18980
18981           <tr class="entries_header">
18982             <th class="th_details" colspan="6">HAL Implementation Details</th>
18983           </tr>
18984           <tr class="entry_cont">
18985             <td class="entry_details" colspan="6">
18986               <p>Do not set this property directly
18987 (it is synthetic and will not be available at the HAL layer);
18988 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
18989 <p>Not all output formats may be supported in a configuration with
18990 an input stream of a particular format.<wbr/> For more details,<wbr/> see
18991 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
18992 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
18993 of sensor maximum resolution for JPEG formats (regardless of hardware
18994 level).<wbr/></p>
18995 <p>(The following is a rewording of the above required table):</p>
18996 <p>The HAL must include sensor maximum resolution (defined by
18997 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
18998 <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/>
18999 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19000 here as output streams.<wbr/></p>
19001 <p>It must also include each below resolution if it is smaller than or
19002 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19003 formats),<wbr/> as output streams:</p>
19004 <ul>
19005 <li>240p (320 x 240)</li>
19006 <li>480p (640 x 480)</li>
19007 <li>720p (1280 x 720)</li>
19008 <li>1080p (1920 x 1080)</li>
19009 </ul>
19010 <p>For LIMITED capability devices
19011 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19012 the HAL only has to list up to the maximum video size
19013 supported by the device.<wbr/></p>
19014 <p>Regardless of hardware level,<wbr/> every output resolution available for
19015 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19016 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19017 <ul>
19018 <li>availableFormats</li>
19019 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19020 </ul>
19021             </td>
19022           </tr>
19023
19024           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19025            <!-- end of entry -->
19026         
19027                 
19028           <tr class="entry" id="static_android.scaler.croppingType">
19029             <td class="entry_name
19030              " rowspan="3">
19031               android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
19032             </td>
19033             <td class="entry_type">
19034                 <span class="entry_type_name entry_type_name_enum">byte</span>
19035
19036               <span class="entry_type_visibility"> [public]</span>
19037
19038
19039               <span class="entry_type_hwlevel">[legacy] </span>
19040
19041
19042
19043                 <ul class="entry_type_enum">
19044                   <li>
19045                     <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span>
19046                     <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
19047                   </li>
19048                   <li>
19049                     <span class="entry_type_enum_name">FREEFORM (v3.2)</span>
19050                     <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
19051                   </li>
19052                 </ul>
19053
19054             </td> <!-- entry_type -->
19055
19056             <td class="entry_description">
19057               <p>The crop type that this camera device supports.<wbr/></p>
19058             </td>
19059
19060             <td class="entry_units">
19061             </td>
19062
19063             <td class="entry_range">
19064             </td>
19065
19066             <td class="entry_hal_version">
19067               <p>3.<wbr/>2</p>
19068             </td>
19069
19070             <td class="entry_tags">
19071             </td>
19072
19073           </tr>
19074           <tr class="entries_header">
19075             <th class="th_details" colspan="6">Details</th>
19076           </tr>
19077           <tr class="entry_cont">
19078             <td class="entry_details" colspan="6">
19079               <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
19080 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
19081 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>)
19082 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
19083 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
19084 <p>Camera devices that support FREEFORM cropping will support any crop region that
19085 is inside of the active array.<wbr/> The camera device will apply the same crop region and
19086 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>
19087 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
19088             </td>
19089           </tr>
19090
19091
19092           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19093            <!-- end of entry -->
19094         
19095         
19096
19097       <!-- end of kind -->
19098       </tbody>
19099       <tr><td colspan="7" class="kind">dynamic</td></tr>
19100
19101       <thead class="entries_header">
19102         <tr>
19103           <th class="th_name">Property Name</th>
19104           <th class="th_type">Type</th>
19105           <th class="th_description">Description</th>
19106           <th class="th_units">Units</th>
19107           <th class="th_range">Range</th>
19108           <th class="th_hal_version">Initial HIDL HAL version</th>
19109           <th class="th_tags">Tags</th>
19110         </tr>
19111       </thead>
19112
19113       <tbody>
19114
19115         
19116
19117         
19118
19119         
19120
19121         
19122
19123                 
19124           <tr class="entry" id="dynamic_android.scaler.cropRegion">
19125             <td class="entry_name
19126              " rowspan="5">
19127               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
19128             </td>
19129             <td class="entry_type">
19130                 <span class="entry_type_name">int32</span>
19131                 <span class="entry_type_container">x</span>
19132
19133                 <span class="entry_type_array">
19134                   4
19135                 </span>
19136               <span class="entry_type_visibility"> [public as rectangle]</span>
19137
19138
19139               <span class="entry_type_hwlevel">[legacy] </span>
19140
19141
19142
19143
19144             </td> <!-- entry_type -->
19145
19146             <td class="entry_description">
19147               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
19148             </td>
19149
19150             <td class="entry_units">
19151               Pixel coordinates relative to
19152           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19153             </td>
19154
19155             <td class="entry_range">
19156             </td>
19157
19158             <td class="entry_hal_version">
19159               <p>3.<wbr/>2</p>
19160             </td>
19161
19162             <td class="entry_tags">
19163               <ul class="entry_tags">
19164                   <li><a href="#tag_BC">BC</a></li>
19165               </ul>
19166             </td>
19167
19168           </tr>
19169           <tr class="entries_header">
19170             <th class="th_details" colspan="6">Details</th>
19171           </tr>
19172           <tr class="entry_cont">
19173             <td class="entry_details" colspan="6">
19174               <p>This control can be used to implement digital zoom.<wbr/></p>
19175 <p>The crop region coordinate system is based off
19176 <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
19177 top-left corner of the sensor active array.<wbr/></p>
19178 <p>Output streams use this rectangle to produce their output,<wbr/>
19179 cropping to a smaller region if necessary to maintain the
19180 stream's aspect ratio,<wbr/> then scaling the sensor input to
19181 match the output's configured resolution.<wbr/></p>
19182 <p>The crop region is applied after the RAW to other color
19183 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
19184 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
19185 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
19186 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
19187 be done to maximize the final pixel area of the stream.<wbr/></p>
19188 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
19189 ratio,<wbr/> then 4:3 streams will use the exact crop
19190 region.<wbr/> 16:9 streams will further crop vertically
19191 (letterbox).<wbr/></p>
19192 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
19193 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
19194 streams will match exactly.<wbr/> These additional crops will
19195 be centered within the crop region.<wbr/></p>
19196 <p>The width and height of the crop region cannot
19197 be set to be smaller than
19198 <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
19199 <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>
19200 <p>The camera device may adjust the crop region to account
19201 for rounding and other hardware requirements; the final
19202 crop region used will be included in the output capture
19203 result.<wbr/></p>
19204             </td>
19205           </tr>
19206
19207           <tr class="entries_header">
19208             <th class="th_details" colspan="6">HAL Implementation Details</th>
19209           </tr>
19210           <tr class="entry_cont">
19211             <td class="entry_details" colspan="6">
19212               <p>The output streams must maintain square pixels at all
19213 times,<wbr/> no matter what the relative aspect ratios of the
19214 crop region and the stream are.<wbr/>  Negative values for
19215 corner are allowed for raw output if full pixel array is
19216 larger than active pixel array.<wbr/> Width and height may be
19217 rounded to nearest larger supportable width,<wbr/> especially
19218 for raw output,<wbr/> where only a few fixed scales may be
19219 possible.<wbr/></p>
19220 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
19221 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
19222 <ul>
19223 <li>
19224 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
19225 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
19226 <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>
19227 <ol>
19228 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
19229 cropped pixel area by (tx,<wbr/> ty),<wbr/>
19230 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
19231 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
19232 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
19233 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
19234 <li>Scale the width and height of requested cropRegion with scaling factor of
19235 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
19236 respectively.<wbr/>
19237 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
19238 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
19239 follow the general cropping rule for this new cropRegion and effective active
19240 array size.<wbr/></li>
19241 </ol>
19242 </li>
19243 <li>
19244 <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/>
19245 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
19246 The reported cropRegion may be slightly different with the requested cropRegion since
19247 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
19248 hardware limitations.<wbr/></p>
19249 </li>
19250 </ul>
19251 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
19252             </td>
19253           </tr>
19254
19255           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19256            <!-- end of entry -->
19257         
19258         
19259
19260       <!-- end of kind -->
19261       </tbody>
19262
19263   <!-- end of section -->
19264   <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
19265
19266
19267       <tr><td colspan="7" class="kind">controls</td></tr>
19268
19269       <thead class="entries_header">
19270         <tr>
19271           <th class="th_name">Property Name</th>
19272           <th class="th_type">Type</th>
19273           <th class="th_description">Description</th>
19274           <th class="th_units">Units</th>
19275           <th class="th_range">Range</th>
19276           <th class="th_hal_version">Initial HIDL HAL version</th>
19277           <th class="th_tags">Tags</th>
19278         </tr>
19279       </thead>
19280
19281       <tbody>
19282
19283         
19284
19285         
19286
19287         
19288
19289         
19290
19291                 
19292           <tr class="entry" id="controls_android.sensor.exposureTime">
19293             <td class="entry_name
19294              " rowspan="3">
19295               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
19296             </td>
19297             <td class="entry_type">
19298                 <span class="entry_type_name">int64</span>
19299
19300               <span class="entry_type_visibility"> [public]</span>
19301
19302
19303               <span class="entry_type_hwlevel">[full] </span>
19304
19305
19306
19307
19308             </td> <!-- entry_type -->
19309
19310             <td class="entry_description">
19311               <p>Duration each pixel is exposed to
19312 light.<wbr/></p>
19313             </td>
19314
19315             <td class="entry_units">
19316               Nanoseconds
19317             </td>
19318
19319             <td class="entry_range">
19320               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
19321             </td>
19322
19323             <td class="entry_hal_version">
19324               <p>3.<wbr/>2</p>
19325             </td>
19326
19327             <td class="entry_tags">
19328               <ul class="entry_tags">
19329                   <li><a href="#tag_V1">V1</a></li>
19330               </ul>
19331             </td>
19332
19333           </tr>
19334           <tr class="entries_header">
19335             <th class="th_details" colspan="6">Details</th>
19336           </tr>
19337           <tr class="entry_cont">
19338             <td class="entry_details" colspan="6">
19339               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
19340 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
19341 The final exposure time used will be available in the output capture result.<wbr/></p>
19342 <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
19343 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19344             </td>
19345           </tr>
19346
19347
19348           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19349            <!-- end of entry -->
19350         
19351                 
19352           <tr class="entry" id="controls_android.sensor.frameDuration">
19353             <td class="entry_name
19354              " rowspan="5">
19355               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
19356             </td>
19357             <td class="entry_type">
19358                 <span class="entry_type_name">int64</span>
19359
19360               <span class="entry_type_visibility"> [public]</span>
19361
19362
19363               <span class="entry_type_hwlevel">[full] </span>
19364
19365
19366
19367
19368             </td> <!-- entry_type -->
19369
19370             <td class="entry_description">
19371               <p>Duration from start of frame exposure to
19372 start of next frame exposure.<wbr/></p>
19373             </td>
19374
19375             <td class="entry_units">
19376               Nanoseconds
19377             </td>
19378
19379             <td class="entry_range">
19380               <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/>
19381 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
19382             </td>
19383
19384             <td class="entry_hal_version">
19385               <p>3.<wbr/>2</p>
19386             </td>
19387
19388             <td class="entry_tags">
19389               <ul class="entry_tags">
19390                   <li><a href="#tag_V1">V1</a></li>
19391               </ul>
19392             </td>
19393
19394           </tr>
19395           <tr class="entries_header">
19396             <th class="th_details" colspan="6">Details</th>
19397           </tr>
19398           <tr class="entry_cont">
19399             <td class="entry_details" colspan="6">
19400               <p>The maximum frame rate that can be supported by a camera subsystem is
19401 a function of many factors:</p>
19402 <ul>
19403 <li>Requested resolutions of output image streams</li>
19404 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
19405 <li>The bandwidth of the imager interface</li>
19406 <li>The bandwidth of the various ISP processing blocks</li>
19407 </ul>
19408 <p>Since these factors can vary greatly between different ISPs and
19409 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
19410 restrictions with as simple a model as possible.<wbr/></p>
19411 <p>The model presented has the following characteristics:</p>
19412 <ul>
19413 <li>The image sensor is always configured to output the smallest
19414 resolution possible given the application's requested output stream
19415 sizes.<wbr/>  The smallest resolution is defined as being at least as large
19416 as the largest requested output stream size; the camera pipeline must
19417 never digitally upsample sensor data when the crop region covers the
19418 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
19419 resolutions are configured,<wbr/> the sensor can provide a higher frame
19420 rate.<wbr/></li>
19421 <li>Since any request may use any or all the currently configured
19422 output streams,<wbr/> the sensor and ISP must be configured to support
19423 scaling a single capture to all the streams at the same time.<wbr/>  This
19424 means the camera pipeline must be ready to produce the largest
19425 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
19426 frame rate of a given configured stream set is governed only by the
19427 largest requested stream resolution.<wbr/></li>
19428 <li>Using more than one output stream in a request does not affect the
19429 frame duration.<wbr/></li>
19430 <li>Certain format-streams may need to do additional background processing
19431 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
19432 can run concurrently to the rest of the camera pipeline,<wbr/> but
19433 cannot process more than 1 capture at a time.<wbr/></li>
19434 </ul>
19435 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
19436 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
19437 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
19438 possible for a given stream configuration.<wbr/></p>
19439 <p>Specifically,<wbr/> the application can use the following rules to
19440 determine the minimum frame duration it can request from the camera
19441 device:</p>
19442 <ol>
19443 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
19444 <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>
19445 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
19446 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
19447 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>
19448 </ol>
19449 <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>
19450 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
19451 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
19452 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
19453 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
19454 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
19455 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
19456 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
19457 <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>
19458 <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
19459 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19460             </td>
19461           </tr>
19462
19463           <tr class="entries_header">
19464             <th class="th_details" colspan="6">HAL Implementation Details</th>
19465           </tr>
19466           <tr class="entry_cont">
19467             <td class="entry_details" colspan="6">
19468               <p>For more details about stalling,<wbr/> see
19469 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
19470             </td>
19471           </tr>
19472
19473           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19474            <!-- end of entry -->
19475         
19476                 
19477           <tr class="entry" id="controls_android.sensor.sensitivity">
19478             <td class="entry_name
19479              " rowspan="5">
19480               android.<wbr/>sensor.<wbr/>sensitivity
19481             </td>
19482             <td class="entry_type">
19483                 <span class="entry_type_name">int32</span>
19484
19485               <span class="entry_type_visibility"> [public]</span>
19486
19487
19488               <span class="entry_type_hwlevel">[full] </span>
19489
19490
19491
19492
19493             </td> <!-- entry_type -->
19494
19495             <td class="entry_description">
19496               <p>The amount of gain applied to sensor data
19497 before processing.<wbr/></p>
19498             </td>
19499
19500             <td class="entry_units">
19501               ISO arithmetic units
19502             </td>
19503
19504             <td class="entry_range">
19505               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
19506             </td>
19507
19508             <td class="entry_hal_version">
19509               <p>3.<wbr/>2</p>
19510             </td>
19511
19512             <td class="entry_tags">
19513               <ul class="entry_tags">
19514                   <li><a href="#tag_V1">V1</a></li>
19515               </ul>
19516             </td>
19517
19518           </tr>
19519           <tr class="entries_header">
19520             <th class="th_details" colspan="6">Details</th>
19521           </tr>
19522           <tr class="entry_cont">
19523             <td class="entry_details" colspan="6">
19524               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
19525 as defined in ISO 12232:2006.<wbr/></p>
19526 <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
19527 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
19528 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
19529 <p>If the camera device cannot apply the exact sensitivity
19530 requested,<wbr/> it will reduce the gain to the nearest supported
19531 value.<wbr/> The final sensitivity used will be available in the
19532 output capture result.<wbr/></p>
19533 <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
19534 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19535             </td>
19536           </tr>
19537
19538           <tr class="entries_header">
19539             <th class="th_details" colspan="6">HAL Implementation Details</th>
19540           </tr>
19541           <tr class="entry_cont">
19542             <td class="entry_details" colspan="6">
19543               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
19544             </td>
19545           </tr>
19546
19547           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19548            <!-- end of entry -->
19549         
19550                 
19551           <tr class="entry" id="controls_android.sensor.testPatternData">
19552             <td class="entry_name
19553              " rowspan="5">
19554               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
19555             </td>
19556             <td class="entry_type">
19557                 <span class="entry_type_name">int32</span>
19558                 <span class="entry_type_container">x</span>
19559
19560                 <span class="entry_type_array">
19561                   4
19562                 </span>
19563               <span class="entry_type_visibility"> [public]</span>
19564
19565
19566
19567
19568
19569
19570             </td> <!-- entry_type -->
19571
19572             <td class="entry_description">
19573               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
19574 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
19575             </td>
19576
19577             <td class="entry_units">
19578             </td>
19579
19580             <td class="entry_range">
19581             </td>
19582
19583             <td class="entry_hal_version">
19584               <p>3.<wbr/>2</p>
19585             </td>
19586
19587             <td class="entry_tags">
19588             </td>
19589
19590           </tr>
19591           <tr class="entries_header">
19592             <th class="th_details" colspan="6">Details</th>
19593           </tr>
19594           <tr class="entry_cont">
19595             <td class="entry_details" colspan="6">
19596               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
19597 The camera device then uses the most significant X bits
19598 that correspond to how many bits are in its Bayer raw sensor
19599 output.<wbr/></p>
19600 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
19601 10 most significant bits from each color channel.<wbr/></p>
19602             </td>
19603           </tr>
19604
19605           <tr class="entries_header">
19606             <th class="th_details" colspan="6">HAL Implementation Details</th>
19607           </tr>
19608           <tr class="entry_cont">
19609             <td class="entry_details" colspan="6">
19610               
19611             </td>
19612           </tr>
19613
19614           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19615            <!-- end of entry -->
19616         
19617                 
19618           <tr class="entry" id="controls_android.sensor.testPatternMode">
19619             <td class="entry_name
19620              " rowspan="5">
19621               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
19622             </td>
19623             <td class="entry_type">
19624                 <span class="entry_type_name entry_type_name_enum">int32</span>
19625
19626               <span class="entry_type_visibility"> [public]</span>
19627
19628
19629
19630
19631
19632                 <ul class="entry_type_enum">
19633                   <li>
19634                     <span class="entry_type_enum_name">OFF (v3.2)</span>
19635                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
19636 device returns captures from the image sensor.<wbr/></p>
19637 <p>This is the default if the key is not set.<wbr/></p></span>
19638                   </li>
19639                   <li>
19640                     <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
19641                     <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
19642 respective color channel provided in
19643 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
19644 <p>For example:</p>
19645 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19646 </code></pre>
19647 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
19648 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19649 </code></pre>
19650 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
19651 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
19652                   </li>
19653                   <li>
19654                     <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
19655                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
19656 <p>The vertical bars (left-to-right) are as follows:</p>
19657 <ul>
19658 <li>100% white</li>
19659 <li>yellow</li>
19660 <li>cyan</li>
19661 <li>green</li>
19662 <li>magenta</li>
19663 <li>red</li>
19664 <li>blue</li>
19665 <li>black</li>
19666 </ul>
19667 <p>In general the image would look like the following:</p>
19668 <pre><code>W Y C G M R B K
19669 W Y C G M R B K
19670 W Y C G M R B K
19671 W Y C G M R B K
19672 W Y C G M R B K
19673 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19674 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19675 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19676
19677 (B = Blue,<wbr/> K = Black)
19678 </code></pre>
19679 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
19680 When this is not possible,<wbr/> the bar size should be rounded
19681 down to the nearest integer and the pattern can repeat
19682 on the right side.<wbr/></p>
19683 <p>Each bar's height must always take up the full sensor
19684 pixel array height.<wbr/></p>
19685 <p>Each pixel in this test pattern must be set to either
19686 0% intensity or 100% intensity.<wbr/></p></span>
19687                   </li>
19688                   <li>
19689                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
19690                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
19691 each bar should start at its specified color at the top,<wbr/>
19692 and fade to gray at the bottom.<wbr/></p>
19693 <p>Furthermore each bar is further subdivided into a left and
19694 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
19695 and the right half should have a quantized gradient.<wbr/></p>
19696 <p>In particular,<wbr/> the right half's should consist of blocks of the
19697 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
19698 <p>The least significant bits in the quantized gradient should
19699 be copied from the most significant bits of the smooth gradient.<wbr/></p>
19700 <p>The height of each bar should always be a multiple of 128.<wbr/>
19701 When this is not the case,<wbr/> the pattern should repeat at the bottom
19702 of the image.<wbr/></p></span>
19703                   </li>
19704                   <li>
19705                     <span class="entry_type_enum_name">PN9 (v3.2)</span>
19706                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
19707 generated from a PN9 512-bit sequence (typically implemented
19708 in hardware with a linear feedback shift register).<wbr/></p>
19709 <p>The generator should be reset at the beginning of each frame,<wbr/>
19710 and thus each subsequent raw frame with this test pattern should
19711 be exactly the same as the last.<wbr/></p></span>
19712                   </li>
19713                   <li>
19714                     <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
19715                     <span class="entry_type_enum_value">256</span>
19716                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
19717 available only on this camera device are at least this numeric
19718 value.<wbr/></p>
19719 <p>All of the custom test patterns will be static
19720 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
19721                   </li>
19722                 </ul>
19723
19724             </td> <!-- entry_type -->
19725
19726             <td class="entry_description">
19727               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
19728 doing a real exposure from the camera.<wbr/></p>
19729             </td>
19730
19731             <td class="entry_units">
19732             </td>
19733
19734             <td class="entry_range">
19735               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
19736             </td>
19737
19738             <td class="entry_hal_version">
19739               <p>3.<wbr/>2</p>
19740             </td>
19741
19742             <td class="entry_tags">
19743             </td>
19744
19745           </tr>
19746           <tr class="entries_header">
19747             <th class="th_details" colspan="6">Details</th>
19748           </tr>
19749           <tr class="entry_cont">
19750             <td class="entry_details" colspan="6">
19751               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
19752 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
19753 work as normal.<wbr/></p>
19754 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
19755 occur (and that the test pattern remain unmodified,<wbr/> since the flash
19756 would not actually affect it).<wbr/></p>
19757 <p>Defaults to OFF.<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               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
19767 <p>The HAL may choose to substitute test patterns from the sensor
19768 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
19769 indistinguishable to the ISP whether the data came from the
19770 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
19771             </td>
19772           </tr>
19773
19774           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19775            <!-- end of entry -->
19776         
19777         
19778
19779       <!-- end of kind -->
19780       </tbody>
19781       <tr><td colspan="7" class="kind">static</td></tr>
19782
19783       <thead class="entries_header">
19784         <tr>
19785           <th class="th_name">Property Name</th>
19786           <th class="th_type">Type</th>
19787           <th class="th_description">Description</th>
19788           <th class="th_units">Units</th>
19789           <th class="th_range">Range</th>
19790           <th class="th_hal_version">Initial HIDL HAL version</th>
19791           <th class="th_tags">Tags</th>
19792         </tr>
19793       </thead>
19794
19795       <tbody>
19796
19797         
19798
19799         
19800
19801         
19802
19803         
19804                 
19805             
19806
19807                 
19808           <tr class="entry" id="static_android.sensor.info.activeArraySize">
19809             <td class="entry_name
19810              " rowspan="5">
19811               android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19812             </td>
19813             <td class="entry_type">
19814                 <span class="entry_type_name">int32</span>
19815                 <span class="entry_type_container">x</span>
19816
19817                 <span class="entry_type_array">
19818                   4
19819                 </span>
19820               <span class="entry_type_visibility"> [public as rectangle]</span>
19821
19822
19823               <span class="entry_type_hwlevel">[legacy] </span>
19824
19825
19826                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
19827
19828
19829             </td> <!-- entry_type -->
19830
19831             <td class="entry_description">
19832               <p>The area of the image sensor which corresponds to active pixels after any geometric
19833 distortion correction has been applied.<wbr/></p>
19834             </td>
19835
19836             <td class="entry_units">
19837               Pixel coordinates on the image sensor
19838             </td>
19839
19840             <td class="entry_range">
19841             </td>
19842
19843             <td class="entry_hal_version">
19844               <p>3.<wbr/>2</p>
19845             </td>
19846
19847             <td class="entry_tags">
19848               <ul class="entry_tags">
19849                   <li><a href="#tag_RAW">RAW</a></li>
19850               </ul>
19851             </td>
19852
19853           </tr>
19854           <tr class="entries_header">
19855             <th class="th_details" colspan="6">Details</th>
19856           </tr>
19857           <tr class="entry_cont">
19858             <td class="entry_details" colspan="6">
19859               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
19860 the region that actually receives light from the scene) after any geometric correction
19861 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
19862 image output formats aside from the raw formats.<wbr/></p>
19863 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
19864 the full pixel array,<wbr/> and the size of the full pixel array is given by
19865 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19866 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
19867 <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
19868 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
19869 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
19870 include black calibration pixels or other inactive regions,<wbr/> and geometric correction
19871 resulting in scaling or cropping may have been applied.<wbr/></p>
19872             </td>
19873           </tr>
19874
19875           <tr class="entries_header">
19876             <th class="th_details" colspan="6">HAL Implementation Details</th>
19877           </tr>
19878           <tr class="entry_cont">
19879             <td class="entry_details" colspan="6">
19880               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
19881 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
19882 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>
19883             </td>
19884           </tr>
19885
19886           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19887            <!-- end of entry -->
19888         
19889                 
19890           <tr class="entry" id="static_android.sensor.info.sensitivityRange">
19891             <td class="entry_name
19892              " rowspan="3">
19893               android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
19894             </td>
19895             <td class="entry_type">
19896                 <span class="entry_type_name">int32</span>
19897                 <span class="entry_type_container">x</span>
19898
19899                 <span class="entry_type_array">
19900                   2
19901                 </span>
19902               <span class="entry_type_visibility"> [public as rangeInt]</span>
19903
19904
19905               <span class="entry_type_hwlevel">[full] </span>
19906
19907
19908                 <div class="entry_type_notes">Range of supported sensitivities</div>
19909
19910
19911             </td> <!-- entry_type -->
19912
19913             <td class="entry_description">
19914               <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
19915 camera device.<wbr/></p>
19916             </td>
19917
19918             <td class="entry_units">
19919             </td>
19920
19921             <td class="entry_range">
19922               <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
19923             </td>
19924
19925             <td class="entry_hal_version">
19926               <p>3.<wbr/>2</p>
19927             </td>
19928
19929             <td class="entry_tags">
19930               <ul class="entry_tags">
19931                   <li><a href="#tag_BC">BC</a></li>
19932                   <li><a href="#tag_V1">V1</a></li>
19933               </ul>
19934             </td>
19935
19936           </tr>
19937           <tr class="entries_header">
19938             <th class="th_details" colspan="6">Details</th>
19939           </tr>
19940           <tr class="entry_cont">
19941             <td class="entry_details" colspan="6">
19942               <p>The values are the standard ISO sensitivity values,<wbr/>
19943 as defined in ISO 12232:2006.<wbr/></p>
19944             </td>
19945           </tr>
19946
19947
19948           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19949            <!-- end of entry -->
19950         
19951                 
19952           <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
19953             <td class="entry_name
19954              " rowspan="1">
19955               android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
19956             </td>
19957             <td class="entry_type">
19958                 <span class="entry_type_name entry_type_name_enum">byte</span>
19959
19960               <span class="entry_type_visibility"> [public]</span>
19961
19962
19963               <span class="entry_type_hwlevel">[full] </span>
19964
19965
19966
19967                 <ul class="entry_type_enum">
19968                   <li>
19969                     <span class="entry_type_enum_name">RGGB (v3.2)</span>
19970                   </li>
19971                   <li>
19972                     <span class="entry_type_enum_name">GRBG (v3.2)</span>
19973                   </li>
19974                   <li>
19975                     <span class="entry_type_enum_name">GBRG (v3.2)</span>
19976                   </li>
19977                   <li>
19978                     <span class="entry_type_enum_name">BGGR (v3.2)</span>
19979                   </li>
19980                   <li>
19981                     <span class="entry_type_enum_name">RGB (v3.2)</span>
19982                     <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
19983 values for each pixel,<wbr/> instead of just 1 16-bit value
19984 per pixel.<wbr/></p></span>
19985                   </li>
19986                 </ul>
19987
19988             </td> <!-- entry_type -->
19989
19990             <td class="entry_description">
19991               <p>The arrangement of color filters on sensor;
19992 represents the colors in the top-left 2x2 section of
19993 the sensor,<wbr/> in reading order.<wbr/></p>
19994             </td>
19995
19996             <td class="entry_units">
19997             </td>
19998
19999             <td class="entry_range">
20000             </td>
20001
20002             <td class="entry_hal_version">
20003               <p>3.<wbr/>2</p>
20004             </td>
20005
20006             <td class="entry_tags">
20007               <ul class="entry_tags">
20008                   <li><a href="#tag_RAW">RAW</a></li>
20009               </ul>
20010             </td>
20011
20012           </tr>
20013
20014
20015           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20016            <!-- end of entry -->
20017         
20018                 
20019           <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
20020             <td class="entry_name
20021              " rowspan="3">
20022               android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
20023             </td>
20024             <td class="entry_type">
20025                 <span class="entry_type_name">int64</span>
20026                 <span class="entry_type_container">x</span>
20027
20028                 <span class="entry_type_array">
20029                   2
20030                 </span>
20031               <span class="entry_type_visibility"> [public as rangeLong]</span>
20032
20033
20034               <span class="entry_type_hwlevel">[full] </span>
20035
20036
20037                 <div class="entry_type_notes">nanoseconds</div>
20038
20039
20040             </td> <!-- entry_type -->
20041
20042             <td class="entry_description">
20043               <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
20044 by this camera device.<wbr/></p>
20045             </td>
20046
20047             <td class="entry_units">
20048               Nanoseconds
20049             </td>
20050
20051             <td class="entry_range">
20052               <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
20053 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20054 the maximum exposure time will be greater than 100ms.<wbr/></p>
20055             </td>
20056
20057             <td class="entry_hal_version">
20058               <p>3.<wbr/>2</p>
20059             </td>
20060
20061             <td class="entry_tags">
20062               <ul class="entry_tags">
20063                   <li><a href="#tag_V1">V1</a></li>
20064               </ul>
20065             </td>
20066
20067           </tr>
20068
20069           <tr class="entries_header">
20070             <th class="th_details" colspan="6">HAL Implementation Details</th>
20071           </tr>
20072           <tr class="entry_cont">
20073             <td class="entry_details" colspan="6">
20074               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20075 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
20076 100ms.<wbr/></p>
20077             </td>
20078           </tr>
20079
20080           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20081            <!-- end of entry -->
20082         
20083                 
20084           <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
20085             <td class="entry_name
20086              " rowspan="5">
20087               android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
20088             </td>
20089             <td class="entry_type">
20090                 <span class="entry_type_name">int64</span>
20091
20092               <span class="entry_type_visibility"> [public]</span>
20093
20094
20095               <span class="entry_type_hwlevel">[full] </span>
20096
20097
20098
20099
20100             </td> <!-- entry_type -->
20101
20102             <td class="entry_description">
20103               <p>The maximum possible frame duration (minimum frame rate) for
20104 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
20105             </td>
20106
20107             <td class="entry_units">
20108               Nanoseconds
20109             </td>
20110
20111             <td class="entry_range">
20112               <p>For FULL capability devices
20113 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
20114             </td>
20115
20116             <td class="entry_hal_version">
20117               <p>3.<wbr/>2</p>
20118             </td>
20119
20120             <td class="entry_tags">
20121               <ul class="entry_tags">
20122                   <li><a href="#tag_V1">V1</a></li>
20123               </ul>
20124             </td>
20125
20126           </tr>
20127           <tr class="entries_header">
20128             <th class="th_details" colspan="6">Details</th>
20129           </tr>
20130           <tr class="entry_cont">
20131             <td class="entry_details" colspan="6">
20132               <p>Attempting to use frame durations beyond the maximum will result in the frame
20133 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
20134 durations.<wbr/></p>
20135 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20136 for the minimum frame duration values.<wbr/></p>
20137             </td>
20138           </tr>
20139
20140           <tr class="entries_header">
20141             <th class="th_details" colspan="6">HAL Implementation Details</th>
20142           </tr>
20143           <tr class="entry_cont">
20144             <td class="entry_details" colspan="6">
20145               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20146 The maximum of the range SHOULD be at least
20147 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
20148 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
20149 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
20150 value (since exposure time overrides frame duration).<wbr/></p>
20151 <p>Available minimum frame durations for JPEG must be no greater
20152 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
20153 minimum frame durations (for that respective size).<wbr/></p>
20154 <p>Since JPEG processing is considered offline and can take longer than
20155 a single uncompressed capture,<wbr/> refer to
20156 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
20157 for details about encoding this scenario.<wbr/></p>
20158             </td>
20159           </tr>
20160
20161           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20162            <!-- end of entry -->
20163         
20164                 
20165           <tr class="entry" id="static_android.sensor.info.physicalSize">
20166             <td class="entry_name
20167              " rowspan="5">
20168               android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
20169             </td>
20170             <td class="entry_type">
20171                 <span class="entry_type_name">float</span>
20172                 <span class="entry_type_container">x</span>
20173
20174                 <span class="entry_type_array">
20175                   2
20176                 </span>
20177               <span class="entry_type_visibility"> [public as sizeF]</span>
20178
20179
20180               <span class="entry_type_hwlevel">[legacy] </span>
20181
20182
20183                 <div class="entry_type_notes">width x height</div>
20184
20185
20186             </td> <!-- entry_type -->
20187
20188             <td class="entry_description">
20189               <p>The physical dimensions of the full pixel
20190 array.<wbr/></p>
20191             </td>
20192
20193             <td class="entry_units">
20194               Millimeters
20195             </td>
20196
20197             <td class="entry_range">
20198             </td>
20199
20200             <td class="entry_hal_version">
20201               <p>3.<wbr/>2</p>
20202             </td>
20203
20204             <td class="entry_tags">
20205               <ul class="entry_tags">
20206                   <li><a href="#tag_V1">V1</a></li>
20207                   <li><a href="#tag_BC">BC</a></li>
20208               </ul>
20209             </td>
20210
20211           </tr>
20212           <tr class="entries_header">
20213             <th class="th_details" colspan="6">Details</th>
20214           </tr>
20215           <tr class="entry_cont">
20216             <td class="entry_details" colspan="6">
20217               <p>This is the physical size of the sensor pixel
20218 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20219             </td>
20220           </tr>
20221
20222           <tr class="entries_header">
20223             <th class="th_details" colspan="6">HAL Implementation Details</th>
20224           </tr>
20225           <tr class="entry_cont">
20226             <td class="entry_details" colspan="6">
20227               <p>Needed for FOV calculation for old API</p>
20228             </td>
20229           </tr>
20230
20231           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20232            <!-- end of entry -->
20233         
20234                 
20235           <tr class="entry" id="static_android.sensor.info.pixelArraySize">
20236             <td class="entry_name
20237              " rowspan="3">
20238               android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
20239             </td>
20240             <td class="entry_type">
20241                 <span class="entry_type_name">int32</span>
20242                 <span class="entry_type_container">x</span>
20243
20244                 <span class="entry_type_array">
20245                   2
20246                 </span>
20247               <span class="entry_type_visibility"> [public as size]</span>
20248
20249
20250               <span class="entry_type_hwlevel">[legacy] </span>
20251
20252
20253
20254
20255             </td> <!-- entry_type -->
20256
20257             <td class="entry_description">
20258               <p>Dimensions of the full pixel array,<wbr/> possibly
20259 including black calibration pixels.<wbr/></p>
20260             </td>
20261
20262             <td class="entry_units">
20263               Pixels
20264             </td>
20265
20266             <td class="entry_range">
20267             </td>
20268
20269             <td class="entry_hal_version">
20270               <p>3.<wbr/>2</p>
20271             </td>
20272
20273             <td class="entry_tags">
20274               <ul class="entry_tags">
20275                   <li><a href="#tag_RAW">RAW</a></li>
20276                   <li><a href="#tag_BC">BC</a></li>
20277               </ul>
20278             </td>
20279
20280           </tr>
20281           <tr class="entries_header">
20282             <th class="th_details" colspan="6">Details</th>
20283           </tr>
20284           <tr class="entry_cont">
20285             <td class="entry_details" colspan="6">
20286               <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
20287 <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
20288 the raw buffers produced by this sensor.<wbr/></p>
20289 <p>If a camera device supports raw sensor formats,<wbr/> either this or
20290 <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
20291 output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
20292 (this depends on whether or not the image sensor returns buffers containing pixels that
20293 are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
20294 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
20295 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
20296 defines the rectangle of active pixels that will be included in processed image
20297 formats.<wbr/></p>
20298             </td>
20299           </tr>
20300
20301
20302           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20303            <!-- end of entry -->
20304         
20305                 
20306           <tr class="entry" id="static_android.sensor.info.whiteLevel">
20307             <td class="entry_name
20308              " rowspan="5">
20309               android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
20310             </td>
20311             <td class="entry_type">
20312                 <span class="entry_type_name">int32</span>
20313
20314               <span class="entry_type_visibility"> [public]</span>
20315
20316
20317
20318
20319
20320
20321             </td> <!-- entry_type -->
20322
20323             <td class="entry_description">
20324               <p>Maximum raw value output by sensor.<wbr/></p>
20325             </td>
20326
20327             <td class="entry_units">
20328             </td>
20329
20330             <td class="entry_range">
20331               <p>&gt; 255 (8-bit output)</p>
20332             </td>
20333
20334             <td class="entry_hal_version">
20335               <p>3.<wbr/>2</p>
20336             </td>
20337
20338             <td class="entry_tags">
20339               <ul class="entry_tags">
20340                   <li><a href="#tag_RAW">RAW</a></li>
20341               </ul>
20342             </td>
20343
20344           </tr>
20345           <tr class="entries_header">
20346             <th class="th_details" colspan="6">Details</th>
20347           </tr>
20348           <tr class="entry_cont">
20349             <td class="entry_details" colspan="6">
20350               <p>This specifies the fully-saturated encoding level for the raw
20351 sample values from the sensor.<wbr/>  This is typically caused by the
20352 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
20353 each channel is specified by the offset in the
20354 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
20355 <p>The white level is typically determined either by sensor bit depth
20356 (8-14 bits is expected),<wbr/> or by the point where the sensor response
20357 becomes too non-linear to be useful.<wbr/>  The default value for this is
20358 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
20359 <p>The white level values of captured images may vary for different
20360 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20361 represents a coarse approximation for such case.<wbr/> It is recommended
20362 to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
20363 by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
20364             </td>
20365           </tr>
20366
20367           <tr class="entries_header">
20368             <th class="th_details" colspan="6">HAL Implementation Details</th>
20369           </tr>
20370           <tr class="entry_cont">
20371             <td class="entry_details" colspan="6">
20372               <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
20373 so the value for linear sensors should not be significantly lower
20374 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
20375             </td>
20376           </tr>
20377
20378           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20379            <!-- end of entry -->
20380         
20381                 
20382           <tr class="entry" id="static_android.sensor.info.timestampSource">
20383             <td class="entry_name
20384              " rowspan="5">
20385               android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
20386             </td>
20387             <td class="entry_type">
20388                 <span class="entry_type_name entry_type_name_enum">byte</span>
20389
20390               <span class="entry_type_visibility"> [public]</span>
20391
20392
20393               <span class="entry_type_hwlevel">[legacy] </span>
20394
20395
20396
20397                 <ul class="entry_type_enum">
20398                   <li>
20399                     <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
20400                     <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/>
20401 but can not be compared to timestamps from other subsystems
20402 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
20403 camera devices in the same system.<wbr/> Timestamps between streams and results for
20404 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
20405 and the result metadata generated by a single capture are identical.<wbr/></p></span>
20406                   </li>
20407                   <li>
20408                     <span class="entry_type_enum_name">REALTIME (v3.2)</span>
20409                     <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
20410 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
20411 and they can be compared to other timestamps using that base.<wbr/></p></span>
20412                   </li>
20413                 </ul>
20414
20415             </td> <!-- entry_type -->
20416
20417             <td class="entry_description">
20418               <p>The time base source for sensor capture start timestamps.<wbr/></p>
20419             </td>
20420
20421             <td class="entry_units">
20422             </td>
20423
20424             <td class="entry_range">
20425             </td>
20426
20427             <td class="entry_hal_version">
20428               <p>3.<wbr/>2</p>
20429             </td>
20430
20431             <td class="entry_tags">
20432               <ul class="entry_tags">
20433                   <li><a href="#tag_V1">V1</a></li>
20434               </ul>
20435             </td>
20436
20437           </tr>
20438           <tr class="entries_header">
20439             <th class="th_details" colspan="6">Details</th>
20440           </tr>
20441           <tr class="entry_cont">
20442             <td class="entry_details" colspan="6">
20443               <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
20444 may not based on a time source that can be compared to other system time sources.<wbr/></p>
20445 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
20446 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
20447             </td>
20448           </tr>
20449
20450           <tr class="entries_header">
20451             <th class="th_details" colspan="6">HAL Implementation Details</th>
20452           </tr>
20453           <tr class="entry_cont">
20454             <td class="entry_details" colspan="6">
20455               <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
20456 source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
20457 framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
20458 system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
20459 SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
20460 recording might suffer unexpected behavior.<wbr/></p>
20461 <p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
20462 tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
20463             </td>
20464           </tr>
20465
20466           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20467            <!-- end of entry -->
20468         
20469                 
20470           <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
20471             <td class="entry_name
20472              " rowspan="3">
20473               android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
20474             </td>
20475             <td class="entry_type">
20476                 <span class="entry_type_name entry_type_name_enum">byte</span>
20477
20478               <span class="entry_type_visibility"> [public as boolean]</span>
20479
20480
20481
20482
20483
20484                 <ul class="entry_type_enum">
20485                   <li>
20486                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
20487                   </li>
20488                   <li>
20489                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
20490                   </li>
20491                 </ul>
20492
20493             </td> <!-- entry_type -->
20494
20495             <td class="entry_description">
20496               <p>Whether the RAW images output from this camera device are subject to
20497 lens shading correction.<wbr/></p>
20498             </td>
20499
20500             <td class="entry_units">
20501             </td>
20502
20503             <td class="entry_range">
20504             </td>
20505
20506             <td class="entry_hal_version">
20507               <p>3.<wbr/>2</p>
20508             </td>
20509
20510             <td class="entry_tags">
20511             </td>
20512
20513           </tr>
20514           <tr class="entries_header">
20515             <th class="th_details" colspan="6">Details</th>
20516           </tr>
20517           <tr class="entry_cont">
20518             <td class="entry_details" colspan="6">
20519               <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
20520 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
20521 not be adjusted for lens shading correction.<wbr/>
20522 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>
20523 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
20524 Devices with RAW capability will always report this information in this key.<wbr/></p>
20525             </td>
20526           </tr>
20527
20528
20529           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20530            <!-- end of entry -->
20531         
20532                 
20533           <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
20534             <td class="entry_name
20535              " rowspan="5">
20536               android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
20537             </td>
20538             <td class="entry_type">
20539                 <span class="entry_type_name">int32</span>
20540                 <span class="entry_type_container">x</span>
20541
20542                 <span class="entry_type_array">
20543                   4
20544                 </span>
20545               <span class="entry_type_visibility"> [public as rectangle]</span>
20546
20547
20548               <span class="entry_type_hwlevel">[legacy] </span>
20549
20550
20551                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
20552
20553
20554             </td> <!-- entry_type -->
20555
20556             <td class="entry_description">
20557               <p>The area of the image sensor which corresponds to active pixels prior to the
20558 application of any geometric distortion correction.<wbr/></p>
20559             </td>
20560
20561             <td class="entry_units">
20562               Pixel coordinates on the image sensor
20563             </td>
20564
20565             <td class="entry_range">
20566             </td>
20567
20568             <td class="entry_hal_version">
20569               <p>3.<wbr/>2</p>
20570             </td>
20571
20572             <td class="entry_tags">
20573               <ul class="entry_tags">
20574                   <li><a href="#tag_RAW">RAW</a></li>
20575               </ul>
20576             </td>
20577
20578           </tr>
20579           <tr class="entries_header">
20580             <th class="th_details" colspan="6">Details</th>
20581           </tr>
20582           <tr class="entry_cont">
20583             <td class="entry_details" colspan="6">
20584               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20585 the region that actually receives light from the scene) before any geometric correction
20586 has been applied,<wbr/> and should be treated as the active region rectangle for any of the
20587 raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
20588 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
20589 the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
20590 <p>The size of this region determines the maximum field of view and the maximum number of
20591 pixels that an image from this sensor can contain,<wbr/> prior to the application of
20592 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
20593 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>
20594 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
20595 can be calculated by applying the geometric distortion correction fields to this
20596 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>
20597 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
20598 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/>
20599 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
20600 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
20601 <ol>
20602 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
20603 <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
20604 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
20605 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
20606 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
20607 buffers is defined relative to the top,<wbr/> left of the
20608 <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>
20609 <li>If the resulting corrected pixel coordinate is within the region given in
20610 <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
20611 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
20612 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
20613 </ol>
20614 <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>
20615 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/>
20616 <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
20617 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
20618 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
20619 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)
20620 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
20621 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20622 <p>The currently supported fields that correct for geometric distortion are:</p>
20623 <ol>
20624 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li>
20625 </ol>
20626 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
20627 as the post-distortion-corrected rectangle given in
20628 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20629 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20630 the full pixel array,<wbr/> and the size of the full pixel array is given by
20631 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20632 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
20633 full array may include black calibration pixels or other inactive regions.<wbr/></p>
20634             </td>
20635           </tr>
20636
20637           <tr class="entries_header">
20638             <th class="th_details" colspan="6">HAL Implementation Details</th>
20639           </tr>
20640           <tr class="entry_cont">
20641             <td class="entry_details" colspan="6">
20642               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20643 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
20644 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>
20645 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
20646 the same as the post-correction active array region given in
20647 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20648             </td>
20649           </tr>
20650
20651           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20652            <!-- end of entry -->
20653         
20654         
20655         
20656
20657                 
20658           <tr class="entry" id="static_android.sensor.referenceIlluminant1">
20659             <td class="entry_name
20660              " rowspan="5">
20661               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
20662             </td>
20663             <td class="entry_type">
20664                 <span class="entry_type_name entry_type_name_enum">byte</span>
20665
20666               <span class="entry_type_visibility"> [public]</span>
20667
20668
20669
20670
20671
20672                 <ul class="entry_type_enum">
20673                   <li>
20674                     <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
20675                     <span class="entry_type_enum_value">1</span>
20676                   </li>
20677                   <li>
20678                     <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
20679                     <span class="entry_type_enum_value">2</span>
20680                   </li>
20681                   <li>
20682                     <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span>
20683                     <span class="entry_type_enum_value">3</span>
20684                     <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
20685                   </li>
20686                   <li>
20687                     <span class="entry_type_enum_name">FLASH (v3.2)</span>
20688                     <span class="entry_type_enum_value">4</span>
20689                   </li>
20690                   <li>
20691                     <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span>
20692                     <span class="entry_type_enum_value">9</span>
20693                   </li>
20694                   <li>
20695                     <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span>
20696                     <span class="entry_type_enum_value">10</span>
20697                   </li>
20698                   <li>
20699                     <span class="entry_type_enum_name">SHADE (v3.2)</span>
20700                     <span class="entry_type_enum_value">11</span>
20701                   </li>
20702                   <li>
20703                     <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span>
20704                     <span class="entry_type_enum_value">12</span>
20705                     <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
20706                   </li>
20707                   <li>
20708                     <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span>
20709                     <span class="entry_type_enum_value">13</span>
20710                     <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
20711                   </li>
20712                   <li>
20713                     <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span>
20714                     <span class="entry_type_enum_value">14</span>
20715                     <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
20716                   </li>
20717                   <li>
20718                     <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span>
20719                     <span class="entry_type_enum_value">15</span>
20720                     <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
20721                   </li>
20722                   <li>
20723                     <span class="entry_type_enum_name">STANDARD_A (v3.2)</span>
20724                     <span class="entry_type_enum_value">17</span>
20725                   </li>
20726                   <li>
20727                     <span class="entry_type_enum_name">STANDARD_B (v3.2)</span>
20728                     <span class="entry_type_enum_value">18</span>
20729                   </li>
20730                   <li>
20731                     <span class="entry_type_enum_name">STANDARD_C (v3.2)</span>
20732                     <span class="entry_type_enum_value">19</span>
20733                   </li>
20734                   <li>
20735                     <span class="entry_type_enum_name">D55 (v3.2)</span>
20736                     <span class="entry_type_enum_value">20</span>
20737                   </li>
20738                   <li>
20739                     <span class="entry_type_enum_name">D65 (v3.2)</span>
20740                     <span class="entry_type_enum_value">21</span>
20741                   </li>
20742                   <li>
20743                     <span class="entry_type_enum_name">D75 (v3.2)</span>
20744                     <span class="entry_type_enum_value">22</span>
20745                   </li>
20746                   <li>
20747                     <span class="entry_type_enum_name">D50 (v3.2)</span>
20748                     <span class="entry_type_enum_value">23</span>
20749                   </li>
20750                   <li>
20751                     <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span>
20752                     <span class="entry_type_enum_value">24</span>
20753                   </li>
20754                 </ul>
20755
20756             </td> <!-- entry_type -->
20757
20758             <td class="entry_description">
20759               <p>The standard reference illuminant used as the scene light source when
20760 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
20761 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
20762 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
20763             </td>
20764
20765             <td class="entry_units">
20766             </td>
20767
20768             <td class="entry_range">
20769             </td>
20770
20771             <td class="entry_hal_version">
20772               <p>3.<wbr/>2</p>
20773             </td>
20774
20775             <td class="entry_tags">
20776               <ul class="entry_tags">
20777                   <li><a href="#tag_RAW">RAW</a></li>
20778               </ul>
20779             </td>
20780
20781           </tr>
20782           <tr class="entries_header">
20783             <th class="th_details" colspan="6">Details</th>
20784           </tr>
20785           <tr class="entry_cont">
20786             <td class="entry_details" colspan="6">
20787               <p>The values in this key correspond to the values defined for the
20788 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
20789 that are often used calibrating camera devices.<wbr/></p>
20790 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
20791 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
20792 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
20793 <p>Some devices may choose to provide a second set of calibration
20794 information for improved quality,<wbr/> including
20795 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
20796             </td>
20797           </tr>
20798
20799           <tr class="entries_header">
20800             <th class="th_details" colspan="6">HAL Implementation Details</th>
20801           </tr>
20802           <tr class="entry_cont">
20803             <td class="entry_details" colspan="6">
20804               <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
20805 and corresponding matrices must be present to support the RAW capability
20806 and DNG output.<wbr/></p>
20807 <p>When producing raw images with a color profile that has only been
20808 calibrated against a single light source,<wbr/> it is valid to omit
20809 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
20810 <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/>
20811 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
20812 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
20813 chosen so that it is representative of typical scene lighting.<wbr/>  In
20814 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
20815 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
20816 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
20817 chosen to represent the typical range of scene lighting conditions.<wbr/>
20818 In general,<wbr/> low color temperature illuminant such as Standard-A will
20819 be chosen for the first reference illuminant and a higher color
20820 temperature illuminant such as D65 will be chosen for the second
20821 reference illuminant.<wbr/></p>
20822             </td>
20823           </tr>
20824
20825           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20826            <!-- end of entry -->
20827         
20828                 
20829           <tr class="entry" id="static_android.sensor.referenceIlluminant2">
20830             <td class="entry_name
20831              " rowspan="3">
20832               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
20833             </td>
20834             <td class="entry_type">
20835                 <span class="entry_type_name">byte</span>
20836
20837               <span class="entry_type_visibility"> [public]</span>
20838
20839
20840
20841
20842
20843
20844             </td> <!-- entry_type -->
20845
20846             <td class="entry_description">
20847               <p>The standard reference illuminant used as the scene light source when
20848 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
20849 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
20850 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
20851             </td>
20852
20853             <td class="entry_units">
20854             </td>
20855
20856             <td class="entry_range">
20857               <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
20858             </td>
20859
20860             <td class="entry_hal_version">
20861               <p>3.<wbr/>2</p>
20862             </td>
20863
20864             <td class="entry_tags">
20865               <ul class="entry_tags">
20866                   <li><a href="#tag_RAW">RAW</a></li>
20867               </ul>
20868             </td>
20869
20870           </tr>
20871           <tr class="entries_header">
20872             <th class="th_details" colspan="6">Details</th>
20873           </tr>
20874           <tr class="entry_cont">
20875             <td class="entry_details" colspan="6">
20876               <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
20877 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
20878 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
20879 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
20880             </td>
20881           </tr>
20882
20883
20884           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20885            <!-- end of entry -->
20886         
20887                 
20888           <tr class="entry" id="static_android.sensor.calibrationTransform1">
20889             <td class="entry_name
20890              " rowspan="3">
20891               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
20892             </td>
20893             <td class="entry_type">
20894                 <span class="entry_type_name">rational</span>
20895                 <span class="entry_type_container">x</span>
20896
20897                 <span class="entry_type_array">
20898                   3 x 3
20899                 </span>
20900               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20901
20902
20903
20904
20905                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20906
20907
20908             </td> <!-- entry_type -->
20909
20910             <td class="entry_description">
20911               <p>A per-device calibration transform matrix that maps from the
20912 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
20913             </td>
20914
20915             <td class="entry_units">
20916             </td>
20917
20918             <td class="entry_range">
20919             </td>
20920
20921             <td class="entry_hal_version">
20922               <p>3.<wbr/>2</p>
20923             </td>
20924
20925             <td class="entry_tags">
20926               <ul class="entry_tags">
20927                   <li><a href="#tag_RAW">RAW</a></li>
20928               </ul>
20929             </td>
20930
20931           </tr>
20932           <tr class="entries_header">
20933             <th class="th_details" colspan="6">Details</th>
20934           </tr>
20935           <tr class="entry_cont">
20936             <td class="entry_details" colspan="6">
20937               <p>This matrix is used to correct for per-device variations in the
20938 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
20939 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
20940 contains a per-device calibration transform that maps colors
20941 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
20942 colorspace) into this camera device's native sensor color
20943 space under the first reference illuminant
20944 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
20945             </td>
20946           </tr>
20947
20948
20949           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20950            <!-- end of entry -->
20951         
20952                 
20953           <tr class="entry" id="static_android.sensor.calibrationTransform2">
20954             <td class="entry_name
20955              " rowspan="3">
20956               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
20957             </td>
20958             <td class="entry_type">
20959                 <span class="entry_type_name">rational</span>
20960                 <span class="entry_type_container">x</span>
20961
20962                 <span class="entry_type_array">
20963                   3 x 3
20964                 </span>
20965               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20966
20967
20968
20969
20970                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20971
20972
20973             </td> <!-- entry_type -->
20974
20975             <td class="entry_description">
20976               <p>A per-device calibration transform matrix that maps from the
20977 reference sensor colorspace to the actual device sensor colorspace
20978 (this is the colorspace of the raw buffer data).<wbr/></p>
20979             </td>
20980
20981             <td class="entry_units">
20982             </td>
20983
20984             <td class="entry_range">
20985             </td>
20986
20987             <td class="entry_hal_version">
20988               <p>3.<wbr/>2</p>
20989             </td>
20990
20991             <td class="entry_tags">
20992               <ul class="entry_tags">
20993                   <li><a href="#tag_RAW">RAW</a></li>
20994               </ul>
20995             </td>
20996
20997           </tr>
20998           <tr class="entries_header">
20999             <th class="th_details" colspan="6">Details</th>
21000           </tr>
21001           <tr class="entry_cont">
21002             <td class="entry_details" colspan="6">
21003               <p>This matrix is used to correct for per-device variations in the
21004 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21005 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21006 contains a per-device calibration transform that maps colors
21007 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21008 colorspace) into this camera device's native sensor color
21009 space under the second reference illuminant
21010 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21011 <p>This matrix will only be present if the second reference
21012 illuminant is present.<wbr/></p>
21013             </td>
21014           </tr>
21015
21016
21017           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21018            <!-- end of entry -->
21019         
21020                 
21021           <tr class="entry" id="static_android.sensor.colorTransform1">
21022             <td class="entry_name
21023              " rowspan="3">
21024               android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
21025             </td>
21026             <td class="entry_type">
21027                 <span class="entry_type_name">rational</span>
21028                 <span class="entry_type_container">x</span>
21029
21030                 <span class="entry_type_array">
21031                   3 x 3
21032                 </span>
21033               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21034
21035
21036
21037
21038                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21039
21040
21041             </td> <!-- entry_type -->
21042
21043             <td class="entry_description">
21044               <p>A matrix that transforms color values from CIE XYZ color space to
21045 reference sensor color space.<wbr/></p>
21046             </td>
21047
21048             <td class="entry_units">
21049             </td>
21050
21051             <td class="entry_range">
21052             </td>
21053
21054             <td class="entry_hal_version">
21055               <p>3.<wbr/>2</p>
21056             </td>
21057
21058             <td class="entry_tags">
21059               <ul class="entry_tags">
21060                   <li><a href="#tag_RAW">RAW</a></li>
21061               </ul>
21062             </td>
21063
21064           </tr>
21065           <tr class="entries_header">
21066             <th class="th_details" colspan="6">Details</th>
21067           </tr>
21068           <tr class="entry_cont">
21069             <td class="entry_details" colspan="6">
21070               <p>This matrix is used to convert from the standard CIE XYZ color
21071 space to the reference sensor colorspace,<wbr/> and is used when processing
21072 raw buffer data.<wbr/></p>
21073 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21074 contains a color transform matrix that maps colors from the CIE
21075 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21076 "golden module" colorspace) under the first reference illuminant
21077 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21078 <p>The white points chosen in both the reference sensor color space
21079 and the CIE XYZ colorspace when calculating this transform will
21080 match the standard white point for the first reference illuminant
21081 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21082             </td>
21083           </tr>
21084
21085
21086           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21087            <!-- end of entry -->
21088         
21089                 
21090           <tr class="entry" id="static_android.sensor.colorTransform2">
21091             <td class="entry_name
21092              " rowspan="3">
21093               android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
21094             </td>
21095             <td class="entry_type">
21096                 <span class="entry_type_name">rational</span>
21097                 <span class="entry_type_container">x</span>
21098
21099                 <span class="entry_type_array">
21100                   3 x 3
21101                 </span>
21102               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21103
21104
21105
21106
21107                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21108
21109
21110             </td> <!-- entry_type -->
21111
21112             <td class="entry_description">
21113               <p>A matrix that transforms color values from CIE XYZ color space to
21114 reference sensor color space.<wbr/></p>
21115             </td>
21116
21117             <td class="entry_units">
21118             </td>
21119
21120             <td class="entry_range">
21121             </td>
21122
21123             <td class="entry_hal_version">
21124               <p>3.<wbr/>2</p>
21125             </td>
21126
21127             <td class="entry_tags">
21128               <ul class="entry_tags">
21129                   <li><a href="#tag_RAW">RAW</a></li>
21130               </ul>
21131             </td>
21132
21133           </tr>
21134           <tr class="entries_header">
21135             <th class="th_details" colspan="6">Details</th>
21136           </tr>
21137           <tr class="entry_cont">
21138             <td class="entry_details" colspan="6">
21139               <p>This matrix is used to convert from the standard CIE XYZ color
21140 space to the reference sensor colorspace,<wbr/> and is used when processing
21141 raw buffer data.<wbr/></p>
21142 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21143 contains a color transform matrix that maps colors from the CIE
21144 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21145 "golden module" colorspace) under the second reference illuminant
21146 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21147 <p>The white points chosen in both the reference sensor color space
21148 and the CIE XYZ colorspace when calculating this transform will
21149 match the standard white point for the second reference illuminant
21150 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21151 <p>This matrix will only be present if the second reference
21152 illuminant is present.<wbr/></p>
21153             </td>
21154           </tr>
21155
21156
21157           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21158            <!-- end of entry -->
21159         
21160                 
21161           <tr class="entry" id="static_android.sensor.forwardMatrix1">
21162             <td class="entry_name
21163              " rowspan="3">
21164               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
21165             </td>
21166             <td class="entry_type">
21167                 <span class="entry_type_name">rational</span>
21168                 <span class="entry_type_container">x</span>
21169
21170                 <span class="entry_type_array">
21171                   3 x 3
21172                 </span>
21173               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21174
21175
21176
21177
21178                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21179
21180
21181             </td> <!-- entry_type -->
21182
21183             <td class="entry_description">
21184               <p>A matrix that transforms white balanced camera colors from the reference
21185 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21186             </td>
21187
21188             <td class="entry_units">
21189             </td>
21190
21191             <td class="entry_range">
21192             </td>
21193
21194             <td class="entry_hal_version">
21195               <p>3.<wbr/>2</p>
21196             </td>
21197
21198             <td class="entry_tags">
21199               <ul class="entry_tags">
21200                   <li><a href="#tag_RAW">RAW</a></li>
21201               </ul>
21202             </td>
21203
21204           </tr>
21205           <tr class="entries_header">
21206             <th class="th_details" colspan="6">Details</th>
21207           </tr>
21208           <tr class="entry_cont">
21209             <td class="entry_details" colspan="6">
21210               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21211 is used when processing raw buffer data.<wbr/></p>
21212 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21213 a color transform matrix that maps white balanced colors from the
21214 reference sensor color space to the CIE XYZ color space with a D50 white
21215 point.<wbr/></p>
21216 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21217 this matrix is chosen so that the standard white point for this reference
21218 illuminant in the reference sensor colorspace is mapped to D50 in the
21219 CIE XYZ colorspace.<wbr/></p>
21220             </td>
21221           </tr>
21222
21223
21224           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21225            <!-- end of entry -->
21226         
21227                 
21228           <tr class="entry" id="static_android.sensor.forwardMatrix2">
21229             <td class="entry_name
21230              " rowspan="3">
21231               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
21232             </td>
21233             <td class="entry_type">
21234                 <span class="entry_type_name">rational</span>
21235                 <span class="entry_type_container">x</span>
21236
21237                 <span class="entry_type_array">
21238                   3 x 3
21239                 </span>
21240               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21241
21242
21243
21244
21245                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21246
21247
21248             </td> <!-- entry_type -->
21249
21250             <td class="entry_description">
21251               <p>A matrix that transforms white balanced camera colors from the reference
21252 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21253             </td>
21254
21255             <td class="entry_units">
21256             </td>
21257
21258             <td class="entry_range">
21259             </td>
21260
21261             <td class="entry_hal_version">
21262               <p>3.<wbr/>2</p>
21263             </td>
21264
21265             <td class="entry_tags">
21266               <ul class="entry_tags">
21267                   <li><a href="#tag_RAW">RAW</a></li>
21268               </ul>
21269             </td>
21270
21271           </tr>
21272           <tr class="entries_header">
21273             <th class="th_details" colspan="6">Details</th>
21274           </tr>
21275           <tr class="entry_cont">
21276             <td class="entry_details" colspan="6">
21277               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21278 is used when processing raw buffer data.<wbr/></p>
21279 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21280 a color transform matrix that maps white balanced colors from the
21281 reference sensor color space to the CIE XYZ color space with a D50 white
21282 point.<wbr/></p>
21283 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
21284 this matrix is chosen so that the standard white point for this reference
21285 illuminant in the reference sensor colorspace is mapped to D50 in the
21286 CIE XYZ colorspace.<wbr/></p>
21287 <p>This matrix will only be present if the second reference
21288 illuminant is present.<wbr/></p>
21289             </td>
21290           </tr>
21291
21292
21293           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21294            <!-- end of entry -->
21295         
21296                 
21297           <tr class="entry" id="static_android.sensor.baseGainFactor">
21298             <td class="entry_name
21299              " rowspan="1">
21300               android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
21301             </td>
21302             <td class="entry_type">
21303                 <span class="entry_type_name">rational</span>
21304
21305               <span class="entry_type_visibility"> [system]</span>
21306
21307
21308
21309
21310
21311
21312             </td> <!-- entry_type -->
21313
21314             <td class="entry_description">
21315               <p>Gain factor from electrons to raw units when
21316 ISO=100</p>
21317             </td>
21318
21319             <td class="entry_units">
21320             </td>
21321
21322             <td class="entry_range">
21323             </td>
21324
21325             <td class="entry_hal_version">
21326               <p>3.<wbr/>2</p>
21327             </td>
21328
21329             <td class="entry_tags">
21330               <ul class="entry_tags">
21331                   <li><a href="#tag_FUTURE">FUTURE</a></li>
21332               </ul>
21333             </td>
21334
21335           </tr>
21336
21337
21338           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21339            <!-- end of entry -->
21340         
21341                 
21342           <tr class="entry" id="static_android.sensor.blackLevelPattern">
21343             <td class="entry_name
21344              " rowspan="5">
21345               android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
21346             </td>
21347             <td class="entry_type">
21348                 <span class="entry_type_name">int32</span>
21349                 <span class="entry_type_container">x</span>
21350
21351                 <span class="entry_type_array">
21352                   4
21353                 </span>
21354               <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
21355
21356
21357
21358
21359                 <div class="entry_type_notes">2x2 raw count block</div>
21360
21361
21362             </td> <!-- entry_type -->
21363
21364             <td class="entry_description">
21365               <p>A fixed black level offset for each of the color filter arrangement
21366 (CFA) mosaic channels.<wbr/></p>
21367             </td>
21368
21369             <td class="entry_units">
21370             </td>
21371
21372             <td class="entry_range">
21373               <p>&gt;= 0 for each.<wbr/></p>
21374             </td>
21375
21376             <td class="entry_hal_version">
21377               <p>3.<wbr/>2</p>
21378             </td>
21379
21380             <td class="entry_tags">
21381               <ul class="entry_tags">
21382                   <li><a href="#tag_RAW">RAW</a></li>
21383               </ul>
21384             </td>
21385
21386           </tr>
21387           <tr class="entries_header">
21388             <th class="th_details" colspan="6">Details</th>
21389           </tr>
21390           <tr class="entry_cont">
21391             <td class="entry_details" colspan="6">
21392               <p>This key specifies the zero light value for each of the CFA mosaic
21393 channels in the camera sensor.<wbr/>  The maximal value output by the
21394 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>
21395 <p>The values are given in the same order as channels listed for the CFA
21396 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
21397 nth value given corresponds to the black level offset for the nth
21398 color channel listed in the CFA.<wbr/></p>
21399 <p>The black level values of captured images may vary for different
21400 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
21401 represents a coarse approximation for such case.<wbr/> It is recommended to
21402 use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
21403 <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
21404 supported by the camera device,<wbr/> which provides more accurate black
21405 level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
21406 pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
21407 level values for each frame.<wbr/></p>
21408             </td>
21409           </tr>
21410
21411           <tr class="entries_header">
21412             <th class="th_details" colspan="6">HAL Implementation Details</th>
21413           </tr>
21414           <tr class="entry_cont">
21415             <td class="entry_details" colspan="6">
21416               <p>The values are given in row-column scan order,<wbr/> with the first value
21417 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21418             </td>
21419           </tr>
21420
21421           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21422            <!-- end of entry -->
21423         
21424                 
21425           <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
21426             <td class="entry_name
21427              " rowspan="3">
21428               android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
21429             </td>
21430             <td class="entry_type">
21431                 <span class="entry_type_name">int32</span>
21432
21433               <span class="entry_type_visibility"> [public]</span>
21434
21435
21436               <span class="entry_type_hwlevel">[full] </span>
21437
21438
21439
21440
21441             </td> <!-- entry_type -->
21442
21443             <td class="entry_description">
21444               <p>Maximum sensitivity that is implemented
21445 purely through analog gain.<wbr/></p>
21446             </td>
21447
21448             <td class="entry_units">
21449             </td>
21450
21451             <td class="entry_range">
21452             </td>
21453
21454             <td class="entry_hal_version">
21455               <p>3.<wbr/>2</p>
21456             </td>
21457
21458             <td class="entry_tags">
21459               <ul class="entry_tags">
21460                   <li><a href="#tag_V1">V1</a></li>
21461                   <li><a href="#tag_FULL">FULL</a></li>
21462               </ul>
21463             </td>
21464
21465           </tr>
21466           <tr class="entries_header">
21467             <th class="th_details" colspan="6">Details</th>
21468           </tr>
21469           <tr class="entry_cont">
21470             <td class="entry_details" colspan="6">
21471               <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
21472 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
21473 values above this,<wbr/> the gain applied can be a mix of analog and
21474 digital.<wbr/></p>
21475             </td>
21476           </tr>
21477
21478
21479           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21480            <!-- end of entry -->
21481         
21482                 
21483           <tr class="entry" id="static_android.sensor.orientation">
21484             <td class="entry_name
21485              " rowspan="3">
21486               android.<wbr/>sensor.<wbr/>orientation
21487             </td>
21488             <td class="entry_type">
21489                 <span class="entry_type_name">int32</span>
21490
21491               <span class="entry_type_visibility"> [public]</span>
21492
21493
21494               <span class="entry_type_hwlevel">[legacy] </span>
21495
21496
21497
21498
21499             </td> <!-- entry_type -->
21500
21501             <td class="entry_description">
21502               <p>Clockwise angle through which the output image needs to be rotated to be
21503 upright on the device screen in its native orientation.<wbr/></p>
21504             </td>
21505
21506             <td class="entry_units">
21507               Degrees of clockwise rotation; always a multiple of
21508           90
21509             </td>
21510
21511             <td class="entry_range">
21512               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
21513             </td>
21514
21515             <td class="entry_hal_version">
21516               <p>3.<wbr/>2</p>
21517             </td>
21518
21519             <td class="entry_tags">
21520               <ul class="entry_tags">
21521                   <li><a href="#tag_BC">BC</a></li>
21522               </ul>
21523             </td>
21524
21525           </tr>
21526           <tr class="entries_header">
21527             <th class="th_details" colspan="6">Details</th>
21528           </tr>
21529           <tr class="entry_cont">
21530             <td class="entry_details" colspan="6">
21531               <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
21532 the sensor's coordinate system.<wbr/></p>
21533             </td>
21534           </tr>
21535
21536
21537           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21538            <!-- end of entry -->
21539         
21540                 
21541           <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
21542             <td class="entry_name
21543              " rowspan="3">
21544               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
21545             </td>
21546             <td class="entry_type">
21547                 <span class="entry_type_name">int32</span>
21548                 <span class="entry_type_container">x</span>
21549
21550                 <span class="entry_type_array">
21551                   3
21552                 </span>
21553               <span class="entry_type_visibility"> [system]</span>
21554
21555
21556
21557
21558                 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
21559
21560
21561             </td> <!-- entry_type -->
21562
21563             <td class="entry_description">
21564               <p>The number of input samples for each dimension of
21565 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
21566             </td>
21567
21568             <td class="entry_units">
21569             </td>
21570
21571             <td class="entry_range">
21572               <p>Hue &gt;= 1,<wbr/>
21573 Saturation &gt;= 2,<wbr/>
21574 Value &gt;= 1</p>
21575             </td>
21576
21577             <td class="entry_hal_version">
21578               <p>3.<wbr/>2</p>
21579             </td>
21580
21581             <td class="entry_tags">
21582               <ul class="entry_tags">
21583                   <li><a href="#tag_RAW">RAW</a></li>
21584               </ul>
21585             </td>
21586
21587           </tr>
21588           <tr class="entries_header">
21589             <th class="th_details" colspan="6">Details</th>
21590           </tr>
21591           <tr class="entry_cont">
21592             <td class="entry_details" colspan="6">
21593               <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
21594 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
21595 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
21596 element.<wbr/></p>
21597             </td>
21598           </tr>
21599
21600
21601           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21602            <!-- end of entry -->
21603         
21604                 
21605           <tr class="entry" id="static_android.sensor.availableTestPatternModes">
21606             <td class="entry_name
21607              " rowspan="5">
21608               android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
21609             </td>
21610             <td class="entry_type">
21611                 <span class="entry_type_name">int32</span>
21612                 <span class="entry_type_container">x</span>
21613
21614                 <span class="entry_type_array">
21615                   n
21616                 </span>
21617               <span class="entry_type_visibility"> [public]</span>
21618
21619
21620
21621
21622                 <div class="entry_type_notes">list of enums</div>
21623
21624
21625             </td> <!-- entry_type -->
21626
21627             <td class="entry_description">
21628               <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
21629 supported by this camera device.<wbr/></p>
21630             </td>
21631
21632             <td class="entry_units">
21633             </td>
21634
21635             <td class="entry_range">
21636               <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
21637             </td>
21638
21639             <td class="entry_hal_version">
21640               <p>3.<wbr/>2</p>
21641             </td>
21642
21643             <td class="entry_tags">
21644             </td>
21645
21646           </tr>
21647           <tr class="entries_header">
21648             <th class="th_details" colspan="6">Details</th>
21649           </tr>
21650           <tr class="entry_cont">
21651             <td class="entry_details" colspan="6">
21652               <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
21653             </td>
21654           </tr>
21655
21656           <tr class="entries_header">
21657             <th class="th_details" colspan="6">HAL Implementation Details</th>
21658           </tr>
21659           <tr class="entry_cont">
21660             <td class="entry_details" colspan="6">
21661               <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
21662             </td>
21663           </tr>
21664
21665           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21666            <!-- end of entry -->
21667         
21668                 
21669           <tr class="entry" id="static_android.sensor.opticalBlackRegions">
21670             <td class="entry_name
21671              " rowspan="5">
21672               android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
21673             </td>
21674             <td class="entry_type">
21675                 <span class="entry_type_name">int32</span>
21676                 <span class="entry_type_container">x</span>
21677
21678                 <span class="entry_type_array">
21679                   4 x num_regions
21680                 </span>
21681               <span class="entry_type_visibility"> [public as rectangle]</span>
21682
21683
21684
21685
21686
21687
21688             </td> <!-- entry_type -->
21689
21690             <td class="entry_description">
21691               <p>List of disjoint rectangles indicating the sensor
21692 optically shielded black pixel regions.<wbr/></p>
21693             </td>
21694
21695             <td class="entry_units">
21696             </td>
21697
21698             <td class="entry_range">
21699             </td>
21700
21701             <td class="entry_hal_version">
21702               <p>3.<wbr/>2</p>
21703             </td>
21704
21705             <td class="entry_tags">
21706             </td>
21707
21708           </tr>
21709           <tr class="entries_header">
21710             <th class="th_details" colspan="6">Details</th>
21711           </tr>
21712           <tr class="entry_cont">
21713             <td class="entry_details" colspan="6">
21714               <p>In most camera sensors,<wbr/> the active array is surrounded by some
21715 optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
21716 provides a reliable black reference for black level compensation
21717 in active array region.<wbr/></p>
21718 <p>This key provides a list of disjoint rectangles specifying the
21719 regions of optically shielded (with metal shield) black pixel
21720 regions if the camera device is capable of reading out these black
21721 pixels in the output raw images.<wbr/> In comparison to the fixed black
21722 level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
21723 may provide a more accurate way for the application to calculate
21724 black level of each captured raw images.<wbr/></p>
21725 <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
21726 <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
21727             </td>
21728           </tr>
21729
21730           <tr class="entries_header">
21731             <th class="th_details" colspan="6">HAL Implementation Details</th>
21732           </tr>
21733           <tr class="entry_cont">
21734             <td class="entry_details" colspan="6">
21735               <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
21736 must be &gt;= (0,<wbr/>0) and &lt;=
21737 <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
21738 &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
21739 outside the region reported by
21740 <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>
21741 <p>The HAL must report minimal number of disjoint regions for the
21742 optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
21743 be covered by one rectangle,<wbr/> the HAL must not split this region into
21744 multiple rectangles.<wbr/></p>
21745             </td>
21746           </tr>
21747
21748           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21749            <!-- end of entry -->
21750         
21751                 
21752           <tr class="entry" id="static_android.sensor.opaqueRawSize">
21753             <td class="entry_name
21754              " rowspan="5">
21755               android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
21756             </td>
21757             <td class="entry_type">
21758                 <span class="entry_type_name">int32</span>
21759                 <span class="entry_type_container">x</span>
21760
21761                 <span class="entry_type_array">
21762                   n x 3
21763                 </span>
21764               <span class="entry_type_visibility"> [system]</span>
21765
21766
21767
21768
21769
21770
21771             </td> <!-- entry_type -->
21772
21773             <td class="entry_description">
21774               <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
21775             </td>
21776
21777             <td class="entry_units">
21778             </td>
21779
21780             <td class="entry_range">
21781               <p>Must be large enough to fit the opaque RAW of corresponding size produced by
21782 the camera</p>
21783             </td>
21784
21785             <td class="entry_hal_version">
21786               <p>3.<wbr/>2</p>
21787             </td>
21788
21789             <td class="entry_tags">
21790             </td>
21791
21792           </tr>
21793           <tr class="entries_header">
21794             <th class="th_details" colspan="6">Details</th>
21795           </tr>
21796           <tr class="entry_cont">
21797             <td class="entry_details" colspan="6">
21798               <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
21799 This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
21800 All RAW_<wbr/>OPAQUE output stream configuration listed in
21801 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
21802 this key.<wbr/></p>
21803             </td>
21804           </tr>
21805
21806           <tr class="entries_header">
21807             <th class="th_details" colspan="6">HAL Implementation Details</th>
21808           </tr>
21809           <tr class="entry_cont">
21810             <td class="entry_details" colspan="6">
21811               <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
21812 <p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
21813 key.<wbr/>  For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
21814 framework will derive this key by assuming each pixel takes two bytes and no padding bytes
21815 between rows.<wbr/></p>
21816             </td>
21817           </tr>
21818
21819           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21820            <!-- end of entry -->
21821         
21822         
21823
21824       <!-- end of kind -->
21825       </tbody>
21826       <tr><td colspan="7" class="kind">dynamic</td></tr>
21827
21828       <thead class="entries_header">
21829         <tr>
21830           <th class="th_name">Property Name</th>
21831           <th class="th_type">Type</th>
21832           <th class="th_description">Description</th>
21833           <th class="th_units">Units</th>
21834           <th class="th_range">Range</th>
21835           <th class="th_hal_version">Initial HIDL HAL version</th>
21836           <th class="th_tags">Tags</th>
21837         </tr>
21838       </thead>
21839
21840       <tbody>
21841
21842         
21843
21844         
21845
21846         
21847
21848         
21849
21850                 
21851           <tr class="entry" id="dynamic_android.sensor.exposureTime">
21852             <td class="entry_name
21853              " rowspan="3">
21854               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
21855             </td>
21856             <td class="entry_type">
21857                 <span class="entry_type_name">int64</span>
21858
21859               <span class="entry_type_visibility"> [public]</span>
21860
21861
21862               <span class="entry_type_hwlevel">[full] </span>
21863
21864
21865
21866
21867             </td> <!-- entry_type -->
21868
21869             <td class="entry_description">
21870               <p>Duration each pixel is exposed to
21871 light.<wbr/></p>
21872             </td>
21873
21874             <td class="entry_units">
21875               Nanoseconds
21876             </td>
21877
21878             <td class="entry_range">
21879               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
21880             </td>
21881
21882             <td class="entry_hal_version">
21883               <p>3.<wbr/>2</p>
21884             </td>
21885
21886             <td class="entry_tags">
21887               <ul class="entry_tags">
21888                   <li><a href="#tag_V1">V1</a></li>
21889               </ul>
21890             </td>
21891
21892           </tr>
21893           <tr class="entries_header">
21894             <th class="th_details" colspan="6">Details</th>
21895           </tr>
21896           <tr class="entry_cont">
21897             <td class="entry_details" colspan="6">
21898               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
21899 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
21900 The final exposure time used will be available in the output capture result.<wbr/></p>
21901 <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
21902 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
21903             </td>
21904           </tr>
21905
21906
21907           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21908            <!-- end of entry -->
21909         
21910                 
21911           <tr class="entry" id="dynamic_android.sensor.frameDuration">
21912             <td class="entry_name
21913              " rowspan="5">
21914               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
21915             </td>
21916             <td class="entry_type">
21917                 <span class="entry_type_name">int64</span>
21918
21919               <span class="entry_type_visibility"> [public]</span>
21920
21921
21922               <span class="entry_type_hwlevel">[full] </span>
21923
21924
21925
21926
21927             </td> <!-- entry_type -->
21928
21929             <td class="entry_description">
21930               <p>Duration from start of frame exposure to
21931 start of next frame exposure.<wbr/></p>
21932             </td>
21933
21934             <td class="entry_units">
21935               Nanoseconds
21936             </td>
21937
21938             <td class="entry_range">
21939               <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/>
21940 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
21941             </td>
21942
21943             <td class="entry_hal_version">
21944               <p>3.<wbr/>2</p>
21945             </td>
21946
21947             <td class="entry_tags">
21948               <ul class="entry_tags">
21949                   <li><a href="#tag_V1">V1</a></li>
21950               </ul>
21951             </td>
21952
21953           </tr>
21954           <tr class="entries_header">
21955             <th class="th_details" colspan="6">Details</th>
21956           </tr>
21957           <tr class="entry_cont">
21958             <td class="entry_details" colspan="6">
21959               <p>The maximum frame rate that can be supported by a camera subsystem is
21960 a function of many factors:</p>
21961 <ul>
21962 <li>Requested resolutions of output image streams</li>
21963 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
21964 <li>The bandwidth of the imager interface</li>
21965 <li>The bandwidth of the various ISP processing blocks</li>
21966 </ul>
21967 <p>Since these factors can vary greatly between different ISPs and
21968 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
21969 restrictions with as simple a model as possible.<wbr/></p>
21970 <p>The model presented has the following characteristics:</p>
21971 <ul>
21972 <li>The image sensor is always configured to output the smallest
21973 resolution possible given the application's requested output stream
21974 sizes.<wbr/>  The smallest resolution is defined as being at least as large
21975 as the largest requested output stream size; the camera pipeline must
21976 never digitally upsample sensor data when the crop region covers the
21977 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
21978 resolutions are configured,<wbr/> the sensor can provide a higher frame
21979 rate.<wbr/></li>
21980 <li>Since any request may use any or all the currently configured
21981 output streams,<wbr/> the sensor and ISP must be configured to support
21982 scaling a single capture to all the streams at the same time.<wbr/>  This
21983 means the camera pipeline must be ready to produce the largest
21984 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
21985 frame rate of a given configured stream set is governed only by the
21986 largest requested stream resolution.<wbr/></li>
21987 <li>Using more than one output stream in a request does not affect the
21988 frame duration.<wbr/></li>
21989 <li>Certain format-streams may need to do additional background processing
21990 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
21991 can run concurrently to the rest of the camera pipeline,<wbr/> but
21992 cannot process more than 1 capture at a time.<wbr/></li>
21993 </ul>
21994 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
21995 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
21996 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
21997 possible for a given stream configuration.<wbr/></p>
21998 <p>Specifically,<wbr/> the application can use the following rules to
21999 determine the minimum frame duration it can request from the camera
22000 device:</p>
22001 <ol>
22002 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
22003 <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>
22004 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
22005 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
22006 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>
22007 </ol>
22008 <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>
22009 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
22010 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
22011 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
22012 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
22013 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
22014 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
22015 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
22016 <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>
22017 <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
22018 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22019             </td>
22020           </tr>
22021
22022           <tr class="entries_header">
22023             <th class="th_details" colspan="6">HAL Implementation Details</th>
22024           </tr>
22025           <tr class="entry_cont">
22026             <td class="entry_details" colspan="6">
22027               <p>For more details about stalling,<wbr/> see
22028 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
22029             </td>
22030           </tr>
22031
22032           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22033            <!-- end of entry -->
22034         
22035                 
22036           <tr class="entry" id="dynamic_android.sensor.sensitivity">
22037             <td class="entry_name
22038              " rowspan="5">
22039               android.<wbr/>sensor.<wbr/>sensitivity
22040             </td>
22041             <td class="entry_type">
22042                 <span class="entry_type_name">int32</span>
22043
22044               <span class="entry_type_visibility"> [public]</span>
22045
22046
22047               <span class="entry_type_hwlevel">[full] </span>
22048
22049
22050
22051
22052             </td> <!-- entry_type -->
22053
22054             <td class="entry_description">
22055               <p>The amount of gain applied to sensor data
22056 before processing.<wbr/></p>
22057             </td>
22058
22059             <td class="entry_units">
22060               ISO arithmetic units
22061             </td>
22062
22063             <td class="entry_range">
22064               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
22065             </td>
22066
22067             <td class="entry_hal_version">
22068               <p>3.<wbr/>2</p>
22069             </td>
22070
22071             <td class="entry_tags">
22072               <ul class="entry_tags">
22073                   <li><a href="#tag_V1">V1</a></li>
22074               </ul>
22075             </td>
22076
22077           </tr>
22078           <tr class="entries_header">
22079             <th class="th_details" colspan="6">Details</th>
22080           </tr>
22081           <tr class="entry_cont">
22082             <td class="entry_details" colspan="6">
22083               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
22084 as defined in ISO 12232:2006.<wbr/></p>
22085 <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
22086 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
22087 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
22088 <p>If the camera device cannot apply the exact sensitivity
22089 requested,<wbr/> it will reduce the gain to the nearest supported
22090 value.<wbr/> The final sensitivity used will be available in the
22091 output capture result.<wbr/></p>
22092 <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
22093 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22094             </td>
22095           </tr>
22096
22097           <tr class="entries_header">
22098             <th class="th_details" colspan="6">HAL Implementation Details</th>
22099           </tr>
22100           <tr class="entry_cont">
22101             <td class="entry_details" colspan="6">
22102               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
22103             </td>
22104           </tr>
22105
22106           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22107            <!-- end of entry -->
22108         
22109                 
22110           <tr class="entry" id="dynamic_android.sensor.timestamp">
22111             <td class="entry_name
22112              " rowspan="5">
22113               android.<wbr/>sensor.<wbr/>timestamp
22114             </td>
22115             <td class="entry_type">
22116                 <span class="entry_type_name">int64</span>
22117
22118               <span class="entry_type_visibility"> [public]</span>
22119
22120
22121               <span class="entry_type_hwlevel">[legacy] </span>
22122
22123
22124
22125
22126             </td> <!-- entry_type -->
22127
22128             <td class="entry_description">
22129               <p>Time at start of exposure of first
22130 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
22131             </td>
22132
22133             <td class="entry_units">
22134               Nanoseconds
22135             </td>
22136
22137             <td class="entry_range">
22138               <p>&gt; 0</p>
22139             </td>
22140
22141             <td class="entry_hal_version">
22142               <p>3.<wbr/>2</p>
22143             </td>
22144
22145             <td class="entry_tags">
22146               <ul class="entry_tags">
22147                   <li><a href="#tag_BC">BC</a></li>
22148               </ul>
22149             </td>
22150
22151           </tr>
22152           <tr class="entries_header">
22153             <th class="th_details" colspan="6">Details</th>
22154           </tr>
22155           <tr class="entry_cont">
22156             <td class="entry_details" colspan="6">
22157               <p>The timestamps are also included in all image
22158 buffers produced for the same capture,<wbr/> and will be identical
22159 on all the outputs.<wbr/></p>
22160 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
22161 the timestamps measure time since an unspecified starting point,<wbr/>
22162 and are monotonically increasing.<wbr/> They can be compared with the
22163 timestamps for other captures from the same camera device,<wbr/> but are
22164 not guaranteed to be comparable to any other time source.<wbr/></p>
22165 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
22166 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
22167 be compared to other timestamps from other subsystems that
22168 are using that base.<wbr/></p>
22169 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
22170 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
22171 timestamp</a> in the TotalCaptureResult that was used to create the
22172 reprocess capture request.<wbr/></p>
22173             </td>
22174           </tr>
22175
22176           <tr class="entries_header">
22177             <th class="th_details" colspan="6">HAL Implementation Details</th>
22178           </tr>
22179           <tr class="entry_cont">
22180             <td class="entry_details" colspan="6">
22181               <p>All timestamps must be in reference to the kernel's
22182 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
22183 time spent asleep.<wbr/> This allows for synchronization with
22184 sensors that continue to operate while the system is
22185 otherwise asleep.<wbr/></p>
22186 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
22187 The timestamp must be synchronized with the timestamps from other
22188 sensor subsystems that are using the same timebase.<wbr/></p>
22189 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
22190 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
22191 capture request.<wbr/></p>
22192             </td>
22193           </tr>
22194
22195           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22196            <!-- end of entry -->
22197         
22198                 
22199           <tr class="entry" id="dynamic_android.sensor.temperature">
22200             <td class="entry_name
22201              " rowspan="1">
22202               android.<wbr/>sensor.<wbr/>temperature
22203             </td>
22204             <td class="entry_type">
22205                 <span class="entry_type_name">float</span>
22206
22207               <span class="entry_type_visibility"> [system]</span>
22208
22209
22210
22211
22212
22213
22214             </td> <!-- entry_type -->
22215
22216             <td class="entry_description">
22217               <p>The temperature of the sensor,<wbr/> sampled at the time
22218 exposure began for this frame.<wbr/></p>
22219 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
22220 somewhere close to it.<wbr/></p>
22221             </td>
22222
22223             <td class="entry_units">
22224               Celsius
22225             </td>
22226
22227             <td class="entry_range">
22228               <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
22229             </td>
22230
22231             <td class="entry_hal_version">
22232               <p>3.<wbr/>2</p>
22233             </td>
22234
22235             <td class="entry_tags">
22236               <ul class="entry_tags">
22237                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22238               </ul>
22239             </td>
22240
22241           </tr>
22242
22243
22244           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22245            <!-- end of entry -->
22246         
22247                 
22248           <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
22249             <td class="entry_name
22250              " rowspan="3">
22251               android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
22252             </td>
22253             <td class="entry_type">
22254                 <span class="entry_type_name">rational</span>
22255                 <span class="entry_type_container">x</span>
22256
22257                 <span class="entry_type_array">
22258                   3
22259                 </span>
22260               <span class="entry_type_visibility"> [public]</span>
22261
22262
22263
22264
22265
22266
22267             </td> <!-- entry_type -->
22268
22269             <td class="entry_description">
22270               <p>The estimated camera neutral color in the native sensor colorspace at
22271 the time of capture.<wbr/></p>
22272             </td>
22273
22274             <td class="entry_units">
22275             </td>
22276
22277             <td class="entry_range">
22278             </td>
22279
22280             <td class="entry_hal_version">
22281               <p>3.<wbr/>2</p>
22282             </td>
22283
22284             <td class="entry_tags">
22285               <ul class="entry_tags">
22286                   <li><a href="#tag_RAW">RAW</a></li>
22287               </ul>
22288             </td>
22289
22290           </tr>
22291           <tr class="entries_header">
22292             <th class="th_details" colspan="6">Details</th>
22293           </tr>
22294           <tr class="entry_cont">
22295             <td class="entry_details" colspan="6">
22296               <p>This value gives the neutral color point encoded as an RGB value in the
22297 native sensor color space.<wbr/>  The neutral color point indicates the
22298 currently estimated white point of the scene illumination.<wbr/>  It can be
22299 used to interpolate between the provided color transforms when
22300 processing raw sensor data.<wbr/></p>
22301 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
22302             </td>
22303           </tr>
22304
22305
22306           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22307            <!-- end of entry -->
22308         
22309                 
22310           <tr class="entry" id="dynamic_android.sensor.noiseProfile">
22311             <td class="entry_name
22312              " rowspan="5">
22313               android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
22314             </td>
22315             <td class="entry_type">
22316                 <span class="entry_type_name">double</span>
22317                 <span class="entry_type_container">x</span>
22318
22319                 <span class="entry_type_array">
22320                   2 x CFA Channels
22321                 </span>
22322               <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
22323
22324
22325
22326
22327                 <div class="entry_type_notes">Pairs of noise model coefficients</div>
22328
22329
22330             </td> <!-- entry_type -->
22331
22332             <td class="entry_description">
22333               <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
22334             </td>
22335
22336             <td class="entry_units">
22337             </td>
22338
22339             <td class="entry_range">
22340             </td>
22341
22342             <td class="entry_hal_version">
22343               <p>3.<wbr/>2</p>
22344             </td>
22345
22346             <td class="entry_tags">
22347               <ul class="entry_tags">
22348                   <li><a href="#tag_RAW">RAW</a></li>
22349               </ul>
22350             </td>
22351
22352           </tr>
22353           <tr class="entries_header">
22354             <th class="th_details" colspan="6">Details</th>
22355           </tr>
22356           <tr class="entry_cont">
22357             <td class="entry_details" colspan="6">
22358               <p>This key contains two noise model coefficients for each CFA channel
22359 corresponding to the sensor amplification (S) and sensor readout
22360 noise (O).<wbr/>  These are given as pairs of coefficients for each channel
22361 in the same order as channels listed for the CFA layout key
22362 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
22363 represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
22364 the first member of the Pair at index n is the S coefficient and the
22365 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
22366 <p>These coefficients are used in a two parameter noise model to describe
22367 the amount of noise present in the image for each CFA channel.<wbr/>  The
22368 noise model used here is:</p>
22369 <p>N(x) = sqrt(Sx + O)</p>
22370 <p>Where x represents the recorded signal of a CFA channel normalized to
22371 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
22372 that channel.<wbr/></p>
22373 <p>A more detailed description of the noise model can be found in the
22374 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
22375             </td>
22376           </tr>
22377
22378           <tr class="entries_header">
22379             <th class="th_details" colspan="6">HAL Implementation Details</th>
22380           </tr>
22381           <tr class="entry_cont">
22382             <td class="entry_details" colspan="6">
22383               <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
22384 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
22385 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
22386 channel,<wbr/> etc.<wbr/></p>
22387             </td>
22388           </tr>
22389
22390           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22391            <!-- end of entry -->
22392         
22393                 
22394           <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
22395             <td class="entry_name
22396              " rowspan="3">
22397               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
22398             </td>
22399             <td class="entry_type">
22400                 <span class="entry_type_name">float</span>
22401                 <span class="entry_type_container">x</span>
22402
22403                 <span class="entry_type_array">
22404                   hue_samples x saturation_samples x value_samples x 3
22405                 </span>
22406               <span class="entry_type_visibility"> [system]</span>
22407
22408
22409
22410
22411                 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
22412
22413
22414             </td> <!-- entry_type -->
22415
22416             <td class="entry_description">
22417               <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
22418 for each pixel.<wbr/></p>
22419             </td>
22420
22421             <td class="entry_units">
22422               
22423           The hue shift is given in degrees; saturation and value scale factors are
22424           unitless and are between 0 and 1 inclusive
22425           
22426             </td>
22427
22428             <td class="entry_range">
22429             </td>
22430
22431             <td class="entry_hal_version">
22432               <p>3.<wbr/>2</p>
22433             </td>
22434
22435             <td class="entry_tags">
22436               <ul class="entry_tags">
22437                   <li><a href="#tag_RAW">RAW</a></li>
22438               </ul>
22439             </td>
22440
22441           </tr>
22442           <tr class="entries_header">
22443             <th class="th_details" colspan="6">Details</th>
22444           </tr>
22445           <tr class="entry_cont">
22446             <td class="entry_details" colspan="6">
22447               <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
22448 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
22449 <p>Each entry of this map contains three floats corresponding to the
22450 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
22451 hue shift has the lowest index.<wbr/> The map entries are stored in the key
22452 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
22453 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
22454 inner loop.<wbr/> All zero input saturation entries are required to have a
22455 value scale factor of 1.<wbr/>0.<wbr/></p>
22456             </td>
22457           </tr>
22458
22459
22460           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22461            <!-- end of entry -->
22462         
22463                 
22464           <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
22465             <td class="entry_name
22466              " rowspan="3">
22467               android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
22468             </td>
22469             <td class="entry_type">
22470                 <span class="entry_type_name">float</span>
22471                 <span class="entry_type_container">x</span>
22472
22473                 <span class="entry_type_array">
22474                   samples x 2
22475                 </span>
22476               <span class="entry_type_visibility"> [system]</span>
22477
22478
22479
22480
22481                 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
22482
22483
22484             </td> <!-- entry_type -->
22485
22486             <td class="entry_description">
22487               <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
22488             </td>
22489
22490             <td class="entry_units">
22491             </td>
22492
22493             <td class="entry_range">
22494               <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
22495 <code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
22496 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
22497             </td>
22498
22499             <td class="entry_hal_version">
22500               <p>3.<wbr/>2</p>
22501             </td>
22502
22503             <td class="entry_tags">
22504               <ul class="entry_tags">
22505                   <li><a href="#tag_RAW">RAW</a></li>
22506               </ul>
22507             </td>
22508
22509           </tr>
22510           <tr class="entries_header">
22511             <th class="th_details" colspan="6">Details</th>
22512           </tr>
22513           <tr class="entry_cont">
22514             <td class="entry_details" colspan="6">
22515               <p>This key contains a default tone curve that can be applied while
22516 processing the image as a starting point for user adjustments.<wbr/>
22517 The curve is specified as a list of value pairs in linear gamma.<wbr/>
22518 The curve is interpolated using a cubic spline.<wbr/></p>
22519             </td>
22520           </tr>
22521
22522
22523           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22524            <!-- end of entry -->
22525         
22526                 
22527           <tr class="entry" id="dynamic_android.sensor.greenSplit">
22528             <td class="entry_name
22529              " rowspan="5">
22530               android.<wbr/>sensor.<wbr/>green<wbr/>Split
22531             </td>
22532             <td class="entry_type">
22533                 <span class="entry_type_name">float</span>
22534
22535               <span class="entry_type_visibility"> [public]</span>
22536
22537
22538
22539
22540
22541
22542             </td> <!-- entry_type -->
22543
22544             <td class="entry_description">
22545               <p>The worst-case divergence between Bayer green channels.<wbr/></p>
22546             </td>
22547
22548             <td class="entry_units">
22549             </td>
22550
22551             <td class="entry_range">
22552               <p>&gt;= 0</p>
22553             </td>
22554
22555             <td class="entry_hal_version">
22556               <p>3.<wbr/>2</p>
22557             </td>
22558
22559             <td class="entry_tags">
22560               <ul class="entry_tags">
22561                   <li><a href="#tag_RAW">RAW</a></li>
22562               </ul>
22563             </td>
22564
22565           </tr>
22566           <tr class="entries_header">
22567             <th class="th_details" colspan="6">Details</th>
22568           </tr>
22569           <tr class="entry_cont">
22570             <td class="entry_details" colspan="6">
22571               <p>This value is an estimate of the worst case split between the
22572 Bayer green channels in the red and blue rows in the sensor color
22573 filter array.<wbr/></p>
22574 <p>The green split is calculated as follows:</p>
22575 <ol>
22576 <li>A 5x5 pixel (or larger) window W within the active sensor array is
22577 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
22578 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
22579 chosen is implementation defined,<wbr/> and should be chosen to provide a
22580 green split estimate that is both representative of the entire image
22581 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
22582 <li>The arithmetic mean of the green channels from the red
22583 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
22584 <li>The arithmetic mean of the green channels from the blue
22585 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
22586 <li>The maximum ratio R of the two means is computed as follows:
22587 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
22588 </ol>
22589 <p>The ratio R is the green split divergence reported for this property,<wbr/>
22590 which represents how much the green channels differ in the mosaic
22591 pattern.<wbr/>  This value is typically used to determine the treatment of
22592 the green mosaic channels when demosaicing.<wbr/></p>
22593 <p>The green split value can be roughly interpreted as follows:</p>
22594 <ul>
22595 <li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
22596 <li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
22597 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
22598 <li>R &gt; 1.<wbr/>20 will require strong software correction to produce
22599 a usuable image (&gt;20% divergence).<wbr/></li>
22600 </ul>
22601             </td>
22602           </tr>
22603
22604           <tr class="entries_header">
22605             <th class="th_details" colspan="6">HAL Implementation Details</th>
22606           </tr>
22607           <tr class="entry_cont">
22608             <td class="entry_details" colspan="6">
22609               <p>The green split given may be a static value based on prior
22610 characterization of the camera sensor using the green split
22611 calculation method given here over a large,<wbr/> representative,<wbr/> sample
22612 set of images.<wbr/>  Other methods of calculation that produce equivalent
22613 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
22614             </td>
22615           </tr>
22616
22617           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22618            <!-- end of entry -->
22619         
22620                 
22621           <tr class="entry" id="dynamic_android.sensor.testPatternData">
22622             <td class="entry_name
22623              " rowspan="5">
22624               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
22625             </td>
22626             <td class="entry_type">
22627                 <span class="entry_type_name">int32</span>
22628                 <span class="entry_type_container">x</span>
22629
22630                 <span class="entry_type_array">
22631                   4
22632                 </span>
22633               <span class="entry_type_visibility"> [public]</span>
22634
22635
22636
22637
22638
22639
22640             </td> <!-- entry_type -->
22641
22642             <td class="entry_description">
22643               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
22644 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
22645             </td>
22646
22647             <td class="entry_units">
22648             </td>
22649
22650             <td class="entry_range">
22651             </td>
22652
22653             <td class="entry_hal_version">
22654               <p>3.<wbr/>2</p>
22655             </td>
22656
22657             <td class="entry_tags">
22658             </td>
22659
22660           </tr>
22661           <tr class="entries_header">
22662             <th class="th_details" colspan="6">Details</th>
22663           </tr>
22664           <tr class="entry_cont">
22665             <td class="entry_details" colspan="6">
22666               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
22667 The camera device then uses the most significant X bits
22668 that correspond to how many bits are in its Bayer raw sensor
22669 output.<wbr/></p>
22670 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
22671 10 most significant bits from each color channel.<wbr/></p>
22672             </td>
22673           </tr>
22674
22675           <tr class="entries_header">
22676             <th class="th_details" colspan="6">HAL Implementation Details</th>
22677           </tr>
22678           <tr class="entry_cont">
22679             <td class="entry_details" colspan="6">
22680               
22681             </td>
22682           </tr>
22683
22684           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22685            <!-- end of entry -->
22686         
22687                 
22688           <tr class="entry" id="dynamic_android.sensor.testPatternMode">
22689             <td class="entry_name
22690              " rowspan="5">
22691               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
22692             </td>
22693             <td class="entry_type">
22694                 <span class="entry_type_name entry_type_name_enum">int32</span>
22695
22696               <span class="entry_type_visibility"> [public]</span>
22697
22698
22699
22700
22701
22702                 <ul class="entry_type_enum">
22703                   <li>
22704                     <span class="entry_type_enum_name">OFF (v3.2)</span>
22705                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
22706 device returns captures from the image sensor.<wbr/></p>
22707 <p>This is the default if the key is not set.<wbr/></p></span>
22708                   </li>
22709                   <li>
22710                     <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
22711                     <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
22712 respective color channel provided in
22713 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
22714 <p>For example:</p>
22715 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
22716 </code></pre>
22717 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
22718 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
22719 </code></pre>
22720 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
22721 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
22722                   </li>
22723                   <li>
22724                     <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
22725                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
22726 <p>The vertical bars (left-to-right) are as follows:</p>
22727 <ul>
22728 <li>100% white</li>
22729 <li>yellow</li>
22730 <li>cyan</li>
22731 <li>green</li>
22732 <li>magenta</li>
22733 <li>red</li>
22734 <li>blue</li>
22735 <li>black</li>
22736 </ul>
22737 <p>In general the image would look like the following:</p>
22738 <pre><code>W Y C G M R B K
22739 W Y C G M R B K
22740 W Y C G M R B K
22741 W Y C G M R B K
22742 W Y C G M R B K
22743 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
22744 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
22745 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
22746
22747 (B = Blue,<wbr/> K = Black)
22748 </code></pre>
22749 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
22750 When this is not possible,<wbr/> the bar size should be rounded
22751 down to the nearest integer and the pattern can repeat
22752 on the right side.<wbr/></p>
22753 <p>Each bar's height must always take up the full sensor
22754 pixel array height.<wbr/></p>
22755 <p>Each pixel in this test pattern must be set to either
22756 0% intensity or 100% intensity.<wbr/></p></span>
22757                   </li>
22758                   <li>
22759                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
22760                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
22761 each bar should start at its specified color at the top,<wbr/>
22762 and fade to gray at the bottom.<wbr/></p>
22763 <p>Furthermore each bar is further subdivided into a left and
22764 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
22765 and the right half should have a quantized gradient.<wbr/></p>
22766 <p>In particular,<wbr/> the right half's should consist of blocks of the
22767 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
22768 <p>The least significant bits in the quantized gradient should
22769 be copied from the most significant bits of the smooth gradient.<wbr/></p>
22770 <p>The height of each bar should always be a multiple of 128.<wbr/>
22771 When this is not the case,<wbr/> the pattern should repeat at the bottom
22772 of the image.<wbr/></p></span>
22773                   </li>
22774                   <li>
22775                     <span class="entry_type_enum_name">PN9 (v3.2)</span>
22776                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
22777 generated from a PN9 512-bit sequence (typically implemented
22778 in hardware with a linear feedback shift register).<wbr/></p>
22779 <p>The generator should be reset at the beginning of each frame,<wbr/>
22780 and thus each subsequent raw frame with this test pattern should
22781 be exactly the same as the last.<wbr/></p></span>
22782                   </li>
22783                   <li>
22784                     <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
22785                     <span class="entry_type_enum_value">256</span>
22786                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
22787 available only on this camera device are at least this numeric
22788 value.<wbr/></p>
22789 <p>All of the custom test patterns will be static
22790 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
22791                   </li>
22792                 </ul>
22793
22794             </td> <!-- entry_type -->
22795
22796             <td class="entry_description">
22797               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
22798 doing a real exposure from the camera.<wbr/></p>
22799             </td>
22800
22801             <td class="entry_units">
22802             </td>
22803
22804             <td class="entry_range">
22805               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
22806             </td>
22807
22808             <td class="entry_hal_version">
22809               <p>3.<wbr/>2</p>
22810             </td>
22811
22812             <td class="entry_tags">
22813             </td>
22814
22815           </tr>
22816           <tr class="entries_header">
22817             <th class="th_details" colspan="6">Details</th>
22818           </tr>
22819           <tr class="entry_cont">
22820             <td class="entry_details" colspan="6">
22821               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
22822 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
22823 work as normal.<wbr/></p>
22824 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
22825 occur (and that the test pattern remain unmodified,<wbr/> since the flash
22826 would not actually affect it).<wbr/></p>
22827 <p>Defaults to OFF.<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               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
22837 <p>The HAL may choose to substitute test patterns from the sensor
22838 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
22839 indistinguishable to the ISP whether the data came from the
22840 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
22841             </td>
22842           </tr>
22843
22844           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22845            <!-- end of entry -->
22846         
22847                 
22848           <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
22849             <td class="entry_name
22850              " rowspan="5">
22851               android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
22852             </td>
22853             <td class="entry_type">
22854                 <span class="entry_type_name">int64</span>
22855
22856               <span class="entry_type_visibility"> [public]</span>
22857
22858
22859               <span class="entry_type_hwlevel">[limited] </span>
22860
22861
22862
22863
22864             </td> <!-- entry_type -->
22865
22866             <td class="entry_description">
22867               <p>Duration between the start of first row exposure
22868 and the start of last row exposure.<wbr/></p>
22869             </td>
22870
22871             <td class="entry_units">
22872               Nanoseconds
22873             </td>
22874
22875             <td class="entry_range">
22876               <p>&gt;= 0 and &lt;
22877 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
22878             </td>
22879
22880             <td class="entry_hal_version">
22881               <p>3.<wbr/>2</p>
22882             </td>
22883
22884             <td class="entry_tags">
22885               <ul class="entry_tags">
22886                   <li><a href="#tag_V1">V1</a></li>
22887               </ul>
22888             </td>
22889
22890           </tr>
22891           <tr class="entries_header">
22892             <th class="th_details" colspan="6">Details</th>
22893           </tr>
22894           <tr class="entry_cont">
22895             <td class="entry_details" colspan="6">
22896               <p>This is the exposure time skew between the first and last
22897 row exposure start times.<wbr/> The first row and the last row are
22898 the first and last rows inside of the
22899 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
22900 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
22901 to the frame readout time.<wbr/></p>
22902             </td>
22903           </tr>
22904
22905           <tr class="entries_header">
22906             <th class="th_details" colspan="6">HAL Implementation Details</th>
22907           </tr>
22908           <tr class="entry_cont">
22909             <td class="entry_details" colspan="6">
22910               <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
22911 exposure at the same time.<wbr/></p>
22912             </td>
22913           </tr>
22914
22915           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22916            <!-- end of entry -->
22917         
22918                 
22919           <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
22920             <td class="entry_name
22921              " rowspan="5">
22922               android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
22923             </td>
22924             <td class="entry_type">
22925                 <span class="entry_type_name">float</span>
22926                 <span class="entry_type_container">x</span>
22927
22928                 <span class="entry_type_array">
22929                   4
22930                 </span>
22931               <span class="entry_type_visibility"> [public]</span>
22932
22933
22934
22935
22936                 <div class="entry_type_notes">2x2 raw count block</div>
22937
22938
22939             </td> <!-- entry_type -->
22940
22941             <td class="entry_description">
22942               <p>A per-frame dynamic black level offset for each of the color filter
22943 arrangement (CFA) mosaic channels.<wbr/></p>
22944             </td>
22945
22946             <td class="entry_units">
22947             </td>
22948
22949             <td class="entry_range">
22950               <p>&gt;= 0 for each.<wbr/></p>
22951             </td>
22952
22953             <td class="entry_hal_version">
22954               <p>3.<wbr/>2</p>
22955             </td>
22956
22957             <td class="entry_tags">
22958               <ul class="entry_tags">
22959                   <li><a href="#tag_RAW">RAW</a></li>
22960               </ul>
22961             </td>
22962
22963           </tr>
22964           <tr class="entries_header">
22965             <th class="th_details" colspan="6">Details</th>
22966           </tr>
22967           <tr class="entry_cont">
22968             <td class="entry_details" colspan="6">
22969               <p>Camera sensor black levels may vary dramatically for different
22970 capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
22971 level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
22972 inaccurate to represent the actual value on a per-frame basis.<wbr/> The
22973 camera device internal pipeline relies on reliable black level values
22974 to process the raw images appropriately.<wbr/> To get the best image
22975 quality,<wbr/> the camera device may choose to estimate the per frame black
22976 level values either based on optically shielded black regions
22977 (<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
22978 <p>This key reports the camera device estimated per-frame zero light
22979 value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
22980 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
22981 approximation of the actual black level values.<wbr/> This value is the
22982 black level used in camera device internal image processing pipeline
22983 and generally more accurate than the fixed black level values.<wbr/>
22984 However,<wbr/> since they are estimated values by the camera device,<wbr/> they
22985 may not be as accurate as the black level values calculated from the
22986 optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
22987 <p>The values are given in the same order as channels listed for the CFA
22988 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
22989 nth value given corresponds to the black level offset for the nth
22990 color channel listed in the CFA.<wbr/></p>
22991 <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
22992 camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
22993             </td>
22994           </tr>
22995
22996           <tr class="entries_header">
22997             <th class="th_details" colspan="6">HAL Implementation Details</th>
22998           </tr>
22999           <tr class="entry_cont">
23000             <td class="entry_details" colspan="6">
23001               <p>The values are given in row-column scan order,<wbr/> with the first value
23002 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
23003             </td>
23004           </tr>
23005
23006           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23007            <!-- end of entry -->
23008         
23009                 
23010           <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
23011             <td class="entry_name
23012              " rowspan="5">
23013               android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
23014             </td>
23015             <td class="entry_type">
23016                 <span class="entry_type_name">int32</span>
23017
23018               <span class="entry_type_visibility"> [public]</span>
23019
23020
23021
23022
23023
23024
23025             </td> <!-- entry_type -->
23026
23027             <td class="entry_description">
23028               <p>Maximum raw value output by sensor for this frame.<wbr/></p>
23029             </td>
23030
23031             <td class="entry_units">
23032             </td>
23033
23034             <td class="entry_range">
23035               <p>&gt;= 0</p>
23036             </td>
23037
23038             <td class="entry_hal_version">
23039               <p>3.<wbr/>2</p>
23040             </td>
23041
23042             <td class="entry_tags">
23043               <ul class="entry_tags">
23044                   <li><a href="#tag_RAW">RAW</a></li>
23045               </ul>
23046             </td>
23047
23048           </tr>
23049           <tr class="entries_header">
23050             <th class="th_details" colspan="6">Details</th>
23051           </tr>
23052           <tr class="entry_cont">
23053             <td class="entry_details" colspan="6">
23054               <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
23055 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
23056 level will change accordingly.<wbr/> This key is similar to
23057 <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
23058 estimated white level for each frame.<wbr/></p>
23059 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
23060 available or the camera device advertises this key via
23061 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
23062             </td>
23063           </tr>
23064
23065           <tr class="entries_header">
23066             <th class="th_details" colspan="6">HAL Implementation Details</th>
23067           </tr>
23068           <tr class="entry_cont">
23069             <td class="entry_details" colspan="6">
23070               <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
23071 so the value for linear sensors should not be significantly lower
23072 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
23073             </td>
23074           </tr>
23075
23076           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23077            <!-- end of entry -->
23078         
23079         
23080
23081       <!-- end of kind -->
23082       </tbody>
23083
23084   <!-- end of section -->
23085   <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
23086
23087
23088       <tr><td colspan="7" class="kind">controls</td></tr>
23089
23090       <thead class="entries_header">
23091         <tr>
23092           <th class="th_name">Property Name</th>
23093           <th class="th_type">Type</th>
23094           <th class="th_description">Description</th>
23095           <th class="th_units">Units</th>
23096           <th class="th_range">Range</th>
23097           <th class="th_hal_version">Initial HIDL HAL version</th>
23098           <th class="th_tags">Tags</th>
23099         </tr>
23100       </thead>
23101
23102       <tbody>
23103
23104         
23105
23106         
23107
23108         
23109
23110         
23111
23112                 
23113           <tr class="entry" id="controls_android.shading.mode">
23114             <td class="entry_name
23115              " rowspan="3">
23116               android.<wbr/>shading.<wbr/>mode
23117             </td>
23118             <td class="entry_type">
23119                 <span class="entry_type_name entry_type_name_enum">byte</span>
23120
23121               <span class="entry_type_visibility"> [public]</span>
23122
23123
23124               <span class="entry_type_hwlevel">[full] </span>
23125
23126
23127
23128                 <ul class="entry_type_enum">
23129                   <li>
23130                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23131                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23132                   </li>
23133                   <li>
23134                     <span class="entry_type_enum_name">FAST (v3.2)</span>
23135                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23136 frame rate relative to sensor raw output</p></span>
23137                   </li>
23138                   <li>
23139                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23140                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23141 cost of possibly reduced frame rate.<wbr/></p></span>
23142                   </li>
23143                 </ul>
23144
23145             </td> <!-- entry_type -->
23146
23147             <td class="entry_description">
23148               <p>Quality of lens shading correction applied
23149 to the image data.<wbr/></p>
23150             </td>
23151
23152             <td class="entry_units">
23153             </td>
23154
23155             <td class="entry_range">
23156               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23157             </td>
23158
23159             <td class="entry_hal_version">
23160               <p>3.<wbr/>2</p>
23161             </td>
23162
23163             <td class="entry_tags">
23164             </td>
23165
23166           </tr>
23167           <tr class="entries_header">
23168             <th class="th_details" colspan="6">Details</th>
23169           </tr>
23170           <tr class="entry_cont">
23171             <td class="entry_details" colspan="6">
23172               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23173 camera device,<wbr/> and an identity lens shading map data will be provided
23174 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
23175 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23176 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
23177 map shown below:</p>
23178 <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/>
23179  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/>
23180  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/>
23181  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/>
23182  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/>
23183  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 ]
23184 </code></pre>
23185 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23186 device.<wbr/> Applications can request lens shading map data by setting
23187 <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
23188 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
23189 data will be the one applied by the camera device for this capture request.<wbr/></p>
23190 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23191 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23192 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>
23193 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23194 to be converged before using the returned shading map data.<wbr/></p>
23195             </td>
23196           </tr>
23197
23198
23199           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23200            <!-- end of entry -->
23201         
23202                 
23203           <tr class="entry" id="controls_android.shading.strength">
23204             <td class="entry_name
23205              " rowspan="1">
23206               android.<wbr/>shading.<wbr/>strength
23207             </td>
23208             <td class="entry_type">
23209                 <span class="entry_type_name">byte</span>
23210
23211               <span class="entry_type_visibility"> [system]</span>
23212
23213
23214
23215
23216
23217
23218             </td> <!-- entry_type -->
23219
23220             <td class="entry_description">
23221               <p>Control the amount of shading correction
23222 applied to the images</p>
23223             </td>
23224
23225             <td class="entry_units">
23226               unitless: 1-10; 10 is full shading
23227           compensation
23228             </td>
23229
23230             <td class="entry_range">
23231             </td>
23232
23233             <td class="entry_hal_version">
23234               <p>3.<wbr/>2</p>
23235             </td>
23236
23237             <td class="entry_tags">
23238               <ul class="entry_tags">
23239                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23240               </ul>
23241             </td>
23242
23243           </tr>
23244
23245
23246           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23247            <!-- end of entry -->
23248         
23249         
23250
23251       <!-- end of kind -->
23252       </tbody>
23253       <tr><td colspan="7" class="kind">dynamic</td></tr>
23254
23255       <thead class="entries_header">
23256         <tr>
23257           <th class="th_name">Property Name</th>
23258           <th class="th_type">Type</th>
23259           <th class="th_description">Description</th>
23260           <th class="th_units">Units</th>
23261           <th class="th_range">Range</th>
23262           <th class="th_hal_version">Initial HIDL HAL version</th>
23263           <th class="th_tags">Tags</th>
23264         </tr>
23265       </thead>
23266
23267       <tbody>
23268
23269         
23270
23271         
23272
23273         
23274
23275         
23276
23277                 
23278           <tr class="entry" id="dynamic_android.shading.mode">
23279             <td class="entry_name
23280              " rowspan="3">
23281               android.<wbr/>shading.<wbr/>mode
23282             </td>
23283             <td class="entry_type">
23284                 <span class="entry_type_name entry_type_name_enum">byte</span>
23285
23286               <span class="entry_type_visibility"> [public]</span>
23287
23288
23289               <span class="entry_type_hwlevel">[full] </span>
23290
23291
23292
23293                 <ul class="entry_type_enum">
23294                   <li>
23295                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23296                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23297                   </li>
23298                   <li>
23299                     <span class="entry_type_enum_name">FAST (v3.2)</span>
23300                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23301 frame rate relative to sensor raw output</p></span>
23302                   </li>
23303                   <li>
23304                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23305                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23306 cost of possibly reduced frame rate.<wbr/></p></span>
23307                   </li>
23308                 </ul>
23309
23310             </td> <!-- entry_type -->
23311
23312             <td class="entry_description">
23313               <p>Quality of lens shading correction applied
23314 to the image data.<wbr/></p>
23315             </td>
23316
23317             <td class="entry_units">
23318             </td>
23319
23320             <td class="entry_range">
23321               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23322             </td>
23323
23324             <td class="entry_hal_version">
23325               <p>3.<wbr/>2</p>
23326             </td>
23327
23328             <td class="entry_tags">
23329             </td>
23330
23331           </tr>
23332           <tr class="entries_header">
23333             <th class="th_details" colspan="6">Details</th>
23334           </tr>
23335           <tr class="entry_cont">
23336             <td class="entry_details" colspan="6">
23337               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23338 camera device,<wbr/> and an identity lens shading map data will be provided
23339 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
23340 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23341 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
23342 map shown below:</p>
23343 <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/>
23344  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/>
23345  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/>
23346  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/>
23347  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/>
23348  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 ]
23349 </code></pre>
23350 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23351 device.<wbr/> Applications can request lens shading map data by setting
23352 <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
23353 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
23354 data will be the one applied by the camera device for this capture request.<wbr/></p>
23355 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23356 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23357 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>
23358 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23359 to be converged before using the returned shading map data.<wbr/></p>
23360             </td>
23361           </tr>
23362
23363
23364           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23365            <!-- end of entry -->
23366         
23367         
23368
23369       <!-- end of kind -->
23370       </tbody>
23371       <tr><td colspan="7" class="kind">static</td></tr>
23372
23373       <thead class="entries_header">
23374         <tr>
23375           <th class="th_name">Property Name</th>
23376           <th class="th_type">Type</th>
23377           <th class="th_description">Description</th>
23378           <th class="th_units">Units</th>
23379           <th class="th_range">Range</th>
23380           <th class="th_hal_version">Initial HIDL HAL version</th>
23381           <th class="th_tags">Tags</th>
23382         </tr>
23383       </thead>
23384
23385       <tbody>
23386
23387         
23388
23389         
23390
23391         
23392
23393         
23394
23395                 
23396           <tr class="entry" id="static_android.shading.availableModes">
23397             <td class="entry_name
23398              " rowspan="5">
23399               android.<wbr/>shading.<wbr/>available<wbr/>Modes
23400             </td>
23401             <td class="entry_type">
23402                 <span class="entry_type_name">byte</span>
23403                 <span class="entry_type_container">x</span>
23404
23405                 <span class="entry_type_array">
23406                   n
23407                 </span>
23408               <span class="entry_type_visibility"> [public as enumList]</span>
23409
23410
23411               <span class="entry_type_hwlevel">[legacy] </span>
23412
23413
23414                 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
23415
23416
23417             </td> <!-- entry_type -->
23418
23419             <td class="entry_description">
23420               <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>
23421             </td>
23422
23423             <td class="entry_units">
23424             </td>
23425
23426             <td class="entry_range">
23427               <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
23428             </td>
23429
23430             <td class="entry_hal_version">
23431               <p>3.<wbr/>2</p>
23432             </td>
23433
23434             <td class="entry_tags">
23435             </td>
23436
23437           </tr>
23438           <tr class="entries_header">
23439             <th class="th_details" colspan="6">Details</th>
23440           </tr>
23441           <tr class="entry_cont">
23442             <td class="entry_details" colspan="6">
23443               <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
23444 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
23445 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
23446 LEGACY devices will always only support FAST mode.<wbr/></p>
23447             </td>
23448           </tr>
23449
23450           <tr class="entries_header">
23451             <th class="th_details" colspan="6">HAL Implementation Details</th>
23452           </tr>
23453           <tr class="entry_cont">
23454             <td class="entry_details" colspan="6">
23455               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
23456 available on the camera device,<wbr/> but the underlying implementation can be the same for
23457 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
23458 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
23459             </td>
23460           </tr>
23461
23462           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23463            <!-- end of entry -->
23464         
23465         
23466
23467       <!-- end of kind -->
23468       </tbody>
23469
23470   <!-- end of section -->
23471   <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
23472
23473
23474       <tr><td colspan="7" class="kind">controls</td></tr>
23475
23476       <thead class="entries_header">
23477         <tr>
23478           <th class="th_name">Property Name</th>
23479           <th class="th_type">Type</th>
23480           <th class="th_description">Description</th>
23481           <th class="th_units">Units</th>
23482           <th class="th_range">Range</th>
23483           <th class="th_hal_version">Initial HIDL HAL version</th>
23484           <th class="th_tags">Tags</th>
23485         </tr>
23486       </thead>
23487
23488       <tbody>
23489
23490         
23491
23492         
23493
23494         
23495
23496         
23497
23498                 
23499           <tr class="entry" id="controls_android.statistics.faceDetectMode">
23500             <td class="entry_name
23501              " rowspan="5">
23502               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
23503             </td>
23504             <td class="entry_type">
23505                 <span class="entry_type_name entry_type_name_enum">byte</span>
23506
23507               <span class="entry_type_visibility"> [public]</span>
23508
23509
23510               <span class="entry_type_hwlevel">[legacy] </span>
23511
23512
23513
23514                 <ul class="entry_type_enum">
23515                   <li>
23516                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23517                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
23518 results.<wbr/></p></span>
23519                   </li>
23520                   <li>
23521                     <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
23522                     <span class="entry_type_enum_optional">[optional]</span>
23523                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
23524                   </li>
23525                   <li>
23526                     <span class="entry_type_enum_name">FULL (v3.2)</span>
23527                     <span class="entry_type_enum_optional">[optional]</span>
23528                     <span class="entry_type_enum_notes"><p>Return all face
23529 metadata.<wbr/></p>
23530 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
23531                   </li>
23532                 </ul>
23533
23534             </td> <!-- entry_type -->
23535
23536             <td class="entry_description">
23537               <p>Operating mode for the face detector
23538 unit.<wbr/></p>
23539             </td>
23540
23541             <td class="entry_units">
23542             </td>
23543
23544             <td class="entry_range">
23545               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
23546             </td>
23547
23548             <td class="entry_hal_version">
23549               <p>3.<wbr/>2</p>
23550             </td>
23551
23552             <td class="entry_tags">
23553               <ul class="entry_tags">
23554                   <li><a href="#tag_BC">BC</a></li>
23555               </ul>
23556             </td>
23557
23558           </tr>
23559           <tr class="entries_header">
23560             <th class="th_details" colspan="6">Details</th>
23561           </tr>
23562           <tr class="entry_cont">
23563             <td class="entry_details" colspan="6">
23564               <p>Whether face detection is enabled,<wbr/> and whether it
23565 should output just the basic fields or the full set of
23566 fields.<wbr/></p>
23567             </td>
23568           </tr>
23569
23570           <tr class="entries_header">
23571             <th class="th_details" colspan="6">HAL Implementation Details</th>
23572           </tr>
23573           <tr class="entry_cont">
23574             <td class="entry_details" colspan="6">
23575               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
23576 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
23577 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
23578 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
23579             </td>
23580           </tr>
23581
23582           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23583            <!-- end of entry -->
23584         
23585                 
23586           <tr class="entry" id="controls_android.statistics.histogramMode">
23587             <td class="entry_name
23588              " rowspan="1">
23589               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
23590             </td>
23591             <td class="entry_type">
23592                 <span class="entry_type_name entry_type_name_enum">byte</span>
23593
23594               <span class="entry_type_visibility"> [system as boolean]</span>
23595
23596
23597
23598
23599
23600                 <ul class="entry_type_enum">
23601                   <li>
23602                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23603                   </li>
23604                   <li>
23605                     <span class="entry_type_enum_name">ON (v3.2)</span>
23606                   </li>
23607                 </ul>
23608
23609             </td> <!-- entry_type -->
23610
23611             <td class="entry_description">
23612               <p>Operating mode for histogram
23613 generation</p>
23614             </td>
23615
23616             <td class="entry_units">
23617             </td>
23618
23619             <td class="entry_range">
23620             </td>
23621
23622             <td class="entry_hal_version">
23623               <p>3.<wbr/>2</p>
23624             </td>
23625
23626             <td class="entry_tags">
23627               <ul class="entry_tags">
23628                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23629               </ul>
23630             </td>
23631
23632           </tr>
23633
23634
23635           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23636            <!-- end of entry -->
23637         
23638                 
23639           <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
23640             <td class="entry_name
23641              " rowspan="1">
23642               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
23643             </td>
23644             <td class="entry_type">
23645                 <span class="entry_type_name entry_type_name_enum">byte</span>
23646
23647               <span class="entry_type_visibility"> [system as boolean]</span>
23648
23649
23650
23651
23652
23653                 <ul class="entry_type_enum">
23654                   <li>
23655                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23656                   </li>
23657                   <li>
23658                     <span class="entry_type_enum_name">ON (v3.2)</span>
23659                   </li>
23660                 </ul>
23661
23662             </td> <!-- entry_type -->
23663
23664             <td class="entry_description">
23665               <p>Operating mode for sharpness map
23666 generation</p>
23667             </td>
23668
23669             <td class="entry_units">
23670             </td>
23671
23672             <td class="entry_range">
23673             </td>
23674
23675             <td class="entry_hal_version">
23676               <p>3.<wbr/>2</p>
23677             </td>
23678
23679             <td class="entry_tags">
23680               <ul class="entry_tags">
23681                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23682               </ul>
23683             </td>
23684
23685           </tr>
23686
23687
23688           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23689            <!-- end of entry -->
23690         
23691                 
23692           <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
23693             <td class="entry_name
23694              " rowspan="3">
23695               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
23696             </td>
23697             <td class="entry_type">
23698                 <span class="entry_type_name entry_type_name_enum">byte</span>
23699
23700               <span class="entry_type_visibility"> [public as boolean]</span>
23701
23702
23703
23704
23705
23706                 <ul class="entry_type_enum">
23707                   <li>
23708                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23709                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
23710                   </li>
23711                   <li>
23712                     <span class="entry_type_enum_name">ON (v3.2)</span>
23713                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
23714                   </li>
23715                 </ul>
23716
23717             </td> <!-- entry_type -->
23718
23719             <td class="entry_description">
23720               <p>Operating mode for hot pixel map generation.<wbr/></p>
23721             </td>
23722
23723             <td class="entry_units">
23724             </td>
23725
23726             <td class="entry_range">
23727               <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>
23728             </td>
23729
23730             <td class="entry_hal_version">
23731               <p>3.<wbr/>2</p>
23732             </td>
23733
23734             <td class="entry_tags">
23735               <ul class="entry_tags">
23736                   <li><a href="#tag_V1">V1</a></li>
23737                   <li><a href="#tag_RAW">RAW</a></li>
23738               </ul>
23739             </td>
23740
23741           </tr>
23742           <tr class="entries_header">
23743             <th class="th_details" colspan="6">Details</th>
23744           </tr>
23745           <tr class="entry_cont">
23746             <td class="entry_details" colspan="6">
23747               <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/>
23748 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
23749             </td>
23750           </tr>
23751
23752
23753           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23754            <!-- end of entry -->
23755         
23756                 
23757           <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
23758             <td class="entry_name
23759              " rowspan="3">
23760               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
23761             </td>
23762             <td class="entry_type">
23763                 <span class="entry_type_name entry_type_name_enum">byte</span>
23764
23765               <span class="entry_type_visibility"> [public]</span>
23766
23767
23768               <span class="entry_type_hwlevel">[full] </span>
23769
23770
23771
23772                 <ul class="entry_type_enum">
23773                   <li>
23774                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23775                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
23776                   </li>
23777                   <li>
23778                     <span class="entry_type_enum_name">ON (v3.2)</span>
23779                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
23780                   </li>
23781                 </ul>
23782
23783             </td> <!-- entry_type -->
23784
23785             <td class="entry_description">
23786               <p>Whether the camera device will output the lens
23787 shading map in output result metadata.<wbr/></p>
23788             </td>
23789
23790             <td class="entry_units">
23791             </td>
23792
23793             <td class="entry_range">
23794               <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>
23795             </td>
23796
23797             <td class="entry_hal_version">
23798               <p>3.<wbr/>2</p>
23799             </td>
23800
23801             <td class="entry_tags">
23802               <ul class="entry_tags">
23803                   <li><a href="#tag_RAW">RAW</a></li>
23804               </ul>
23805             </td>
23806
23807           </tr>
23808           <tr class="entries_header">
23809             <th class="th_details" colspan="6">Details</th>
23810           </tr>
23811           <tr class="entry_cont">
23812             <td class="entry_details" colspan="6">
23813               <p>When set to ON,<wbr/>
23814 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
23815 the output result metadata.<wbr/></p>
23816 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
23817             </td>
23818           </tr>
23819
23820
23821           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23822            <!-- end of entry -->
23823         
23824         
23825
23826       <!-- end of kind -->
23827       </tbody>
23828       <tr><td colspan="7" class="kind">static</td></tr>
23829
23830       <thead class="entries_header">
23831         <tr>
23832           <th class="th_name">Property Name</th>
23833           <th class="th_type">Type</th>
23834           <th class="th_description">Description</th>
23835           <th class="th_units">Units</th>
23836           <th class="th_range">Range</th>
23837           <th class="th_hal_version">Initial HIDL HAL version</th>
23838           <th class="th_tags">Tags</th>
23839         </tr>
23840       </thead>
23841
23842       <tbody>
23843
23844         
23845
23846         
23847
23848         
23849
23850         
23851                 
23852             
23853
23854                 
23855           <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
23856             <td class="entry_name
23857              " rowspan="3">
23858               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
23859             </td>
23860             <td class="entry_type">
23861                 <span class="entry_type_name">byte</span>
23862                 <span class="entry_type_container">x</span>
23863
23864                 <span class="entry_type_array">
23865                   n
23866                 </span>
23867               <span class="entry_type_visibility"> [public as enumList]</span>
23868
23869
23870               <span class="entry_type_hwlevel">[legacy] </span>
23871
23872
23873                 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
23874
23875
23876             </td> <!-- entry_type -->
23877
23878             <td class="entry_description">
23879               <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
23880 supported by this camera device.<wbr/></p>
23881             </td>
23882
23883             <td class="entry_units">
23884             </td>
23885
23886             <td class="entry_range">
23887               <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
23888             </td>
23889
23890             <td class="entry_hal_version">
23891               <p>3.<wbr/>2</p>
23892             </td>
23893
23894             <td class="entry_tags">
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>OFF is always supported.<wbr/></p>
23904             </td>
23905           </tr>
23906
23907
23908           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23909            <!-- end of entry -->
23910         
23911                 
23912           <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
23913             <td class="entry_name
23914              " rowspan="1">
23915               android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
23916             </td>
23917             <td class="entry_type">
23918                 <span class="entry_type_name">int32</span>
23919
23920               <span class="entry_type_visibility"> [system]</span>
23921
23922
23923
23924
23925
23926
23927             </td> <!-- entry_type -->
23928
23929             <td class="entry_description">
23930               <p>Number of histogram buckets
23931 supported</p>
23932             </td>
23933
23934             <td class="entry_units">
23935             </td>
23936
23937             <td class="entry_range">
23938               <p>&gt;= 64</p>
23939             </td>
23940
23941             <td class="entry_hal_version">
23942               <p>3.<wbr/>2</p>
23943             </td>
23944
23945             <td class="entry_tags">
23946               <ul class="entry_tags">
23947                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23948               </ul>
23949             </td>
23950
23951           </tr>
23952
23953
23954           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23955            <!-- end of entry -->
23956         
23957                 
23958           <tr class="entry" id="static_android.statistics.info.maxFaceCount">
23959             <td class="entry_name
23960              " rowspan="1">
23961               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
23962             </td>
23963             <td class="entry_type">
23964                 <span class="entry_type_name">int32</span>
23965
23966               <span class="entry_type_visibility"> [public]</span>
23967
23968
23969               <span class="entry_type_hwlevel">[legacy] </span>
23970
23971
23972
23973
23974             </td> <!-- entry_type -->
23975
23976             <td class="entry_description">
23977               <p>The maximum number of simultaneously detectable
23978 faces.<wbr/></p>
23979             </td>
23980
23981             <td class="entry_units">
23982             </td>
23983
23984             <td class="entry_range">
23985               <p>0 for cameras without available face detection; otherwise:
23986 <code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
23987 <code>&gt;0</code> for LEGACY devices.<wbr/></p>
23988             </td>
23989
23990             <td class="entry_hal_version">
23991               <p>3.<wbr/>2</p>
23992             </td>
23993
23994             <td class="entry_tags">
23995               <ul class="entry_tags">
23996                   <li><a href="#tag_BC">BC</a></li>
23997               </ul>
23998             </td>
23999
24000           </tr>
24001
24002
24003           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24004            <!-- end of entry -->
24005         
24006                 
24007           <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
24008             <td class="entry_name
24009              " rowspan="1">
24010               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
24011             </td>
24012             <td class="entry_type">
24013                 <span class="entry_type_name">int32</span>
24014
24015               <span class="entry_type_visibility"> [system]</span>
24016
24017
24018
24019
24020
24021
24022             </td> <!-- entry_type -->
24023
24024             <td class="entry_description">
24025               <p>Maximum value possible for a histogram
24026 bucket</p>
24027             </td>
24028
24029             <td class="entry_units">
24030             </td>
24031
24032             <td class="entry_range">
24033             </td>
24034
24035             <td class="entry_hal_version">
24036               <p>3.<wbr/>2</p>
24037             </td>
24038
24039             <td class="entry_tags">
24040               <ul class="entry_tags">
24041                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24042               </ul>
24043             </td>
24044
24045           </tr>
24046
24047
24048           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24049            <!-- end of entry -->
24050         
24051                 
24052           <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
24053             <td class="entry_name
24054              " rowspan="1">
24055               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
24056             </td>
24057             <td class="entry_type">
24058                 <span class="entry_type_name">int32</span>
24059
24060               <span class="entry_type_visibility"> [system]</span>
24061
24062
24063
24064
24065
24066
24067             </td> <!-- entry_type -->
24068
24069             <td class="entry_description">
24070               <p>Maximum value possible for a sharpness map
24071 region.<wbr/></p>
24072             </td>
24073
24074             <td class="entry_units">
24075             </td>
24076
24077             <td class="entry_range">
24078             </td>
24079
24080             <td class="entry_hal_version">
24081               <p>3.<wbr/>2</p>
24082             </td>
24083
24084             <td class="entry_tags">
24085               <ul class="entry_tags">
24086                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24087               </ul>
24088             </td>
24089
24090           </tr>
24091
24092
24093           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24094            <!-- end of entry -->
24095         
24096                 
24097           <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
24098             <td class="entry_name
24099              " rowspan="1">
24100               android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
24101             </td>
24102             <td class="entry_type">
24103                 <span class="entry_type_name">int32</span>
24104                 <span class="entry_type_container">x</span>
24105
24106                 <span class="entry_type_array">
24107                   2
24108                 </span>
24109               <span class="entry_type_visibility"> [system as size]</span>
24110
24111
24112
24113
24114                 <div class="entry_type_notes">width x height</div>
24115
24116
24117             </td> <!-- entry_type -->
24118
24119             <td class="entry_description">
24120               <p>Dimensions of the sharpness
24121 map</p>
24122             </td>
24123
24124             <td class="entry_units">
24125             </td>
24126
24127             <td class="entry_range">
24128               <p>Must be at least 32 x 32</p>
24129             </td>
24130
24131             <td class="entry_hal_version">
24132               <p>3.<wbr/>2</p>
24133             </td>
24134
24135             <td class="entry_tags">
24136               <ul class="entry_tags">
24137                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24138               </ul>
24139             </td>
24140
24141           </tr>
24142
24143
24144           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24145            <!-- end of entry -->
24146         
24147                 
24148           <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
24149             <td class="entry_name
24150              " rowspan="3">
24151               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
24152             </td>
24153             <td class="entry_type">
24154                 <span class="entry_type_name">byte</span>
24155                 <span class="entry_type_container">x</span>
24156
24157                 <span class="entry_type_array">
24158                   n
24159                 </span>
24160               <span class="entry_type_visibility"> [public as boolean]</span>
24161
24162
24163
24164
24165                 <div class="entry_type_notes">list of enums</div>
24166
24167
24168             </td> <!-- entry_type -->
24169
24170             <td class="entry_description">
24171               <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
24172 supported by this camera device.<wbr/></p>
24173             </td>
24174
24175             <td class="entry_units">
24176             </td>
24177
24178             <td class="entry_range">
24179               <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
24180             </td>
24181
24182             <td class="entry_hal_version">
24183               <p>3.<wbr/>2</p>
24184             </td>
24185
24186             <td class="entry_tags">
24187               <ul class="entry_tags">
24188                   <li><a href="#tag_V1">V1</a></li>
24189                   <li><a href="#tag_RAW">RAW</a></li>
24190               </ul>
24191             </td>
24192
24193           </tr>
24194           <tr class="entries_header">
24195             <th class="th_details" colspan="6">Details</th>
24196           </tr>
24197           <tr class="entry_cont">
24198             <td class="entry_details" colspan="6">
24199               <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
24200 <code>false</code>.<wbr/></p>
24201 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24202             </td>
24203           </tr>
24204
24205
24206           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24207            <!-- end of entry -->
24208         
24209                 
24210           <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
24211             <td class="entry_name
24212              " rowspan="3">
24213               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
24214             </td>
24215             <td class="entry_type">
24216                 <span class="entry_type_name">byte</span>
24217                 <span class="entry_type_container">x</span>
24218
24219                 <span class="entry_type_array">
24220                   n
24221                 </span>
24222               <span class="entry_type_visibility"> [public as enumList]</span>
24223
24224
24225
24226
24227                 <div class="entry_type_notes">list of enums</div>
24228
24229
24230             </td> <!-- entry_type -->
24231
24232             <td class="entry_description">
24233               <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
24234 are supported by this camera device.<wbr/></p>
24235             </td>
24236
24237             <td class="entry_units">
24238             </td>
24239
24240             <td class="entry_range">
24241               <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
24242             </td>
24243
24244             <td class="entry_hal_version">
24245               <p>3.<wbr/>2</p>
24246             </td>
24247
24248             <td class="entry_tags">
24249             </td>
24250
24251           </tr>
24252           <tr class="entries_header">
24253             <th class="th_details" colspan="6">Details</th>
24254           </tr>
24255           <tr class="entry_cont">
24256             <td class="entry_details" colspan="6">
24257               <p>If no lens shading map output is available for this camera device,<wbr/> this key will
24258 contain only OFF.<wbr/></p>
24259 <p>ON is always supported on devices with the RAW capability.<wbr/>
24260 LEGACY mode devices will always only support OFF.<wbr/></p>
24261             </td>
24262           </tr>
24263
24264
24265           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24266            <!-- end of entry -->
24267         
24268         
24269         
24270
24271         
24272
24273       <!-- end of kind -->
24274       </tbody>
24275       <tr><td colspan="7" class="kind">dynamic</td></tr>
24276
24277       <thead class="entries_header">
24278         <tr>
24279           <th class="th_name">Property Name</th>
24280           <th class="th_type">Type</th>
24281           <th class="th_description">Description</th>
24282           <th class="th_units">Units</th>
24283           <th class="th_range">Range</th>
24284           <th class="th_hal_version">Initial HIDL HAL version</th>
24285           <th class="th_tags">Tags</th>
24286         </tr>
24287       </thead>
24288
24289       <tbody>
24290
24291         
24292
24293         
24294
24295         
24296
24297         
24298
24299                 
24300           <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
24301             <td class="entry_name
24302              " rowspan="5">
24303               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24304             </td>
24305             <td class="entry_type">
24306                 <span class="entry_type_name entry_type_name_enum">byte</span>
24307
24308               <span class="entry_type_visibility"> [public]</span>
24309
24310
24311               <span class="entry_type_hwlevel">[legacy] </span>
24312
24313
24314
24315                 <ul class="entry_type_enum">
24316                   <li>
24317                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24318                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24319 results.<wbr/></p></span>
24320                   </li>
24321                   <li>
24322                     <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24323                     <span class="entry_type_enum_optional">[optional]</span>
24324                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24325                   </li>
24326                   <li>
24327                     <span class="entry_type_enum_name">FULL (v3.2)</span>
24328                     <span class="entry_type_enum_optional">[optional]</span>
24329                     <span class="entry_type_enum_notes"><p>Return all face
24330 metadata.<wbr/></p>
24331 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24332                   </li>
24333                 </ul>
24334
24335             </td> <!-- entry_type -->
24336
24337             <td class="entry_description">
24338               <p>Operating mode for the face detector
24339 unit.<wbr/></p>
24340             </td>
24341
24342             <td class="entry_units">
24343             </td>
24344
24345             <td class="entry_range">
24346               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24347             </td>
24348
24349             <td class="entry_hal_version">
24350               <p>3.<wbr/>2</p>
24351             </td>
24352
24353             <td class="entry_tags">
24354               <ul class="entry_tags">
24355                   <li><a href="#tag_BC">BC</a></li>
24356               </ul>
24357             </td>
24358
24359           </tr>
24360           <tr class="entries_header">
24361             <th class="th_details" colspan="6">Details</th>
24362           </tr>
24363           <tr class="entry_cont">
24364             <td class="entry_details" colspan="6">
24365               <p>Whether face detection is enabled,<wbr/> and whether it
24366 should output just the basic fields or the full set of
24367 fields.<wbr/></p>
24368             </td>
24369           </tr>
24370
24371           <tr class="entries_header">
24372             <th class="th_details" colspan="6">HAL Implementation Details</th>
24373           </tr>
24374           <tr class="entry_cont">
24375             <td class="entry_details" colspan="6">
24376               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
24377 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
24378 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
24379 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
24380             </td>
24381           </tr>
24382
24383           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24384            <!-- end of entry -->
24385         
24386                 
24387           <tr class="entry" id="dynamic_android.statistics.faceIds">
24388             <td class="entry_name
24389              " rowspan="3">
24390               android.<wbr/>statistics.<wbr/>face<wbr/>Ids
24391             </td>
24392             <td class="entry_type">
24393                 <span class="entry_type_name">int32</span>
24394                 <span class="entry_type_container">x</span>
24395
24396                 <span class="entry_type_array">
24397                   n
24398                 </span>
24399               <span class="entry_type_visibility"> [ndk_public]</span>
24400
24401
24402               <span class="entry_type_hwlevel">[legacy] </span>
24403
24404
24405
24406
24407             </td> <!-- entry_type -->
24408
24409             <td class="entry_description">
24410               <p>List of unique IDs for detected faces.<wbr/></p>
24411             </td>
24412
24413             <td class="entry_units">
24414             </td>
24415
24416             <td class="entry_range">
24417             </td>
24418
24419             <td class="entry_hal_version">
24420               <p>3.<wbr/>2</p>
24421             </td>
24422
24423             <td class="entry_tags">
24424               <ul class="entry_tags">
24425                   <li><a href="#tag_BC">BC</a></li>
24426               </ul>
24427             </td>
24428
24429           </tr>
24430           <tr class="entries_header">
24431             <th class="th_details" colspan="6">Details</th>
24432           </tr>
24433           <tr class="entry_cont">
24434             <td class="entry_details" colspan="6">
24435               <p>Each detected face is given a unique ID that is valid for as long as the face is visible
24436 to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
24437 assigned a new ID.<wbr/></p>
24438 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
24439             </td>
24440           </tr>
24441
24442
24443           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24444            <!-- end of entry -->
24445         
24446                 
24447           <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
24448             <td class="entry_name
24449              " rowspan="3">
24450               android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
24451             </td>
24452             <td class="entry_type">
24453                 <span class="entry_type_name">int32</span>
24454                 <span class="entry_type_container">x</span>
24455
24456                 <span class="entry_type_array">
24457                   n x 6
24458                 </span>
24459               <span class="entry_type_visibility"> [ndk_public]</span>
24460
24461
24462               <span class="entry_type_hwlevel">[legacy] </span>
24463
24464
24465                 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
24466
24467
24468             </td> <!-- entry_type -->
24469
24470             <td class="entry_description">
24471               <p>List of landmarks for detected
24472 faces.<wbr/></p>
24473             </td>
24474
24475             <td class="entry_units">
24476             </td>
24477
24478             <td class="entry_range">
24479             </td>
24480
24481             <td class="entry_hal_version">
24482               <p>3.<wbr/>2</p>
24483             </td>
24484
24485             <td class="entry_tags">
24486               <ul class="entry_tags">
24487                   <li><a href="#tag_BC">BC</a></li>
24488               </ul>
24489             </td>
24490
24491           </tr>
24492           <tr class="entries_header">
24493             <th class="th_details" colspan="6">Details</th>
24494           </tr>
24495           <tr class="entry_cont">
24496             <td class="entry_details" colspan="6">
24497               <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
24498 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
24499 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
24500             </td>
24501           </tr>
24502
24503
24504           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24505            <!-- end of entry -->
24506         
24507                 
24508           <tr class="entry" id="dynamic_android.statistics.faceRectangles">
24509             <td class="entry_name
24510              " rowspan="3">
24511               android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
24512             </td>
24513             <td class="entry_type">
24514                 <span class="entry_type_name">int32</span>
24515                 <span class="entry_type_container">x</span>
24516
24517                 <span class="entry_type_array">
24518                   n x 4
24519                 </span>
24520               <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
24521
24522
24523               <span class="entry_type_hwlevel">[legacy] </span>
24524
24525
24526                 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
24527
24528
24529             </td> <!-- entry_type -->
24530
24531             <td class="entry_description">
24532               <p>List of the bounding rectangles for detected
24533 faces.<wbr/></p>
24534             </td>
24535
24536             <td class="entry_units">
24537             </td>
24538
24539             <td class="entry_range">
24540             </td>
24541
24542             <td class="entry_hal_version">
24543               <p>3.<wbr/>2</p>
24544             </td>
24545
24546             <td class="entry_tags">
24547               <ul class="entry_tags">
24548                   <li><a href="#tag_BC">BC</a></li>
24549               </ul>
24550             </td>
24551
24552           </tr>
24553           <tr class="entries_header">
24554             <th class="th_details" colspan="6">Details</th>
24555           </tr>
24556           <tr class="entry_cont">
24557             <td class="entry_details" colspan="6">
24558               <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
24559 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
24560 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
24561             </td>
24562           </tr>
24563
24564
24565           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24566            <!-- end of entry -->
24567         
24568                 
24569           <tr class="entry" id="dynamic_android.statistics.faceScores">
24570             <td class="entry_name
24571              " rowspan="5">
24572               android.<wbr/>statistics.<wbr/>face<wbr/>Scores
24573             </td>
24574             <td class="entry_type">
24575                 <span class="entry_type_name">byte</span>
24576                 <span class="entry_type_container">x</span>
24577
24578                 <span class="entry_type_array">
24579                   n
24580                 </span>
24581               <span class="entry_type_visibility"> [ndk_public]</span>
24582
24583
24584               <span class="entry_type_hwlevel">[legacy] </span>
24585
24586
24587
24588
24589             </td> <!-- entry_type -->
24590
24591             <td class="entry_description">
24592               <p>List of the face confidence scores for
24593 detected faces</p>
24594             </td>
24595
24596             <td class="entry_units">
24597             </td>
24598
24599             <td class="entry_range">
24600               <p>1-100</p>
24601             </td>
24602
24603             <td class="entry_hal_version">
24604               <p>3.<wbr/>2</p>
24605             </td>
24606
24607             <td class="entry_tags">
24608               <ul class="entry_tags">
24609                   <li><a href="#tag_BC">BC</a></li>
24610               </ul>
24611             </td>
24612
24613           </tr>
24614           <tr class="entries_header">
24615             <th class="th_details" colspan="6">Details</th>
24616           </tr>
24617           <tr class="entry_cont">
24618             <td class="entry_details" colspan="6">
24619               <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
24620             </td>
24621           </tr>
24622
24623           <tr class="entries_header">
24624             <th class="th_details" colspan="6">HAL Implementation Details</th>
24625           </tr>
24626           <tr class="entry_cont">
24627             <td class="entry_details" colspan="6">
24628               <p>The value should be meaningful (for example,<wbr/> setting 100 at
24629 all times is illegal).<wbr/></p>
24630             </td>
24631           </tr>
24632
24633           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24634            <!-- end of entry -->
24635         
24636                 
24637           <tr class="entry" id="dynamic_android.statistics.faces">
24638             <td class="entry_name
24639              " rowspan="3">
24640               android.<wbr/>statistics.<wbr/>faces
24641             </td>
24642             <td class="entry_type">
24643                 <span class="entry_type_name">int32</span>
24644                 <span class="entry_type_container">x</span>
24645
24646                 <span class="entry_type_array">
24647                   n
24648                 </span>
24649               <span class="entry_type_visibility"> [java_public as face]</span>
24650
24651               <span class="entry_type_synthetic">[synthetic] </span>
24652
24653               <span class="entry_type_hwlevel">[legacy] </span>
24654
24655
24656
24657
24658             </td> <!-- entry_type -->
24659
24660             <td class="entry_description">
24661               <p>List of the faces detected through camera face detection
24662 in this capture.<wbr/></p>
24663             </td>
24664
24665             <td class="entry_units">
24666             </td>
24667
24668             <td class="entry_range">
24669             </td>
24670
24671             <td class="entry_hal_version">
24672               <p>3.<wbr/>2</p>
24673             </td>
24674
24675             <td class="entry_tags">
24676             </td>
24677
24678           </tr>
24679           <tr class="entries_header">
24680             <th class="th_details" colspan="6">Details</th>
24681           </tr>
24682           <tr class="entry_cont">
24683             <td class="entry_details" colspan="6">
24684               <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>
24685             </td>
24686           </tr>
24687
24688
24689           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24690            <!-- end of entry -->
24691         
24692                 
24693           <tr class="entry" id="dynamic_android.statistics.histogram">
24694             <td class="entry_name
24695              " rowspan="3">
24696               android.<wbr/>statistics.<wbr/>histogram
24697             </td>
24698             <td class="entry_type">
24699                 <span class="entry_type_name">int32</span>
24700                 <span class="entry_type_container">x</span>
24701
24702                 <span class="entry_type_array">
24703                   n x 3
24704                 </span>
24705               <span class="entry_type_visibility"> [system]</span>
24706
24707
24708
24709
24710                 <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>
24711
24712
24713             </td> <!-- entry_type -->
24714
24715             <td class="entry_description">
24716               <p>A 3-channel histogram based on the raw
24717 sensor data</p>
24718             </td>
24719
24720             <td class="entry_units">
24721             </td>
24722
24723             <td class="entry_range">
24724             </td>
24725
24726             <td class="entry_hal_version">
24727               <p>3.<wbr/>2</p>
24728             </td>
24729
24730             <td class="entry_tags">
24731               <ul class="entry_tags">
24732                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24733               </ul>
24734             </td>
24735
24736           </tr>
24737           <tr class="entries_header">
24738             <th class="th_details" colspan="6">Details</th>
24739           </tr>
24740           <tr class="entry_cont">
24741             <td class="entry_details" colspan="6">
24742               <p>The k'th bucket (0-based) covers the input range
24743 (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/>
24744 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
24745 supported,<wbr/> all channels should have the same data</p>
24746             </td>
24747           </tr>
24748
24749
24750           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24751            <!-- end of entry -->
24752         
24753                 
24754           <tr class="entry" id="dynamic_android.statistics.histogramMode">
24755             <td class="entry_name
24756              " rowspan="1">
24757               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
24758             </td>
24759             <td class="entry_type">
24760                 <span class="entry_type_name entry_type_name_enum">byte</span>
24761
24762               <span class="entry_type_visibility"> [system as boolean]</span>
24763
24764
24765
24766
24767
24768                 <ul class="entry_type_enum">
24769                   <li>
24770                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24771                   </li>
24772                   <li>
24773                     <span class="entry_type_enum_name">ON (v3.2)</span>
24774                   </li>
24775                 </ul>
24776
24777             </td> <!-- entry_type -->
24778
24779             <td class="entry_description">
24780               <p>Operating mode for histogram
24781 generation</p>
24782             </td>
24783
24784             <td class="entry_units">
24785             </td>
24786
24787             <td class="entry_range">
24788             </td>
24789
24790             <td class="entry_hal_version">
24791               <p>3.<wbr/>2</p>
24792             </td>
24793
24794             <td class="entry_tags">
24795               <ul class="entry_tags">
24796                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24797               </ul>
24798             </td>
24799
24800           </tr>
24801
24802
24803           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24804            <!-- end of entry -->
24805         
24806                 
24807           <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
24808             <td class="entry_name
24809              " rowspan="3">
24810               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
24811             </td>
24812             <td class="entry_type">
24813                 <span class="entry_type_name">int32</span>
24814                 <span class="entry_type_container">x</span>
24815
24816                 <span class="entry_type_array">
24817                   n x m x 3
24818                 </span>
24819               <span class="entry_type_visibility"> [system]</span>
24820
24821
24822
24823
24824                 <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>
24825
24826
24827             </td> <!-- entry_type -->
24828
24829             <td class="entry_description">
24830               <p>A 3-channel sharpness map,<wbr/> based on the raw
24831 sensor data</p>
24832             </td>
24833
24834             <td class="entry_units">
24835             </td>
24836
24837             <td class="entry_range">
24838             </td>
24839
24840             <td class="entry_hal_version">
24841               <p>3.<wbr/>2</p>
24842             </td>
24843
24844             <td class="entry_tags">
24845               <ul class="entry_tags">
24846                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24847               </ul>
24848             </td>
24849
24850           </tr>
24851           <tr class="entries_header">
24852             <th class="th_details" colspan="6">Details</th>
24853           </tr>
24854           <tr class="entry_cont">
24855             <td class="entry_details" colspan="6">
24856               <p>If only a monochrome sharpness map is supported,<wbr/>
24857 all channels should have the same data</p>
24858             </td>
24859           </tr>
24860
24861
24862           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24863            <!-- end of entry -->
24864         
24865                 
24866           <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
24867             <td class="entry_name
24868              " rowspan="1">
24869               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
24870             </td>
24871             <td class="entry_type">
24872                 <span class="entry_type_name entry_type_name_enum">byte</span>
24873
24874               <span class="entry_type_visibility"> [system as boolean]</span>
24875
24876
24877
24878
24879
24880                 <ul class="entry_type_enum">
24881                   <li>
24882                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24883                   </li>
24884                   <li>
24885                     <span class="entry_type_enum_name">ON (v3.2)</span>
24886                   </li>
24887                 </ul>
24888
24889             </td> <!-- entry_type -->
24890
24891             <td class="entry_description">
24892               <p>Operating mode for sharpness map
24893 generation</p>
24894             </td>
24895
24896             <td class="entry_units">
24897             </td>
24898
24899             <td class="entry_range">
24900             </td>
24901
24902             <td class="entry_hal_version">
24903               <p>3.<wbr/>2</p>
24904             </td>
24905
24906             <td class="entry_tags">
24907               <ul class="entry_tags">
24908                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24909               </ul>
24910             </td>
24911
24912           </tr>
24913
24914
24915           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24916            <!-- end of entry -->
24917         
24918                 
24919           <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
24920             <td class="entry_name
24921              " rowspan="3">
24922               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
24923             </td>
24924             <td class="entry_type">
24925                 <span class="entry_type_name">byte</span>
24926
24927               <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
24928
24929
24930               <span class="entry_type_hwlevel">[full] </span>
24931
24932
24933
24934
24935             </td> <!-- entry_type -->
24936
24937             <td class="entry_description">
24938               <p>The shading map is a low-resolution floating-point map
24939 that lists the coefficients used to correct for vignetting,<wbr/> for each
24940 Bayer color channel.<wbr/></p>
24941             </td>
24942
24943             <td class="entry_units">
24944             </td>
24945
24946             <td class="entry_range">
24947               <p>Each gain factor is &gt;= 1</p>
24948             </td>
24949
24950             <td class="entry_hal_version">
24951               <p>3.<wbr/>2</p>
24952             </td>
24953
24954             <td class="entry_tags">
24955             </td>
24956
24957           </tr>
24958           <tr class="entries_header">
24959             <th class="th_details" colspan="6">Details</th>
24960           </tr>
24961           <tr class="entry_cont">
24962             <td class="entry_details" colspan="6">
24963               <p>The map provided here is the same map that is used by the camera device to
24964 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
24965 <p>When there is no lens shading correction applied to RAW
24966 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
24967 false),<wbr/> this map is the complete lens shading correction
24968 map; when there is some lens shading correction applied to
24969 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
24970 correction map that needs to be applied to get shading
24971 corrected images that match the camera device's output for
24972 non-RAW formats.<wbr/></p>
24973 <p>For a complete shading correction map,<wbr/> the least shaded
24974 section of the image will have a gain factor of 1; all
24975 other sections will have gains above 1.<wbr/></p>
24976 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
24977 will take into account the colorCorrection settings.<wbr/></p>
24978 <p>The shading map is for the entire active pixel array,<wbr/> and is not
24979 affected by the crop region specified in the request.<wbr/> Each shading map
24980 entry is the value of the shading compensation map over a specific
24981 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
24982 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
24983 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
24984 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
24985 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
24986 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
24987 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
24988 The shading map is stored in a fully interleaved format.<wbr/></p>
24989 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
24990 and will be smaller than 64x64.<wbr/></p>
24991 <p>As an example,<wbr/> given a very small map defined as:</p>
24992 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
24993 values =
24994 [ 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/>
24995     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/>
24996   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/>
24997     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/>
24998   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/>
24999     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 ]
25000 </code></pre>
25001 <p>The low-resolution scaling map images for each channel are
25002 (displayed using nearest-neighbor interpolation):</p>
25003 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25004 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25005 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25006 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25007 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25008 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
25009 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25010             </td>
25011           </tr>
25012
25013
25014           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25015            <!-- end of entry -->
25016         
25017                 
25018           <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
25019             <td class="entry_name
25020              " rowspan="5">
25021               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
25022             </td>
25023             <td class="entry_type">
25024                 <span class="entry_type_name">float</span>
25025                 <span class="entry_type_container">x</span>
25026
25027                 <span class="entry_type_array">
25028                   4 x n x m
25029                 </span>
25030               <span class="entry_type_visibility"> [ndk_public]</span>
25031
25032
25033               <span class="entry_type_hwlevel">[full] </span>
25034
25035
25036                 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
25037
25038
25039             </td> <!-- entry_type -->
25040
25041             <td class="entry_description">
25042               <p>The shading map is a low-resolution floating-point map
25043 that lists the coefficients used to correct for vignetting and color shading,<wbr/>
25044 for each Bayer color channel of RAW image data.<wbr/></p>
25045             </td>
25046
25047             <td class="entry_units">
25048             </td>
25049
25050             <td class="entry_range">
25051               <p>Each gain factor is &gt;= 1</p>
25052             </td>
25053
25054             <td class="entry_hal_version">
25055               <p>3.<wbr/>2</p>
25056             </td>
25057
25058             <td class="entry_tags">
25059             </td>
25060
25061           </tr>
25062           <tr class="entries_header">
25063             <th class="th_details" colspan="6">Details</th>
25064           </tr>
25065           <tr class="entry_cont">
25066             <td class="entry_details" colspan="6">
25067               <p>The map provided here is the same map that is used by the camera device to
25068 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25069 <p>When there is no lens shading correction applied to RAW
25070 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25071 false),<wbr/> this map is the complete lens shading correction
25072 map; when there is some lens shading correction applied to
25073 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
25074 correction map that needs to be applied to get shading
25075 corrected images that match the camera device's output for
25076 non-RAW formats.<wbr/></p>
25077 <p>For a complete shading correction map,<wbr/> the least shaded
25078 section of the image will have a gain factor of 1; all
25079 other sections will have gains above 1.<wbr/></p>
25080 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25081 will take into account the colorCorrection settings.<wbr/></p>
25082 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25083 affected by the crop region specified in the request.<wbr/> Each shading map
25084 entry is the value of the shading compensation map over a specific
25085 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
25086 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25087 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25088 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25089 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25090 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25091 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25092 The shading map is stored in a fully interleaved format,<wbr/> and its size
25093 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>
25094 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25095 and will be smaller than 64x64.<wbr/></p>
25096 <p>As an example,<wbr/> given a very small map defined as:</p>
25097 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
25098 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
25099 [ 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/>
25100     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/>
25101   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/>
25102     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/>
25103   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/>
25104     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 ]
25105 </code></pre>
25106 <p>The low-resolution scaling map images for each channel are
25107 (displayed using nearest-neighbor interpolation):</p>
25108 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25109 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25110 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25111 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25112 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25113 image of a gray wall (using bicubic interpolation for visual quality)
25114 as captured by the sensor gives:</p>
25115 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25116 <p>Note that the RAW image data might be subject to lens shading
25117 correction not reported on this map.<wbr/> Query
25118 <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
25119 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>
25120 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
25121 correction.<wbr/> In the case full lens shading correction is applied to RAW
25122 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
25123 In other words,<wbr/> the map reported in this key is the remaining lens shading
25124 that needs to be applied on the RAW image to get images without lens shading
25125 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
25126 formats.<wbr/></p>
25127             </td>
25128           </tr>
25129
25130           <tr class="entries_header">
25131             <th class="th_details" colspan="6">HAL Implementation Details</th>
25132           </tr>
25133           <tr class="entry_cont">
25134             <td class="entry_details" colspan="6">
25135               <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
25136 When AE and AWB are in AUTO modes
25137 (<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
25138 may have all the information it need to generate most accurate lens shading map.<wbr/> When
25139 AE or AWB are in manual mode
25140 (<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
25141 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
25142 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
25143 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
25144             </td>
25145           </tr>
25146
25147           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25148            <!-- end of entry -->
25149         
25150                 
25151           <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
25152             <td class="entry_name
25153                 entry_name_deprecated
25154              " rowspan="3">
25155               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
25156             </td>
25157             <td class="entry_type">
25158                 <span class="entry_type_name">float</span>
25159                 <span class="entry_type_container">x</span>
25160
25161                 <span class="entry_type_array">
25162                   4
25163                 </span>
25164               <span class="entry_type_visibility"> [hidden]</span>
25165
25166
25167
25168               <span class="entry_type_deprecated">[deprecated] </span>
25169
25170                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
25171
25172
25173             </td> <!-- entry_type -->
25174
25175             <td class="entry_description">
25176               <p>The best-fit color channel gains calculated
25177 by the camera device's statistics units for the current output frame.<wbr/></p>
25178             </td>
25179
25180             <td class="entry_units">
25181             </td>
25182
25183             <td class="entry_range">
25184               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25185             </td>
25186
25187             <td class="entry_hal_version">
25188               <p>3.<wbr/>2</p>
25189             </td>
25190
25191             <td class="entry_tags">
25192             </td>
25193
25194           </tr>
25195           <tr class="entries_header">
25196             <th class="th_details" colspan="6">Details</th>
25197           </tr>
25198           <tr class="entry_cont">
25199             <td class="entry_details" colspan="6">
25200               <p>This may be different than the gains used for this frame,<wbr/>
25201 since statistics processing on data from a new frame
25202 typically completes after the transform has already been
25203 applied to that frame.<wbr/></p>
25204 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
25205 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
25206 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25207 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25208             </td>
25209           </tr>
25210
25211
25212           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25213            <!-- end of entry -->
25214         
25215                 
25216           <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
25217             <td class="entry_name
25218                 entry_name_deprecated
25219              " rowspan="3">
25220               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
25221             </td>
25222             <td class="entry_type">
25223                 <span class="entry_type_name">rational</span>
25224                 <span class="entry_type_container">x</span>
25225
25226                 <span class="entry_type_array">
25227                   3 x 3
25228                 </span>
25229               <span class="entry_type_visibility"> [hidden]</span>
25230
25231
25232
25233               <span class="entry_type_deprecated">[deprecated] </span>
25234
25235                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
25236
25237
25238             </td> <!-- entry_type -->
25239
25240             <td class="entry_description">
25241               <p>The best-fit color transform matrix estimate
25242 calculated by the camera device's statistics units for the current
25243 output frame.<wbr/></p>
25244             </td>
25245
25246             <td class="entry_units">
25247             </td>
25248
25249             <td class="entry_range">
25250               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25251             </td>
25252
25253             <td class="entry_hal_version">
25254               <p>3.<wbr/>2</p>
25255             </td>
25256
25257             <td class="entry_tags">
25258             </td>
25259
25260           </tr>
25261           <tr class="entries_header">
25262             <th class="th_details" colspan="6">Details</th>
25263           </tr>
25264           <tr class="entry_cont">
25265             <td class="entry_details" colspan="6">
25266               <p>The camera device will provide the estimate from its
25267 statistics unit on the white balance transforms to use
25268 for the next frame.<wbr/> These are the values the camera device believes
25269 are the best fit for the current output frame.<wbr/> This may
25270 be different than the transform used for this frame,<wbr/> since
25271 statistics processing on data from a new frame typically
25272 completes after the transform has already been applied to
25273 that frame.<wbr/></p>
25274 <p>These estimates must be provided for all frames,<wbr/> even if
25275 capture settings and color transforms are set by the application.<wbr/></p>
25276 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25277 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25278             </td>
25279           </tr>
25280
25281
25282           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25283            <!-- end of entry -->
25284         
25285                 
25286           <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
25287             <td class="entry_name
25288              " rowspan="3">
25289               android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
25290             </td>
25291             <td class="entry_type">
25292                 <span class="entry_type_name entry_type_name_enum">byte</span>
25293
25294               <span class="entry_type_visibility"> [public]</span>
25295
25296
25297               <span class="entry_type_hwlevel">[full] </span>
25298
25299
25300
25301                 <ul class="entry_type_enum">
25302                   <li>
25303                     <span class="entry_type_enum_name">NONE (v3.2)</span>
25304                     <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
25305 in the current scene.<wbr/></p></span>
25306                   </li>
25307                   <li>
25308                     <span class="entry_type_enum_name">50HZ (v3.2)</span>
25309                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
25310 in the current scene.<wbr/></p></span>
25311                   </li>
25312                   <li>
25313                     <span class="entry_type_enum_name">60HZ (v3.2)</span>
25314                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
25315 in the current scene.<wbr/></p></span>
25316                   </li>
25317                 </ul>
25318
25319             </td> <!-- entry_type -->
25320
25321             <td class="entry_description">
25322               <p>The camera device estimated scene illumination lighting
25323 frequency.<wbr/></p>
25324             </td>
25325
25326             <td class="entry_units">
25327             </td>
25328
25329             <td class="entry_range">
25330             </td>
25331
25332             <td class="entry_hal_version">
25333               <p>3.<wbr/>2</p>
25334             </td>
25335
25336             <td class="entry_tags">
25337             </td>
25338
25339           </tr>
25340           <tr class="entries_header">
25341             <th class="th_details" colspan="6">Details</th>
25342           </tr>
25343           <tr class="entry_cont">
25344             <td class="entry_details" colspan="6">
25345               <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
25346 that depends on the local utility power standards.<wbr/> This flicker must be
25347 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
25348 The camera device uses this entry to tell the application what the scene
25349 illuminant frequency is.<wbr/></p>
25350 <p>When manual exposure control is enabled
25351 (<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> ==
25352 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
25353 antibanding,<wbr/> and the application can ensure it selects
25354 exposure times that do not cause banding issues by looking
25355 into this metadata field.<wbr/> See
25356 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
25357 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
25358             </td>
25359           </tr>
25360
25361
25362           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25363            <!-- end of entry -->
25364         
25365                 
25366           <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
25367             <td class="entry_name
25368              " rowspan="3">
25369               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
25370             </td>
25371             <td class="entry_type">
25372                 <span class="entry_type_name entry_type_name_enum">byte</span>
25373
25374               <span class="entry_type_visibility"> [public as boolean]</span>
25375
25376
25377
25378
25379
25380                 <ul class="entry_type_enum">
25381                   <li>
25382                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25383                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
25384                   </li>
25385                   <li>
25386                     <span class="entry_type_enum_name">ON (v3.2)</span>
25387                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
25388                   </li>
25389                 </ul>
25390
25391             </td> <!-- entry_type -->
25392
25393             <td class="entry_description">
25394               <p>Operating mode for hot pixel map generation.<wbr/></p>
25395             </td>
25396
25397             <td class="entry_units">
25398             </td>
25399
25400             <td class="entry_range">
25401               <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>
25402             </td>
25403
25404             <td class="entry_hal_version">
25405               <p>3.<wbr/>2</p>
25406             </td>
25407
25408             <td class="entry_tags">
25409               <ul class="entry_tags">
25410                   <li><a href="#tag_V1">V1</a></li>
25411                   <li><a href="#tag_RAW">RAW</a></li>
25412               </ul>
25413             </td>
25414
25415           </tr>
25416           <tr class="entries_header">
25417             <th class="th_details" colspan="6">Details</th>
25418           </tr>
25419           <tr class="entry_cont">
25420             <td class="entry_details" colspan="6">
25421               <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/>
25422 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
25423             </td>
25424           </tr>
25425
25426
25427           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25428            <!-- end of entry -->
25429         
25430                 
25431           <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
25432             <td class="entry_name
25433              " rowspan="5">
25434               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
25435             </td>
25436             <td class="entry_type">
25437                 <span class="entry_type_name">int32</span>
25438                 <span class="entry_type_container">x</span>
25439
25440                 <span class="entry_type_array">
25441                   2 x n
25442                 </span>
25443               <span class="entry_type_visibility"> [public as point]</span>
25444
25445
25446
25447
25448                 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
25449
25450
25451             </td> <!-- entry_type -->
25452
25453             <td class="entry_description">
25454               <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
25455             </td>
25456
25457             <td class="entry_units">
25458             </td>
25459
25460             <td class="entry_range">
25461               <p>n &lt;= number of pixels on the sensor.<wbr/>
25462 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
25463 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25464             </td>
25465
25466             <td class="entry_hal_version">
25467               <p>3.<wbr/>2</p>
25468             </td>
25469
25470             <td class="entry_tags">
25471               <ul class="entry_tags">
25472                   <li><a href="#tag_V1">V1</a></li>
25473                   <li><a href="#tag_RAW">RAW</a></li>
25474               </ul>
25475             </td>
25476
25477           </tr>
25478           <tr class="entries_header">
25479             <th class="th_details" colspan="6">Details</th>
25480           </tr>
25481           <tr class="entry_cont">
25482             <td class="entry_details" colspan="6">
25483               <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
25484 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
25485 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
25486 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/>
25487 This may include hot pixels that lie outside of the active array
25488 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25489             </td>
25490           </tr>
25491
25492           <tr class="entries_header">
25493             <th class="th_details" colspan="6">HAL Implementation Details</th>
25494           </tr>
25495           <tr class="entry_cont">
25496             <td class="entry_details" colspan="6">
25497               <p>A hotpixel map contains the coordinates of pixels on the camera
25498 sensor that do report valid values (usually due to defects in
25499 the camera sensor).<wbr/> This includes pixels that are stuck at certain
25500 values,<wbr/> or have a response that does not accuractly encode the
25501 incoming light from the scene.<wbr/></p>
25502 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
25503 pixels than actual pixels on the camera sensor.<wbr/></p>
25504             </td>
25505           </tr>
25506
25507           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25508            <!-- end of entry -->
25509         
25510                 
25511           <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
25512             <td class="entry_name
25513              " rowspan="3">
25514               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
25515             </td>
25516             <td class="entry_type">
25517                 <span class="entry_type_name entry_type_name_enum">byte</span>
25518
25519               <span class="entry_type_visibility"> [public]</span>
25520
25521
25522               <span class="entry_type_hwlevel">[full] </span>
25523
25524
25525
25526                 <ul class="entry_type_enum">
25527                   <li>
25528                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25529                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
25530                   </li>
25531                   <li>
25532                     <span class="entry_type_enum_name">ON (v3.2)</span>
25533                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
25534                   </li>
25535                 </ul>
25536
25537             </td> <!-- entry_type -->
25538
25539             <td class="entry_description">
25540               <p>Whether the camera device will output the lens
25541 shading map in output result metadata.<wbr/></p>
25542             </td>
25543
25544             <td class="entry_units">
25545             </td>
25546
25547             <td class="entry_range">
25548               <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>
25549             </td>
25550
25551             <td class="entry_hal_version">
25552               <p>3.<wbr/>2</p>
25553             </td>
25554
25555             <td class="entry_tags">
25556               <ul class="entry_tags">
25557                   <li><a href="#tag_RAW">RAW</a></li>
25558               </ul>
25559             </td>
25560
25561           </tr>
25562           <tr class="entries_header">
25563             <th class="th_details" colspan="6">Details</th>
25564           </tr>
25565           <tr class="entry_cont">
25566             <td class="entry_details" colspan="6">
25567               <p>When set to ON,<wbr/>
25568 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
25569 the output result metadata.<wbr/></p>
25570 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
25571             </td>
25572           </tr>
25573
25574
25575           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25576            <!-- end of entry -->
25577         
25578         
25579
25580       <!-- end of kind -->
25581       </tbody>
25582
25583   <!-- end of section -->
25584   <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
25585
25586
25587       <tr><td colspan="7" class="kind">controls</td></tr>
25588
25589       <thead class="entries_header">
25590         <tr>
25591           <th class="th_name">Property Name</th>
25592           <th class="th_type">Type</th>
25593           <th class="th_description">Description</th>
25594           <th class="th_units">Units</th>
25595           <th class="th_range">Range</th>
25596           <th class="th_hal_version">Initial HIDL HAL version</th>
25597           <th class="th_tags">Tags</th>
25598         </tr>
25599       </thead>
25600
25601       <tbody>
25602
25603         
25604
25605         
25606
25607         
25608
25609         
25610
25611                 
25612           <tr class="entry" id="controls_android.tonemap.curveBlue">
25613             <td class="entry_name
25614              " rowspan="3">
25615               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
25616             </td>
25617             <td class="entry_type">
25618                 <span class="entry_type_name">float</span>
25619                 <span class="entry_type_container">x</span>
25620
25621                 <span class="entry_type_array">
25622                   n x 2
25623                 </span>
25624               <span class="entry_type_visibility"> [ndk_public]</span>
25625
25626
25627               <span class="entry_type_hwlevel">[full] </span>
25628
25629
25630                 <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>
25631
25632
25633             </td> <!-- entry_type -->
25634
25635             <td class="entry_description">
25636               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
25637 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25638 CONTRAST_<wbr/>CURVE.<wbr/></p>
25639             </td>
25640
25641             <td class="entry_units">
25642             </td>
25643
25644             <td class="entry_range">
25645             </td>
25646
25647             <td class="entry_hal_version">
25648               <p>3.<wbr/>2</p>
25649             </td>
25650
25651             <td class="entry_tags">
25652             </td>
25653
25654           </tr>
25655           <tr class="entries_header">
25656             <th class="th_details" colspan="6">Details</th>
25657           </tr>
25658           <tr class="entry_cont">
25659             <td class="entry_details" colspan="6">
25660               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
25661             </td>
25662           </tr>
25663
25664
25665           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25666            <!-- end of entry -->
25667         
25668                 
25669           <tr class="entry" id="controls_android.tonemap.curveGreen">
25670             <td class="entry_name
25671              " rowspan="3">
25672               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
25673             </td>
25674             <td class="entry_type">
25675                 <span class="entry_type_name">float</span>
25676                 <span class="entry_type_container">x</span>
25677
25678                 <span class="entry_type_array">
25679                   n x 2
25680                 </span>
25681               <span class="entry_type_visibility"> [ndk_public]</span>
25682
25683
25684               <span class="entry_type_hwlevel">[full] </span>
25685
25686
25687                 <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>
25688
25689
25690             </td> <!-- entry_type -->
25691
25692             <td class="entry_description">
25693               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
25694 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25695 CONTRAST_<wbr/>CURVE.<wbr/></p>
25696             </td>
25697
25698             <td class="entry_units">
25699             </td>
25700
25701             <td class="entry_range">
25702             </td>
25703
25704             <td class="entry_hal_version">
25705               <p>3.<wbr/>2</p>
25706             </td>
25707
25708             <td class="entry_tags">
25709             </td>
25710
25711           </tr>
25712           <tr class="entries_header">
25713             <th class="th_details" colspan="6">Details</th>
25714           </tr>
25715           <tr class="entry_cont">
25716             <td class="entry_details" colspan="6">
25717               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
25718             </td>
25719           </tr>
25720
25721
25722           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25723            <!-- end of entry -->
25724         
25725                 
25726           <tr class="entry" id="controls_android.tonemap.curveRed">
25727             <td class="entry_name
25728              " rowspan="5">
25729               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
25730             </td>
25731             <td class="entry_type">
25732                 <span class="entry_type_name">float</span>
25733                 <span class="entry_type_container">x</span>
25734
25735                 <span class="entry_type_array">
25736                   n x 2
25737                 </span>
25738               <span class="entry_type_visibility"> [ndk_public]</span>
25739
25740
25741               <span class="entry_type_hwlevel">[full] </span>
25742
25743
25744                 <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>
25745
25746
25747             </td> <!-- entry_type -->
25748
25749             <td class="entry_description">
25750               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
25751 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25752 CONTRAST_<wbr/>CURVE.<wbr/></p>
25753             </td>
25754
25755             <td class="entry_units">
25756             </td>
25757
25758             <td class="entry_range">
25759               <p>0-1 on both input and output coordinates,<wbr/> normalized
25760 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
25761             </td>
25762
25763             <td class="entry_hal_version">
25764               <p>3.<wbr/>2</p>
25765             </td>
25766
25767             <td class="entry_tags">
25768             </td>
25769
25770           </tr>
25771           <tr class="entries_header">
25772             <th class="th_details" colspan="6">Details</th>
25773           </tr>
25774           <tr class="entry_cont">
25775             <td class="entry_details" colspan="6">
25776               <p>Each channel's curve is defined by an array of control points:</p>
25777 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
25778   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
25779 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
25780 <p>These are sorted in order of increasing <code>Pin</code>; it is
25781 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
25782 define a complete mapping.<wbr/> For input values between control points,<wbr/>
25783 the camera device must linearly interpolate between the control
25784 points.<wbr/></p>
25785 <p>Each curve can have an independent number of points,<wbr/> and the number
25786 of points can be less than max (that is,<wbr/> the request doesn't have to
25787 always provide a curve with number of points equivalent to
25788 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
25789 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
25790 only specify the red channel and the precision is limited to 4
25791 digits,<wbr/> for conciseness.<wbr/></p>
25792 <p>Linear mapping:</p>
25793 <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 ]
25794 </code></pre>
25795 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
25796 <p>Invert mapping:</p>
25797 <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 ]
25798 </code></pre>
25799 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
25800 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
25801 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
25802   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/>
25803   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/>
25804   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/>
25805   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 ]
25806 </code></pre>
25807 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
25808 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
25809 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
25810   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/>
25811   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/>
25812   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/>
25813   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 ]
25814 </code></pre>
25815 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25816             </td>
25817           </tr>
25818
25819           <tr class="entries_header">
25820             <th class="th_details" colspan="6">HAL Implementation Details</th>
25821           </tr>
25822           <tr class="entry_cont">
25823             <td class="entry_details" colspan="6">
25824               <p>For good quality of mapping,<wbr/> at least 128 control points are
25825 preferred.<wbr/></p>
25826 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
25827 control points used as are available.<wbr/></p>
25828             </td>
25829           </tr>
25830
25831           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25832            <!-- end of entry -->
25833         
25834                 
25835           <tr class="entry" id="controls_android.tonemap.curve">
25836             <td class="entry_name
25837              " rowspan="5">
25838               android.<wbr/>tonemap.<wbr/>curve
25839             </td>
25840             <td class="entry_type">
25841                 <span class="entry_type_name">float</span>
25842
25843               <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
25844
25845               <span class="entry_type_synthetic">[synthetic] </span>
25846
25847               <span class="entry_type_hwlevel">[full] </span>
25848
25849
25850
25851
25852             </td> <!-- entry_type -->
25853
25854             <td class="entry_description">
25855               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
25856 is CONTRAST_<wbr/>CURVE.<wbr/></p>
25857             </td>
25858
25859             <td class="entry_units">
25860             </td>
25861
25862             <td class="entry_range">
25863             </td>
25864
25865             <td class="entry_hal_version">
25866               <p>3.<wbr/>2</p>
25867             </td>
25868
25869             <td class="entry_tags">
25870             </td>
25871
25872           </tr>
25873           <tr class="entries_header">
25874             <th class="th_details" colspan="6">Details</th>
25875           </tr>
25876           <tr class="entry_cont">
25877             <td class="entry_details" colspan="6">
25878               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
25879 channels respectively.<wbr/> The following example uses the red channel as an
25880 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
25881 Each channel's curve is defined by an array of control points:</p>
25882 <pre><code>curveRed =
25883   [ 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) ]
25884 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
25885 <p>These are sorted in order of increasing <code>Pin</code>; it is always
25886 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
25887 define a complete mapping.<wbr/> For input values between control points,<wbr/>
25888 the camera device must linearly interpolate between the control
25889 points.<wbr/></p>
25890 <p>Each curve can have an independent number of points,<wbr/> and the number
25891 of points can be less than max (that is,<wbr/> the request doesn't have to
25892 always provide a curve with number of points equivalent to
25893 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
25894 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
25895 only specify the red channel and the precision is limited to 4
25896 digits,<wbr/> for conciseness.<wbr/></p>
25897 <p>Linear mapping:</p>
25898 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
25899 </code></pre>
25900 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
25901 <p>Invert mapping:</p>
25902 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
25903 </code></pre>
25904 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
25905 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
25906 <pre><code>curveRed = [
25907   (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/>
25908   (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/>
25909   (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/>
25910   (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) ]
25911 </code></pre>
25912 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
25913 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
25914 <pre><code>curveRed = [
25915   (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/>
25916   (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/>
25917   (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/>
25918   (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) ]
25919 </code></pre>
25920 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25921             </td>
25922           </tr>
25923
25924           <tr class="entries_header">
25925             <th class="th_details" colspan="6">HAL Implementation Details</th>
25926           </tr>
25927           <tr class="entry_cont">
25928             <td class="entry_details" colspan="6">
25929               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
25930 curveBlue entries.<wbr/></p>
25931             </td>
25932           </tr>
25933
25934           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25935            <!-- end of entry -->
25936         
25937                 
25938           <tr class="entry" id="controls_android.tonemap.mode">
25939             <td class="entry_name
25940              " rowspan="3">
25941               android.<wbr/>tonemap.<wbr/>mode
25942             </td>
25943             <td class="entry_type">
25944                 <span class="entry_type_name entry_type_name_enum">byte</span>
25945
25946               <span class="entry_type_visibility"> [public]</span>
25947
25948
25949               <span class="entry_type_hwlevel">[full] </span>
25950
25951
25952
25953                 <ul class="entry_type_enum">
25954                   <li>
25955                     <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
25956                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
25957 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
25958 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
25959 for applying the tonemapping curve specified by
25960 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
25961 <p>Must not slow down frame rate relative to raw
25962 sensor output.<wbr/></p></span>
25963                   </li>
25964                   <li>
25965                     <span class="entry_type_enum_name">FAST (v3.2)</span>
25966                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
25967 reducing frame rate compared to raw sensor output.<wbr/></p></span>
25968                   </li>
25969                   <li>
25970                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
25971                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
25972 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
25973                   </li>
25974                   <li>
25975                     <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
25976                     <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
25977 tonemapping.<wbr/></p>
25978 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
25979 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
25980 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
25981                   </li>
25982                   <li>
25983                     <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
25984                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
25985 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
25986 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
25987 for applying the tonemapping curve specified by
25988 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
25989 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
25990                   </li>
25991                 </ul>
25992
25993             </td> <!-- entry_type -->
25994
25995             <td class="entry_description">
25996               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
25997             </td>
25998
25999             <td class="entry_units">
26000             </td>
26001
26002             <td class="entry_range">
26003               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
26004             </td>
26005
26006             <td class="entry_hal_version">
26007               <p>3.<wbr/>2</p>
26008             </td>
26009
26010             <td class="entry_tags">
26011             </td>
26012
26013           </tr>
26014           <tr class="entries_header">
26015             <th class="th_details" colspan="6">Details</th>
26016           </tr>
26017           <tr class="entry_cont">
26018             <td class="entry_details" colspan="6">
26019               <p>When switching to an application-defined contrast curve by setting
26020 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
26021 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
26022 mapping from input high-bit-depth pixel value to the output
26023 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
26024 and output may change depending on the camera pipeline,<wbr/> the values
26025 are specified by normalized floating-point numbers.<wbr/></p>
26026 <p>More-complex color mapping operations such as 3D color look-up
26027 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
26028 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26029 CONTRAST_<wbr/>CURVE.<wbr/></p>
26030 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
26031 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
26032 These values are always available,<wbr/> and as close as possible to the
26033 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
26034 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
26035 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
26036 roughly the same.<wbr/></p>
26037             </td>
26038           </tr>
26039
26040
26041           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26042            <!-- end of entry -->
26043         
26044                 
26045           <tr class="entry" id="controls_android.tonemap.gamma">
26046             <td class="entry_name
26047              " rowspan="3">
26048               android.<wbr/>tonemap.<wbr/>gamma
26049             </td>
26050             <td class="entry_type">
26051                 <span class="entry_type_name">float</span>
26052
26053               <span class="entry_type_visibility"> [public]</span>
26054
26055
26056
26057
26058
26059
26060             </td> <!-- entry_type -->
26061
26062             <td class="entry_description">
26063               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26064 GAMMA_<wbr/>VALUE</p>
26065             </td>
26066
26067             <td class="entry_units">
26068             </td>
26069
26070             <td class="entry_range">
26071             </td>
26072
26073             <td class="entry_hal_version">
26074               <p>3.<wbr/>2</p>
26075             </td>
26076
26077             <td class="entry_tags">
26078             </td>
26079
26080           </tr>
26081           <tr class="entries_header">
26082             <th class="th_details" colspan="6">Details</th>
26083           </tr>
26084           <tr class="entry_cont">
26085             <td class="entry_details" colspan="6">
26086               <p>The tonemap curve will be defined the following formula:
26087 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
26088 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
26089 pow is the power function and gamma is the gamma value specified by this
26090 key.<wbr/></p>
26091 <p>The same curve will be applied to all color channels.<wbr/> The camera device
26092 may clip the input gamma value to its supported range.<wbr/> The actual applied
26093 value will be returned in capture result.<wbr/></p>
26094 <p>The valid range of gamma value varies on different devices,<wbr/> but values
26095 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
26096             </td>
26097           </tr>
26098
26099
26100           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26101            <!-- end of entry -->
26102         
26103                 
26104           <tr class="entry" id="controls_android.tonemap.presetCurve">
26105             <td class="entry_name
26106              " rowspan="3">
26107               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
26108             </td>
26109             <td class="entry_type">
26110                 <span class="entry_type_name entry_type_name_enum">byte</span>
26111
26112               <span class="entry_type_visibility"> [public]</span>
26113
26114
26115
26116
26117
26118                 <ul class="entry_type_enum">
26119                   <li>
26120                     <span class="entry_type_enum_name">SRGB (v3.2)</span>
26121                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
26122                   </li>
26123                   <li>
26124                     <span class="entry_type_enum_name">REC709 (v3.2)</span>
26125                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
26126                   </li>
26127                 </ul>
26128
26129             </td> <!-- entry_type -->
26130
26131             <td class="entry_description">
26132               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26133 PRESET_<wbr/>CURVE</p>
26134             </td>
26135
26136             <td class="entry_units">
26137             </td>
26138
26139             <td class="entry_range">
26140             </td>
26141
26142             <td class="entry_hal_version">
26143               <p>3.<wbr/>2</p>
26144             </td>
26145
26146             <td class="entry_tags">
26147             </td>
26148
26149           </tr>
26150           <tr class="entries_header">
26151             <th class="th_details" colspan="6">Details</th>
26152           </tr>
26153           <tr class="entry_cont">
26154             <td class="entry_details" colspan="6">
26155               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
26156 <p>sRGB (approximated by 16 control points):</p>
26157 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26158 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
26159 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
26160 <p>Note that above figures show a 16 control points approximation of preset
26161 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
26162             </td>
26163           </tr>
26164
26165
26166           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26167            <!-- end of entry -->
26168         
26169         
26170
26171       <!-- end of kind -->
26172       </tbody>
26173       <tr><td colspan="7" class="kind">static</td></tr>
26174
26175       <thead class="entries_header">
26176         <tr>
26177           <th class="th_name">Property Name</th>
26178           <th class="th_type">Type</th>
26179           <th class="th_description">Description</th>
26180           <th class="th_units">Units</th>
26181           <th class="th_range">Range</th>
26182           <th class="th_hal_version">Initial HIDL HAL version</th>
26183           <th class="th_tags">Tags</th>
26184         </tr>
26185       </thead>
26186
26187       <tbody>
26188
26189         
26190
26191         
26192
26193         
26194
26195         
26196
26197                 
26198           <tr class="entry" id="static_android.tonemap.maxCurvePoints">
26199             <td class="entry_name
26200              " rowspan="5">
26201               android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
26202             </td>
26203             <td class="entry_type">
26204                 <span class="entry_type_name">int32</span>
26205
26206               <span class="entry_type_visibility"> [public]</span>
26207
26208
26209               <span class="entry_type_hwlevel">[full] </span>
26210
26211
26212
26213
26214             </td> <!-- entry_type -->
26215
26216             <td class="entry_description">
26217               <p>Maximum number of supported points in the
26218 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26219             </td>
26220
26221             <td class="entry_units">
26222             </td>
26223
26224             <td class="entry_range">
26225             </td>
26226
26227             <td class="entry_hal_version">
26228               <p>3.<wbr/>2</p>
26229             </td>
26230
26231             <td class="entry_tags">
26232             </td>
26233
26234           </tr>
26235           <tr class="entries_header">
26236             <th class="th_details" colspan="6">Details</th>
26237           </tr>
26238           <tr class="entry_cont">
26239             <td class="entry_details" colspan="6">
26240               <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
26241 less than this maximum,<wbr/> the camera device will resample the curve to its internal
26242 representation,<wbr/> using linear interpolation.<wbr/></p>
26243 <p>The output curves in the result metadata may have a different number
26244 of points than the input curves,<wbr/> and will represent the actual
26245 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
26246             </td>
26247           </tr>
26248
26249           <tr class="entries_header">
26250             <th class="th_details" colspan="6">HAL Implementation Details</th>
26251           </tr>
26252           <tr class="entry_cont">
26253             <td class="entry_details" colspan="6">
26254               <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
26255             </td>
26256           </tr>
26257
26258           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26259            <!-- end of entry -->
26260         
26261                 
26262           <tr class="entry" id="static_android.tonemap.availableToneMapModes">
26263             <td class="entry_name
26264              " rowspan="5">
26265               android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
26266             </td>
26267             <td class="entry_type">
26268                 <span class="entry_type_name">byte</span>
26269                 <span class="entry_type_container">x</span>
26270
26271                 <span class="entry_type_array">
26272                   n
26273                 </span>
26274               <span class="entry_type_visibility"> [public as enumList]</span>
26275
26276
26277               <span class="entry_type_hwlevel">[full] </span>
26278
26279
26280                 <div class="entry_type_notes">list of enums</div>
26281
26282
26283             </td> <!-- entry_type -->
26284
26285             <td class="entry_description">
26286               <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
26287 device.<wbr/></p>
26288             </td>
26289
26290             <td class="entry_units">
26291             </td>
26292
26293             <td class="entry_range">
26294               <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
26295             </td>
26296
26297             <td class="entry_hal_version">
26298               <p>3.<wbr/>2</p>
26299             </td>
26300
26301             <td class="entry_tags">
26302             </td>
26303
26304           </tr>
26305           <tr class="entries_header">
26306             <th class="th_details" colspan="6">Details</th>
26307           </tr>
26308           <tr class="entry_cont">
26309             <td class="entry_details" colspan="6">
26310               <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
26311 at least one of below mode combinations:</p>
26312 <ul>
26313 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
26314 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
26315 </ul>
26316 <p>This includes all FULL level devices.<wbr/></p>
26317             </td>
26318           </tr>
26319
26320           <tr class="entries_header">
26321             <th class="th_details" colspan="6">HAL Implementation Details</th>
26322           </tr>
26323           <tr class="entry_cont">
26324             <td class="entry_details" colspan="6">
26325               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
26326 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
26327 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
26328 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
26329             </td>
26330           </tr>
26331
26332           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26333            <!-- end of entry -->
26334         
26335         
26336
26337       <!-- end of kind -->
26338       </tbody>
26339       <tr><td colspan="7" class="kind">dynamic</td></tr>
26340
26341       <thead class="entries_header">
26342         <tr>
26343           <th class="th_name">Property Name</th>
26344           <th class="th_type">Type</th>
26345           <th class="th_description">Description</th>
26346           <th class="th_units">Units</th>
26347           <th class="th_range">Range</th>
26348           <th class="th_hal_version">Initial HIDL HAL version</th>
26349           <th class="th_tags">Tags</th>
26350         </tr>
26351       </thead>
26352
26353       <tbody>
26354
26355         
26356
26357         
26358
26359         
26360
26361         
26362
26363                 
26364           <tr class="entry" id="dynamic_android.tonemap.curveBlue">
26365             <td class="entry_name
26366              " rowspan="3">
26367               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26368             </td>
26369             <td class="entry_type">
26370                 <span class="entry_type_name">float</span>
26371                 <span class="entry_type_container">x</span>
26372
26373                 <span class="entry_type_array">
26374                   n x 2
26375                 </span>
26376               <span class="entry_type_visibility"> [ndk_public]</span>
26377
26378
26379               <span class="entry_type_hwlevel">[full] </span>
26380
26381
26382                 <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>
26383
26384
26385             </td> <!-- entry_type -->
26386
26387             <td class="entry_description">
26388               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
26389 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26390 CONTRAST_<wbr/>CURVE.<wbr/></p>
26391             </td>
26392
26393             <td class="entry_units">
26394             </td>
26395
26396             <td class="entry_range">
26397             </td>
26398
26399             <td class="entry_hal_version">
26400               <p>3.<wbr/>2</p>
26401             </td>
26402
26403             <td class="entry_tags">
26404             </td>
26405
26406           </tr>
26407           <tr class="entries_header">
26408             <th class="th_details" colspan="6">Details</th>
26409           </tr>
26410           <tr class="entry_cont">
26411             <td class="entry_details" colspan="6">
26412               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26413             </td>
26414           </tr>
26415
26416
26417           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26418            <!-- end of entry -->
26419         
26420                 
26421           <tr class="entry" id="dynamic_android.tonemap.curveGreen">
26422             <td class="entry_name
26423              " rowspan="3">
26424               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
26425             </td>
26426             <td class="entry_type">
26427                 <span class="entry_type_name">float</span>
26428                 <span class="entry_type_container">x</span>
26429
26430                 <span class="entry_type_array">
26431                   n x 2
26432                 </span>
26433               <span class="entry_type_visibility"> [ndk_public]</span>
26434
26435
26436               <span class="entry_type_hwlevel">[full] </span>
26437
26438
26439                 <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>
26440
26441
26442             </td> <!-- entry_type -->
26443
26444             <td class="entry_description">
26445               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
26446 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26447 CONTRAST_<wbr/>CURVE.<wbr/></p>
26448             </td>
26449
26450             <td class="entry_units">
26451             </td>
26452
26453             <td class="entry_range">
26454             </td>
26455
26456             <td class="entry_hal_version">
26457               <p>3.<wbr/>2</p>
26458             </td>
26459
26460             <td class="entry_tags">
26461             </td>
26462
26463           </tr>
26464           <tr class="entries_header">
26465             <th class="th_details" colspan="6">Details</th>
26466           </tr>
26467           <tr class="entry_cont">
26468             <td class="entry_details" colspan="6">
26469               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26470             </td>
26471           </tr>
26472
26473
26474           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26475            <!-- end of entry -->
26476         
26477                 
26478           <tr class="entry" id="dynamic_android.tonemap.curveRed">
26479             <td class="entry_name
26480              " rowspan="5">
26481               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
26482             </td>
26483             <td class="entry_type">
26484                 <span class="entry_type_name">float</span>
26485                 <span class="entry_type_container">x</span>
26486
26487                 <span class="entry_type_array">
26488                   n x 2
26489                 </span>
26490               <span class="entry_type_visibility"> [ndk_public]</span>
26491
26492
26493               <span class="entry_type_hwlevel">[full] </span>
26494
26495
26496                 <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>
26497
26498
26499             </td> <!-- entry_type -->
26500
26501             <td class="entry_description">
26502               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
26503 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26504 CONTRAST_<wbr/>CURVE.<wbr/></p>
26505             </td>
26506
26507             <td class="entry_units">
26508             </td>
26509
26510             <td class="entry_range">
26511               <p>0-1 on both input and output coordinates,<wbr/> normalized
26512 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
26513             </td>
26514
26515             <td class="entry_hal_version">
26516               <p>3.<wbr/>2</p>
26517             </td>
26518
26519             <td class="entry_tags">
26520             </td>
26521
26522           </tr>
26523           <tr class="entries_header">
26524             <th class="th_details" colspan="6">Details</th>
26525           </tr>
26526           <tr class="entry_cont">
26527             <td class="entry_details" colspan="6">
26528               <p>Each channel's curve is defined by an array of control points:</p>
26529 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
26530   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
26531 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26532 <p>These are sorted in order of increasing <code>Pin</code>; it is
26533 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26534 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26535 the camera device must linearly interpolate between the control
26536 points.<wbr/></p>
26537 <p>Each curve can have an independent number of points,<wbr/> and the number
26538 of points can be less than max (that is,<wbr/> the request doesn't have to
26539 always provide a curve with number of points equivalent to
26540 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26541 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26542 only specify the red channel and the precision is limited to 4
26543 digits,<wbr/> for conciseness.<wbr/></p>
26544 <p>Linear mapping:</p>
26545 <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 ]
26546 </code></pre>
26547 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26548 <p>Invert mapping:</p>
26549 <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 ]
26550 </code></pre>
26551 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26552 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26553 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26554   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/>
26555   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/>
26556   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/>
26557   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 ]
26558 </code></pre>
26559 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26560 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26561 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26562   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/>
26563   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/>
26564   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/>
26565   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 ]
26566 </code></pre>
26567 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26568             </td>
26569           </tr>
26570
26571           <tr class="entries_header">
26572             <th class="th_details" colspan="6">HAL Implementation Details</th>
26573           </tr>
26574           <tr class="entry_cont">
26575             <td class="entry_details" colspan="6">
26576               <p>For good quality of mapping,<wbr/> at least 128 control points are
26577 preferred.<wbr/></p>
26578 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
26579 control points used as are available.<wbr/></p>
26580             </td>
26581           </tr>
26582
26583           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26584            <!-- end of entry -->
26585         
26586                 
26587           <tr class="entry" id="dynamic_android.tonemap.curve">
26588             <td class="entry_name
26589              " rowspan="5">
26590               android.<wbr/>tonemap.<wbr/>curve
26591             </td>
26592             <td class="entry_type">
26593                 <span class="entry_type_name">float</span>
26594
26595               <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
26596
26597               <span class="entry_type_synthetic">[synthetic] </span>
26598
26599               <span class="entry_type_hwlevel">[full] </span>
26600
26601
26602
26603
26604             </td> <!-- entry_type -->
26605
26606             <td class="entry_description">
26607               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
26608 is CONTRAST_<wbr/>CURVE.<wbr/></p>
26609             </td>
26610
26611             <td class="entry_units">
26612             </td>
26613
26614             <td class="entry_range">
26615             </td>
26616
26617             <td class="entry_hal_version">
26618               <p>3.<wbr/>2</p>
26619             </td>
26620
26621             <td class="entry_tags">
26622             </td>
26623
26624           </tr>
26625           <tr class="entries_header">
26626             <th class="th_details" colspan="6">Details</th>
26627           </tr>
26628           <tr class="entry_cont">
26629             <td class="entry_details" colspan="6">
26630               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
26631 channels respectively.<wbr/> The following example uses the red channel as an
26632 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
26633 Each channel's curve is defined by an array of control points:</p>
26634 <pre><code>curveRed =
26635   [ 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) ]
26636 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26637 <p>These are sorted in order of increasing <code>Pin</code>; it is always
26638 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26639 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26640 the camera device must linearly interpolate between the control
26641 points.<wbr/></p>
26642 <p>Each curve can have an independent number of points,<wbr/> and the number
26643 of points can be less than max (that is,<wbr/> the request doesn't have to
26644 always provide a curve with number of points equivalent to
26645 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26646 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26647 only specify the red channel and the precision is limited to 4
26648 digits,<wbr/> for conciseness.<wbr/></p>
26649 <p>Linear mapping:</p>
26650 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
26651 </code></pre>
26652 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26653 <p>Invert mapping:</p>
26654 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
26655 </code></pre>
26656 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26657 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26658 <pre><code>curveRed = [
26659   (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/>
26660   (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/>
26661   (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/>
26662   (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) ]
26663 </code></pre>
26664 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26665 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26666 <pre><code>curveRed = [
26667   (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/>
26668   (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/>
26669   (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/>
26670   (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) ]
26671 </code></pre>
26672 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26673             </td>
26674           </tr>
26675
26676           <tr class="entries_header">
26677             <th class="th_details" colspan="6">HAL Implementation Details</th>
26678           </tr>
26679           <tr class="entry_cont">
26680             <td class="entry_details" colspan="6">
26681               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
26682 curveBlue entries.<wbr/></p>
26683             </td>
26684           </tr>
26685
26686           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26687            <!-- end of entry -->
26688         
26689                 
26690           <tr class="entry" id="dynamic_android.tonemap.mode">
26691             <td class="entry_name
26692              " rowspan="3">
26693               android.<wbr/>tonemap.<wbr/>mode
26694             </td>
26695             <td class="entry_type">
26696                 <span class="entry_type_name entry_type_name_enum">byte</span>
26697
26698               <span class="entry_type_visibility"> [public]</span>
26699
26700
26701               <span class="entry_type_hwlevel">[full] </span>
26702
26703
26704
26705                 <ul class="entry_type_enum">
26706                   <li>
26707                     <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
26708                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
26709 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
26710 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26711 for applying the tonemapping curve specified by
26712 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26713 <p>Must not slow down frame rate relative to raw
26714 sensor output.<wbr/></p></span>
26715                   </li>
26716                   <li>
26717                     <span class="entry_type_enum_name">FAST (v3.2)</span>
26718                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
26719 reducing frame rate compared to raw sensor output.<wbr/></p></span>
26720                   </li>
26721                   <li>
26722                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
26723                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
26724 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
26725                   </li>
26726                   <li>
26727                     <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
26728                     <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
26729 tonemapping.<wbr/></p>
26730 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26731 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
26732 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26733                   </li>
26734                   <li>
26735                     <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
26736                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
26737 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
26738 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26739 for applying the tonemapping curve specified by
26740 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
26741 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26742                   </li>
26743                 </ul>
26744
26745             </td> <!-- entry_type -->
26746
26747             <td class="entry_description">
26748               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
26749             </td>
26750
26751             <td class="entry_units">
26752             </td>
26753
26754             <td class="entry_range">
26755               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
26756             </td>
26757
26758             <td class="entry_hal_version">
26759               <p>3.<wbr/>2</p>
26760             </td>
26761
26762             <td class="entry_tags">
26763             </td>
26764
26765           </tr>
26766           <tr class="entries_header">
26767             <th class="th_details" colspan="6">Details</th>
26768           </tr>
26769           <tr class="entry_cont">
26770             <td class="entry_details" colspan="6">
26771               <p>When switching to an application-defined contrast curve by setting
26772 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
26773 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
26774 mapping from input high-bit-depth pixel value to the output
26775 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
26776 and output may change depending on the camera pipeline,<wbr/> the values
26777 are specified by normalized floating-point numbers.<wbr/></p>
26778 <p>More-complex color mapping operations such as 3D color look-up
26779 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
26780 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26781 CONTRAST_<wbr/>CURVE.<wbr/></p>
26782 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
26783 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
26784 These values are always available,<wbr/> and as close as possible to the
26785 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
26786 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
26787 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
26788 roughly the same.<wbr/></p>
26789             </td>
26790           </tr>
26791
26792
26793           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26794            <!-- end of entry -->
26795         
26796                 
26797           <tr class="entry" id="dynamic_android.tonemap.gamma">
26798             <td class="entry_name
26799              " rowspan="3">
26800               android.<wbr/>tonemap.<wbr/>gamma
26801             </td>
26802             <td class="entry_type">
26803                 <span class="entry_type_name">float</span>
26804
26805               <span class="entry_type_visibility"> [public]</span>
26806
26807
26808
26809
26810
26811
26812             </td> <!-- entry_type -->
26813
26814             <td class="entry_description">
26815               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26816 GAMMA_<wbr/>VALUE</p>
26817             </td>
26818
26819             <td class="entry_units">
26820             </td>
26821
26822             <td class="entry_range">
26823             </td>
26824
26825             <td class="entry_hal_version">
26826               <p>3.<wbr/>2</p>
26827             </td>
26828
26829             <td class="entry_tags">
26830             </td>
26831
26832           </tr>
26833           <tr class="entries_header">
26834             <th class="th_details" colspan="6">Details</th>
26835           </tr>
26836           <tr class="entry_cont">
26837             <td class="entry_details" colspan="6">
26838               <p>The tonemap curve will be defined the following formula:
26839 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
26840 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
26841 pow is the power function and gamma is the gamma value specified by this
26842 key.<wbr/></p>
26843 <p>The same curve will be applied to all color channels.<wbr/> The camera device
26844 may clip the input gamma value to its supported range.<wbr/> The actual applied
26845 value will be returned in capture result.<wbr/></p>
26846 <p>The valid range of gamma value varies on different devices,<wbr/> but values
26847 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
26848             </td>
26849           </tr>
26850
26851
26852           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26853            <!-- end of entry -->
26854         
26855                 
26856           <tr class="entry" id="dynamic_android.tonemap.presetCurve">
26857             <td class="entry_name
26858              " rowspan="3">
26859               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
26860             </td>
26861             <td class="entry_type">
26862                 <span class="entry_type_name entry_type_name_enum">byte</span>
26863
26864               <span class="entry_type_visibility"> [public]</span>
26865
26866
26867
26868
26869
26870                 <ul class="entry_type_enum">
26871                   <li>
26872                     <span class="entry_type_enum_name">SRGB (v3.2)</span>
26873                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
26874                   </li>
26875                   <li>
26876                     <span class="entry_type_enum_name">REC709 (v3.2)</span>
26877                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
26878                   </li>
26879                 </ul>
26880
26881             </td> <!-- entry_type -->
26882
26883             <td class="entry_description">
26884               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26885 PRESET_<wbr/>CURVE</p>
26886             </td>
26887
26888             <td class="entry_units">
26889             </td>
26890
26891             <td class="entry_range">
26892             </td>
26893
26894             <td class="entry_hal_version">
26895               <p>3.<wbr/>2</p>
26896             </td>
26897
26898             <td class="entry_tags">
26899             </td>
26900
26901           </tr>
26902           <tr class="entries_header">
26903             <th class="th_details" colspan="6">Details</th>
26904           </tr>
26905           <tr class="entry_cont">
26906             <td class="entry_details" colspan="6">
26907               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
26908 <p>sRGB (approximated by 16 control points):</p>
26909 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26910 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
26911 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
26912 <p>Note that above figures show a 16 control points approximation of preset
26913 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
26914             </td>
26915           </tr>
26916
26917
26918           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26919            <!-- end of entry -->
26920         
26921         
26922
26923       <!-- end of kind -->
26924       </tbody>
26925
26926   <!-- end of section -->
26927   <tr><td colspan="7" id="section_led" class="section">led</td></tr>
26928
26929
26930       <tr><td colspan="7" class="kind">controls</td></tr>
26931
26932       <thead class="entries_header">
26933         <tr>
26934           <th class="th_name">Property Name</th>
26935           <th class="th_type">Type</th>
26936           <th class="th_description">Description</th>
26937           <th class="th_units">Units</th>
26938           <th class="th_range">Range</th>
26939           <th class="th_hal_version">Initial HIDL HAL version</th>
26940           <th class="th_tags">Tags</th>
26941         </tr>
26942       </thead>
26943
26944       <tbody>
26945
26946         
26947
26948         
26949
26950         
26951
26952         
26953
26954                 
26955           <tr class="entry" id="controls_android.led.transmit">
26956             <td class="entry_name
26957              " rowspan="1">
26958               android.<wbr/>led.<wbr/>transmit
26959             </td>
26960             <td class="entry_type">
26961                 <span class="entry_type_name entry_type_name_enum">byte</span>
26962
26963               <span class="entry_type_visibility"> [hidden as boolean]</span>
26964
26965
26966
26967
26968
26969                 <ul class="entry_type_enum">
26970                   <li>
26971                     <span class="entry_type_enum_name">OFF (v3.2)</span>
26972                   </li>
26973                   <li>
26974                     <span class="entry_type_enum_name">ON (v3.2)</span>
26975                   </li>
26976                 </ul>
26977
26978             </td> <!-- entry_type -->
26979
26980             <td class="entry_description">
26981               <p>This LED is nominally used to indicate to the user
26982 that the camera is powered on and may be streaming images back to the
26983 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
26984 disable this when video is processed locally and not transmitted to
26985 any untrusted applications.<wbr/></p>
26986 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
26987 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
26988 data is stored locally on the device.<wbr/></p>
26989 <p>The LED <em>may</em> be off if a trusted application is using the data that
26990 doesn't violate the above rules.<wbr/></p>
26991             </td>
26992
26993             <td class="entry_units">
26994             </td>
26995
26996             <td class="entry_range">
26997             </td>
26998
26999             <td class="entry_hal_version">
27000               <p>3.<wbr/>2</p>
27001             </td>
27002
27003             <td class="entry_tags">
27004             </td>
27005
27006           </tr>
27007
27008
27009           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27010            <!-- end of entry -->
27011         
27012         
27013
27014       <!-- end of kind -->
27015       </tbody>
27016       <tr><td colspan="7" class="kind">dynamic</td></tr>
27017
27018       <thead class="entries_header">
27019         <tr>
27020           <th class="th_name">Property Name</th>
27021           <th class="th_type">Type</th>
27022           <th class="th_description">Description</th>
27023           <th class="th_units">Units</th>
27024           <th class="th_range">Range</th>
27025           <th class="th_hal_version">Initial HIDL HAL version</th>
27026           <th class="th_tags">Tags</th>
27027         </tr>
27028       </thead>
27029
27030       <tbody>
27031
27032         
27033
27034         
27035
27036         
27037
27038         
27039
27040                 
27041           <tr class="entry" id="dynamic_android.led.transmit">
27042             <td class="entry_name
27043              " rowspan="1">
27044               android.<wbr/>led.<wbr/>transmit
27045             </td>
27046             <td class="entry_type">
27047                 <span class="entry_type_name entry_type_name_enum">byte</span>
27048
27049               <span class="entry_type_visibility"> [hidden as boolean]</span>
27050
27051
27052
27053
27054
27055                 <ul class="entry_type_enum">
27056                   <li>
27057                     <span class="entry_type_enum_name">OFF (v3.2)</span>
27058                   </li>
27059                   <li>
27060                     <span class="entry_type_enum_name">ON (v3.2)</span>
27061                   </li>
27062                 </ul>
27063
27064             </td> <!-- entry_type -->
27065
27066             <td class="entry_description">
27067               <p>This LED is nominally used to indicate to the user
27068 that the camera is powered on and may be streaming images back to the
27069 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27070 disable this when video is processed locally and not transmitted to
27071 any untrusted applications.<wbr/></p>
27072 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27073 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27074 data is stored locally on the device.<wbr/></p>
27075 <p>The LED <em>may</em> be off if a trusted application is using the data that
27076 doesn't violate the above rules.<wbr/></p>
27077             </td>
27078
27079             <td class="entry_units">
27080             </td>
27081
27082             <td class="entry_range">
27083             </td>
27084
27085             <td class="entry_hal_version">
27086               <p>3.<wbr/>2</p>
27087             </td>
27088
27089             <td class="entry_tags">
27090             </td>
27091
27092           </tr>
27093
27094
27095           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27096            <!-- end of entry -->
27097         
27098         
27099
27100       <!-- end of kind -->
27101       </tbody>
27102       <tr><td colspan="7" class="kind">static</td></tr>
27103
27104       <thead class="entries_header">
27105         <tr>
27106           <th class="th_name">Property Name</th>
27107           <th class="th_type">Type</th>
27108           <th class="th_description">Description</th>
27109           <th class="th_units">Units</th>
27110           <th class="th_range">Range</th>
27111           <th class="th_hal_version">Initial HIDL HAL version</th>
27112           <th class="th_tags">Tags</th>
27113         </tr>
27114       </thead>
27115
27116       <tbody>
27117
27118         
27119
27120         
27121
27122         
27123
27124         
27125
27126                 
27127           <tr class="entry" id="static_android.led.availableLeds">
27128             <td class="entry_name
27129              " rowspan="1">
27130               android.<wbr/>led.<wbr/>available<wbr/>Leds
27131             </td>
27132             <td class="entry_type">
27133                 <span class="entry_type_name entry_type_name_enum">byte</span>
27134                 <span class="entry_type_container">x</span>
27135
27136                 <span class="entry_type_array">
27137                   n
27138                 </span>
27139               <span class="entry_type_visibility"> [hidden]</span>
27140
27141
27142
27143
27144
27145                 <ul class="entry_type_enum">
27146                   <li>
27147                     <span class="entry_type_enum_name">TRANSMIT (v3.2)</span>
27148                     <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>
27149                   </li>
27150                 </ul>
27151
27152             </td> <!-- entry_type -->
27153
27154             <td class="entry_description">
27155               <p>A list of camera LEDs that are available on this system.<wbr/></p>
27156             </td>
27157
27158             <td class="entry_units">
27159             </td>
27160
27161             <td class="entry_range">
27162             </td>
27163
27164             <td class="entry_hal_version">
27165               <p>3.<wbr/>2</p>
27166             </td>
27167
27168             <td class="entry_tags">
27169             </td>
27170
27171           </tr>
27172
27173
27174           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27175            <!-- end of entry -->
27176         
27177         
27178
27179       <!-- end of kind -->
27180       </tbody>
27181
27182   <!-- end of section -->
27183   <tr><td colspan="7" id="section_info" class="section">info</td></tr>
27184
27185
27186       <tr><td colspan="7" class="kind">static</td></tr>
27187
27188       <thead class="entries_header">
27189         <tr>
27190           <th class="th_name">Property Name</th>
27191           <th class="th_type">Type</th>
27192           <th class="th_description">Description</th>
27193           <th class="th_units">Units</th>
27194           <th class="th_range">Range</th>
27195           <th class="th_hal_version">Initial HIDL HAL version</th>
27196           <th class="th_tags">Tags</th>
27197         </tr>
27198       </thead>
27199
27200       <tbody>
27201
27202         
27203
27204         
27205
27206         
27207
27208         
27209
27210                 
27211           <tr class="entry" id="static_android.info.supportedHardwareLevel">
27212             <td class="entry_name
27213              " rowspan="5">
27214               android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
27215             </td>
27216             <td class="entry_type">
27217                 <span class="entry_type_name entry_type_name_enum">byte</span>
27218
27219               <span class="entry_type_visibility"> [public]</span>
27220
27221
27222               <span class="entry_type_hwlevel">[legacy] </span>
27223
27224
27225
27226                 <ul class="entry_type_enum">
27227                   <li>
27228                     <span class="entry_type_enum_name">LIMITED (v3.2)</span>
27229                     <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
27230 better.<wbr/></p>
27231 <p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
27232 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27233 <p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
27234 support for color image capture.<wbr/> The only exception is that the device may
27235 alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
27236 measurements and not color images.<wbr/></p>
27237 <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>
27238 to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
27239 capturing a high-quality still image.<wbr/></p>
27240 <p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
27241 required to support full-automatic operation and post-processing (<code>OFF</code> is not
27242 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
27243 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
27244 <p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
27245 can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
27246                   </li>
27247                   <li>
27248                     <span class="entry_type_enum_name">FULL (v3.2)</span>
27249                     <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
27250 <p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
27251 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27252 <p>A <code>FULL</code> device will support below capabilities:</p>
27253 <ul>
27254 <li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27255   <code>BURST_<wbr/>CAPTURE</code>)</li>
27256 <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>
27257 <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>
27258 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27259   <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
27260 <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>
27261 <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>
27262 </ul>
27263 <p>Note:
27264 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
27265 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
27266 23,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
27267                   </li>
27268                   <li>
27269                     <span class="entry_type_enum_name">LEGACY (v3.2)</span>
27270                     <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
27271 <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>
27272 <p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
27273 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
27274 No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
27275 <code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
27276 <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>
27277 devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
27278 as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/>  This may
27279 fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
27280 for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
27281 enable the flash.<wbr/></p></span>
27282                   </li>
27283                   <li>
27284                     <span class="entry_type_enum_name">3 (v3.2)</span>
27285                     <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
27286 FULL-level capabilities.<wbr/></p>
27287 <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
27288 <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>
27289 <p>The following additional capabilities are guaranteed to be supported:</p>
27290 <ul>
27291 <li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27292   <code>YUV_<wbr/>REPROCESSING</code>)</li>
27293 <li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27294   <code>RAW</code>)</li>
27295 </ul></span>
27296                   </li>
27297                 </ul>
27298
27299             </td> <!-- entry_type -->
27300
27301             <td class="entry_description">
27302               <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
27303             </td>
27304
27305             <td class="entry_units">
27306             </td>
27307
27308             <td class="entry_range">
27309             </td>
27310
27311             <td class="entry_hal_version">
27312               <p>3.<wbr/>2</p>
27313             </td>
27314
27315             <td class="entry_tags">
27316             </td>
27317
27318           </tr>
27319           <tr class="entries_header">
27320             <th class="th_details" colspan="6">Details</th>
27321           </tr>
27322           <tr class="entry_cont">
27323             <td class="entry_details" colspan="6">
27324               <p>The supported hardware level is a high-level description of the camera device's
27325 capabilities,<wbr/> summarizing several capabilities into one field.<wbr/>  Each level adds additional
27326 features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
27327 The ordering is <code>LEGACY &lt; LIMITED &lt; FULL &lt; LEVEL_<wbr/>3</code>.<wbr/></p>
27328 <p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
27329 numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
27330 the following code snippet can be used:</p>
27331 <pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
27332 boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
27333     int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
27334     if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
27335         return requiredLevel == deviceLevel;
27336     }
27337     //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
27338     return requiredLevel &lt;= deviceLevel;
27339 }
27340 </code></pre>
27341 <p>At a high level,<wbr/> the levels are:</p>
27342 <ul>
27343 <li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
27344   Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
27345 <li><code>LIMITED</code> devices represent the
27346   baseline feature set,<wbr/> and may also include additional capabilities that are
27347   subsets of <code>FULL</code>.<wbr/></li>
27348 <li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
27349   post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
27350 <li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
27351   with additional output stream configurations.<wbr/></li>
27352 </ul>
27353 <p>See the individual level enums for full descriptions of the supported capabilities.<wbr/>  The
27354 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
27355 finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
27356 ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
27357 <p>Some features are not part of any particular hardware level or capability and must be
27358 queried separately.<wbr/> These include:</p>
27359 <ul>
27360 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
27361 <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>
27362 <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>
27363 <li>Optical or electrical image stabilization
27364   (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
27365    <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
27366 </ul>
27367             </td>
27368           </tr>
27369
27370           <tr class="entries_header">
27371             <th class="th_details" colspan="6">HAL Implementation Details</th>
27372           </tr>
27373           <tr class="entry_cont">
27374             <td class="entry_details" colspan="6">
27375               <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
27376 FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
27377 <p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
27378 mode has hardware requirements roughly in line with those for a camera HAL device v1
27379 implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
27380 superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
27381 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
27382 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
27383 the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
27384 implemented by the camera framework code.<wbr/></p>
27385             </td>
27386           </tr>
27387
27388           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27389            <!-- end of entry -->
27390         
27391                 
27392           <tr class="entry" id="static_android.info.version">
27393             <td class="entry_name
27394              " rowspan="5">
27395               android.<wbr/>info.<wbr/>version
27396             </td>
27397             <td class="entry_type">
27398                 <span class="entry_type_name">byte</span>
27399
27400               <span class="entry_type_visibility"> [public as string]</span>
27401
27402
27403
27404
27405
27406
27407             </td> <!-- entry_type -->
27408
27409             <td class="entry_description">
27410               <p>A short string for manufacturer version information about the camera device,<wbr/> such as
27411 ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p>
27412             </td>
27413
27414             <td class="entry_units">
27415             </td>
27416
27417             <td class="entry_range">
27418             </td>
27419
27420             <td class="entry_hal_version">
27421               <p>3.<wbr/>3</p>
27422             </td>
27423
27424             <td class="entry_tags">
27425             </td>
27426
27427           </tr>
27428           <tr class="entries_header">
27429             <th class="th_details" colspan="6">Details</th>
27430           </tr>
27431           <tr class="entry_cont">
27432             <td class="entry_details" colspan="6">
27433               <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>
27434 in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the
27435 device.<wbr/></p>
27436             </td>
27437           </tr>
27438
27439           <tr class="entries_header">
27440             <th class="th_details" colspan="6">HAL Implementation Details</th>
27441           </tr>
27442           <tr class="entry_cont">
27443             <td class="entry_details" colspan="6">
27444               <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and
27445 whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/>
27446 It must not exceed 256 characters.<wbr/></p>
27447             </td>
27448           </tr>
27449
27450           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27451            <!-- end of entry -->
27452         
27453         
27454
27455       <!-- end of kind -->
27456       </tbody>
27457
27458   <!-- end of section -->
27459   <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
27460
27461
27462       <tr><td colspan="7" class="kind">controls</td></tr>
27463
27464       <thead class="entries_header">
27465         <tr>
27466           <th class="th_name">Property Name</th>
27467           <th class="th_type">Type</th>
27468           <th class="th_description">Description</th>
27469           <th class="th_units">Units</th>
27470           <th class="th_range">Range</th>
27471           <th class="th_hal_version">Initial HIDL HAL version</th>
27472           <th class="th_tags">Tags</th>
27473         </tr>
27474       </thead>
27475
27476       <tbody>
27477
27478         
27479
27480         
27481
27482         
27483
27484         
27485
27486                 
27487           <tr class="entry" id="controls_android.blackLevel.lock">
27488             <td class="entry_name
27489              " rowspan="5">
27490               android.<wbr/>black<wbr/>Level.<wbr/>lock
27491             </td>
27492             <td class="entry_type">
27493                 <span class="entry_type_name entry_type_name_enum">byte</span>
27494
27495               <span class="entry_type_visibility"> [public as boolean]</span>
27496
27497
27498               <span class="entry_type_hwlevel">[full] </span>
27499
27500
27501
27502                 <ul class="entry_type_enum">
27503                   <li>
27504                     <span class="entry_type_enum_name">OFF (v3.2)</span>
27505                   </li>
27506                   <li>
27507                     <span class="entry_type_enum_name">ON (v3.2)</span>
27508                   </li>
27509                 </ul>
27510
27511             </td> <!-- entry_type -->
27512
27513             <td class="entry_description">
27514               <p>Whether black-level compensation is locked
27515 to its current values,<wbr/> or is free to vary.<wbr/></p>
27516             </td>
27517
27518             <td class="entry_units">
27519             </td>
27520
27521             <td class="entry_range">
27522             </td>
27523
27524             <td class="entry_hal_version">
27525               <p>3.<wbr/>2</p>
27526             </td>
27527
27528             <td class="entry_tags">
27529               <ul class="entry_tags">
27530                   <li><a href="#tag_HAL2">HAL2</a></li>
27531               </ul>
27532             </td>
27533
27534           </tr>
27535           <tr class="entries_header">
27536             <th class="th_details" colspan="6">Details</th>
27537           </tr>
27538           <tr class="entry_cont">
27539             <td class="entry_details" colspan="6">
27540               <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
27541 compensation will not change until the lock is set to
27542 <code>false</code> (OFF).<wbr/></p>
27543 <p>Since changes to certain capture parameters (such as
27544 exposure time) may require resetting of black level
27545 compensation,<wbr/> the camera device must report whether setting
27546 the black level lock was successful in the output result
27547 metadata.<wbr/></p>
27548 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
27549 <ul>
27550 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
27551 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
27552 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
27553 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27554 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27555 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27556 </ul>
27557 <p>And the exposure change in Request 4 requires the camera
27558 device to reset the black level offsets,<wbr/> then the output
27559 result metadata is expected to be:</p>
27560 <ul>
27561 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
27562 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
27563 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
27564 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
27565 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27566 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
27567 </ul>
27568 <p>This indicates to the application that on frame 4,<wbr/> black
27569 levels were reset due to exposure value changes,<wbr/> and pixel
27570 values may not be consistent across captures.<wbr/></p>
27571 <p>The camera device will maintain the lock to the extent
27572 possible,<wbr/> only overriding the lock to OFF when changes to
27573 other request parameters require a black level recalculation
27574 or reset.<wbr/></p>
27575             </td>
27576           </tr>
27577
27578           <tr class="entries_header">
27579             <th class="th_details" colspan="6">HAL Implementation Details</th>
27580           </tr>
27581           <tr class="entry_cont">
27582             <td class="entry_details" colspan="6">
27583               <p>If for some reason black level locking is no longer possible
27584 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
27585 black level offsets to be recalculated),<wbr/> then the HAL must
27586 override this request (and it must report 'OFF' when this
27587 does happen) until the next capture for which locking is
27588 possible again.<wbr/></p>
27589             </td>
27590           </tr>
27591
27592           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27593            <!-- end of entry -->
27594         
27595         
27596
27597       <!-- end of kind -->
27598       </tbody>
27599       <tr><td colspan="7" class="kind">dynamic</td></tr>
27600
27601       <thead class="entries_header">
27602         <tr>
27603           <th class="th_name">Property Name</th>
27604           <th class="th_type">Type</th>
27605           <th class="th_description">Description</th>
27606           <th class="th_units">Units</th>
27607           <th class="th_range">Range</th>
27608           <th class="th_hal_version">Initial HIDL HAL version</th>
27609           <th class="th_tags">Tags</th>
27610         </tr>
27611       </thead>
27612
27613       <tbody>
27614
27615         
27616
27617         
27618
27619         
27620
27621         
27622
27623                 
27624           <tr class="entry" id="dynamic_android.blackLevel.lock">
27625             <td class="entry_name
27626              " rowspan="5">
27627               android.<wbr/>black<wbr/>Level.<wbr/>lock
27628             </td>
27629             <td class="entry_type">
27630                 <span class="entry_type_name entry_type_name_enum">byte</span>
27631
27632               <span class="entry_type_visibility"> [public as boolean]</span>
27633
27634
27635               <span class="entry_type_hwlevel">[full] </span>
27636
27637
27638
27639                 <ul class="entry_type_enum">
27640                   <li>
27641                     <span class="entry_type_enum_name">OFF (v3.2)</span>
27642                   </li>
27643                   <li>
27644                     <span class="entry_type_enum_name">ON (v3.2)</span>
27645                   </li>
27646                 </ul>
27647
27648             </td> <!-- entry_type -->
27649
27650             <td class="entry_description">
27651               <p>Whether black-level compensation is locked
27652 to its current values,<wbr/> or is free to vary.<wbr/></p>
27653             </td>
27654
27655             <td class="entry_units">
27656             </td>
27657
27658             <td class="entry_range">
27659             </td>
27660
27661             <td class="entry_hal_version">
27662               <p>3.<wbr/>2</p>
27663             </td>
27664
27665             <td class="entry_tags">
27666               <ul class="entry_tags">
27667                   <li><a href="#tag_HAL2">HAL2</a></li>
27668               </ul>
27669             </td>
27670
27671           </tr>
27672           <tr class="entries_header">
27673             <th class="th_details" colspan="6">Details</th>
27674           </tr>
27675           <tr class="entry_cont">
27676             <td class="entry_details" colspan="6">
27677               <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
27678 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
27679 a change in other capture settings forced the camera device to
27680 perform a black level reset.<wbr/></p>
27681             </td>
27682           </tr>
27683
27684           <tr class="entries_header">
27685             <th class="th_details" colspan="6">HAL Implementation Details</th>
27686           </tr>
27687           <tr class="entry_cont">
27688             <td class="entry_details" colspan="6">
27689               <p>If for some reason black level locking is no longer possible
27690 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
27691 black level offsets to be recalculated),<wbr/> then the HAL must
27692 override this request (and it must report 'OFF' when this
27693 does happen) until the next capture for which locking is
27694 possible again.<wbr/></p>
27695             </td>
27696           </tr>
27697
27698           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27699            <!-- end of entry -->
27700         
27701         
27702
27703       <!-- end of kind -->
27704       </tbody>
27705
27706   <!-- end of section -->
27707   <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
27708
27709
27710       <tr><td colspan="7" class="kind">dynamic</td></tr>
27711
27712       <thead class="entries_header">
27713         <tr>
27714           <th class="th_name">Property Name</th>
27715           <th class="th_type">Type</th>
27716           <th class="th_description">Description</th>
27717           <th class="th_units">Units</th>
27718           <th class="th_range">Range</th>
27719           <th class="th_hal_version">Initial HIDL HAL version</th>
27720           <th class="th_tags">Tags</th>
27721         </tr>
27722       </thead>
27723
27724       <tbody>
27725
27726         
27727
27728         
27729
27730         
27731
27732         
27733
27734                 
27735           <tr class="entry" id="dynamic_android.sync.frameNumber">
27736             <td class="entry_name
27737              " rowspan="5">
27738               android.<wbr/>sync.<wbr/>frame<wbr/>Number
27739             </td>
27740             <td class="entry_type">
27741                 <span class="entry_type_name entry_type_name_enum">int64</span>
27742
27743               <span class="entry_type_visibility"> [ndk_public]</span>
27744
27745
27746               <span class="entry_type_hwlevel">[legacy] </span>
27747
27748
27749
27750                 <ul class="entry_type_enum">
27751                   <li>
27752                     <span class="entry_type_enum_name">CONVERGING (v3.2)</span>
27753                     <span class="entry_type_enum_value">-1</span>
27754                     <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
27755 <p>Synchronization is in progress,<wbr/> and reading metadata from this
27756 result may include a mix of data that have taken effect since the
27757 last synchronization time.<wbr/></p>
27758 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
27759 this value will update to the actual frame number frame number
27760 the result is guaranteed to be synchronized to (as long as the
27761 request settings remain constant).<wbr/></p></span>
27762                   </li>
27763                   <li>
27764                     <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
27765                     <span class="entry_type_enum_value">-2</span>
27766                     <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
27767 <p>The result may have already converged,<wbr/> or it may be in
27768 progress.<wbr/>  Reading from this result may include some mix
27769 of settings from past requests.<wbr/></p>
27770 <p>After a settings change,<wbr/> the new settings will eventually all
27771 take effect for the output buffers and results.<wbr/> However,<wbr/> this
27772 value will not change when that happens.<wbr/> Altering settings
27773 rapidly may provide outcomes using mixes of settings from recent
27774 requests.<wbr/></p>
27775 <p>This value is intended primarily for backwards compatibility with
27776 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
27777                   </li>
27778                 </ul>
27779
27780             </td> <!-- entry_type -->
27781
27782             <td class="entry_description">
27783               <p>The frame number corresponding to the last request
27784 with which the output result (metadata + buffers) has been fully
27785 synchronized.<wbr/></p>
27786             </td>
27787
27788             <td class="entry_units">
27789             </td>
27790
27791             <td class="entry_range">
27792               <p>Either a non-negative value corresponding to a
27793 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
27794             </td>
27795
27796             <td class="entry_hal_version">
27797               <p>3.<wbr/>2</p>
27798             </td>
27799
27800             <td class="entry_tags">
27801               <ul class="entry_tags">
27802                   <li><a href="#tag_V1">V1</a></li>
27803               </ul>
27804             </td>
27805
27806           </tr>
27807           <tr class="entries_header">
27808             <th class="th_details" colspan="6">Details</th>
27809           </tr>
27810           <tr class="entry_cont">
27811             <td class="entry_details" colspan="6">
27812               <p>When a request is submitted to the camera device,<wbr/> there is usually a
27813 delay of several frames before the controls get applied.<wbr/> A camera
27814 device may either choose to account for this delay by implementing a
27815 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
27816 it may start streaming control changes that span over several frame
27817 boundaries.<wbr/></p>
27818 <p>In the latter case,<wbr/> whenever a request's settings change relative to
27819 the previous submitted request,<wbr/> the full set of changes may take
27820 multiple frame durations to fully take effect.<wbr/> Some settings may
27821 take effect sooner (in less frame durations) than others.<wbr/></p>
27822 <p>While a set of control changes are being propagated,<wbr/> this value
27823 will be CONVERGING.<wbr/></p>
27824 <p>Once it is fully known that a set of control changes have been
27825 finished propagating,<wbr/> and the resulting updated control settings
27826 have been read back by the camera device,<wbr/> this value will be set
27827 to a non-negative frame number (corresponding to the request to
27828 which the results have synchronized to).<wbr/></p>
27829 <p>Older camera device implementations may not have a way to detect
27830 when all camera controls have been applied,<wbr/> and will always set this
27831 value to UNKNOWN.<wbr/></p>
27832 <p>FULL capability devices will always have this value set to the
27833 frame number of the request corresponding to this result.<wbr/></p>
27834 <p><em>Further details</em>:</p>
27835 <ul>
27836 <li>Whenever a request differs from the last request,<wbr/> any future
27837 results not yet returned may have this value set to CONVERGING (this
27838 could include any in-progress captures not yet returned by the camera
27839 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
27840 <li>Submitting a series of multiple requests that differ from the
27841 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
27842 moves the new synchronization frame to the last non-repeating
27843 request (using the smallest frame number from the contiguous list of
27844 repeating requests).<wbr/></li>
27845 <li>Submitting the same request repeatedly will not change this value
27846 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
27847 <li>When this value changes to non-negative,<wbr/> that means that all of the
27848 metadata controls from the request have been applied,<wbr/> all of the
27849 metadata controls from the camera device have been read to the
27850 updated values (into the result),<wbr/> and all of the graphics buffers
27851 corresponding to this result are also synchronized to the request.<wbr/></li>
27852 </ul>
27853 <p><em>Pipeline considerations</em>:</p>
27854 <p>Submitting a request with updated controls relative to the previously
27855 submitted requests may also invalidate the synchronization state
27856 of all the results corresponding to currently in-flight requests.<wbr/></p>
27857 <p>In other words,<wbr/> results for this current request and up to
27858 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
27859 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
27860             </td>
27861           </tr>
27862
27863           <tr class="entries_header">
27864             <th class="th_details" colspan="6">HAL Implementation Details</th>
27865           </tr>
27866           <tr class="entry_cont">
27867             <td class="entry_details" colspan="6">
27868               <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
27869 is also UNKNOWN.<wbr/></p>
27870 <p>FULL capability devices should simply set this value to the
27871 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
27872             </td>
27873           </tr>
27874
27875           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27876            <!-- end of entry -->
27877         
27878         
27879
27880       <!-- end of kind -->
27881       </tbody>
27882       <tr><td colspan="7" class="kind">static</td></tr>
27883
27884       <thead class="entries_header">
27885         <tr>
27886           <th class="th_name">Property Name</th>
27887           <th class="th_type">Type</th>
27888           <th class="th_description">Description</th>
27889           <th class="th_units">Units</th>
27890           <th class="th_range">Range</th>
27891           <th class="th_hal_version">Initial HIDL HAL version</th>
27892           <th class="th_tags">Tags</th>
27893         </tr>
27894       </thead>
27895
27896       <tbody>
27897
27898         
27899
27900         
27901
27902         
27903
27904         
27905
27906                 
27907           <tr class="entry" id="static_android.sync.maxLatency">
27908             <td class="entry_name
27909              " rowspan="5">
27910               android.<wbr/>sync.<wbr/>max<wbr/>Latency
27911             </td>
27912             <td class="entry_type">
27913                 <span class="entry_type_name entry_type_name_enum">int32</span>
27914
27915               <span class="entry_type_visibility"> [public]</span>
27916
27917
27918               <span class="entry_type_hwlevel">[legacy] </span>
27919
27920
27921
27922                 <ul class="entry_type_enum">
27923                   <li>
27924                     <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span>
27925                     <span class="entry_type_enum_value">0</span>
27926                     <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
27927 <p>Changing controls over multiple requests one after another will
27928 produce results that have those controls applied atomically
27929 each frame.<wbr/></p>
27930 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
27931                   </li>
27932                   <li>
27933                     <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
27934                     <span class="entry_type_enum_value">-1</span>
27935                     <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
27936 of the past requests applied to the camera settings.<wbr/></p>
27937 <p>By submitting a series of identical requests,<wbr/> the camera device
27938 will eventually have the camera settings applied,<wbr/> but it is
27939 unknown when that exact point will be.<wbr/></p>
27940 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
27941                   </li>
27942                 </ul>
27943
27944             </td> <!-- entry_type -->
27945
27946             <td class="entry_description">
27947               <p>The maximum number of frames that can occur after a request
27948 (different than the previous) has been submitted,<wbr/> and before the
27949 result's state becomes synchronized.<wbr/></p>
27950             </td>
27951
27952             <td class="entry_units">
27953               Frame counts
27954             </td>
27955
27956             <td class="entry_range">
27957               <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
27958             </td>
27959
27960             <td class="entry_hal_version">
27961               <p>3.<wbr/>2</p>
27962             </td>
27963
27964             <td class="entry_tags">
27965               <ul class="entry_tags">
27966                   <li><a href="#tag_V1">V1</a></li>
27967               </ul>
27968             </td>
27969
27970           </tr>
27971           <tr class="entries_header">
27972             <th class="th_details" colspan="6">Details</th>
27973           </tr>
27974           <tr class="entry_cont">
27975             <td class="entry_details" colspan="6">
27976               <p>This defines the maximum distance (in number of metadata results),<wbr/>
27977 between the frame number of the request that has new controls to apply
27978 and the frame number of the result that has all the controls applied.<wbr/></p>
27979 <p>In other words this acts as an upper boundary for how many frames
27980 must occur before the camera device knows for a fact that the new
27981 submitted camera settings have been applied in outgoing frames.<wbr/></p>
27982             </td>
27983           </tr>
27984
27985           <tr class="entries_header">
27986             <th class="th_details" colspan="6">HAL Implementation Details</th>
27987           </tr>
27988           <tr class="entry_cont">
27989             <td class="entry_details" colspan="6">
27990               <p>For example if maxLatency was 2,<wbr/></p>
27991 <pre><code>initial request = X (repeating)
27992 request1 = X
27993 request2 = Y
27994 request3 = Y
27995 request4 = Y
27996
27997 where requestN has frameNumber N,<wbr/> and the first of the repeating
27998 initial request's has frameNumber F (and F &lt; 1).<wbr/>
27999
28000 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28001 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28002 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28003 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28004 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
28005
28006 where resultN has frameNumber N.<wbr/>
28007 </code></pre>
28008 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
28009 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
28010 <code>4 - 2 = 2</code>.<wbr/></p>
28011 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
28012 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
28013 <code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
28014 <p>LIMITED devices are strongly encouraged to use a non-negative
28015 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
28016 to know when sensor settings have been applied.<wbr/></p>
28017             </td>
28018           </tr>
28019
28020           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28021            <!-- end of entry -->
28022         
28023         
28024
28025       <!-- end of kind -->
28026       </tbody>
28027
28028   <!-- end of section -->
28029   <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
28030
28031
28032       <tr><td colspan="7" class="kind">controls</td></tr>
28033
28034       <thead class="entries_header">
28035         <tr>
28036           <th class="th_name">Property Name</th>
28037           <th class="th_type">Type</th>
28038           <th class="th_description">Description</th>
28039           <th class="th_units">Units</th>
28040           <th class="th_range">Range</th>
28041           <th class="th_hal_version">Initial HIDL HAL version</th>
28042           <th class="th_tags">Tags</th>
28043         </tr>
28044       </thead>
28045
28046       <tbody>
28047
28048         
28049
28050         
28051
28052         
28053
28054         
28055
28056                 
28057           <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
28058             <td class="entry_name
28059              " rowspan="3">
28060               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
28061             </td>
28062             <td class="entry_type">
28063                 <span class="entry_type_name">float</span>
28064
28065               <span class="entry_type_visibility"> [java_public]</span>
28066
28067
28068               <span class="entry_type_hwlevel">[limited] </span>
28069
28070
28071
28072
28073             </td> <!-- entry_type -->
28074
28075             <td class="entry_description">
28076               <p>The amount of exposure time increase factor applied to the original output
28077 frame by the application processing before sending for reprocessing.<wbr/></p>
28078             </td>
28079
28080             <td class="entry_units">
28081               Relative exposure time increase factor.<wbr/>
28082             </td>
28083
28084             <td class="entry_range">
28085               <p>&gt;= 1.<wbr/>0</p>
28086             </td>
28087
28088             <td class="entry_hal_version">
28089               <p>3.<wbr/>2</p>
28090             </td>
28091
28092             <td class="entry_tags">
28093               <ul class="entry_tags">
28094                   <li><a href="#tag_REPROC">REPROC</a></li>
28095               </ul>
28096             </td>
28097
28098           </tr>
28099           <tr class="entries_header">
28100             <th class="th_details" colspan="6">Details</th>
28101           </tr>
28102           <tr class="entry_cont">
28103             <td class="entry_details" colspan="6">
28104               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
28105 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
28106 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
28107 output frames to effectively reduce the noise to the same level as a frame that was
28108 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
28109 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
28110 the camera device is that the amount of noise in the image would be approximately what
28111 would be expected if the original capture parameters had been a sensitivity of
28112 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
28113 than S and T respectively.<wbr/> If the captured images were processed by the application
28114 before being sent for reprocessing,<wbr/> then the application may have used image processing
28115 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
28116 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
28117 control,<wbr/> the application can communicate to the camera device the actual noise level
28118 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
28119 device can select appropriate noise reduction and edge enhancement parameters to avoid
28120 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
28121 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
28122 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
28123 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
28124 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
28125 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
28126 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
28127 produce the best quality images.<wbr/></p>
28128 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
28129 buffer in a way that affects its effective exposure time.<wbr/></p>
28130 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
28131 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/>
28132 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
28133 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
28134             </td>
28135           </tr>
28136
28137
28138           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28139            <!-- end of entry -->
28140         
28141         
28142
28143       <!-- end of kind -->
28144       </tbody>
28145       <tr><td colspan="7" class="kind">dynamic</td></tr>
28146
28147       <thead class="entries_header">
28148         <tr>
28149           <th class="th_name">Property Name</th>
28150           <th class="th_type">Type</th>
28151           <th class="th_description">Description</th>
28152           <th class="th_units">Units</th>
28153           <th class="th_range">Range</th>
28154           <th class="th_hal_version">Initial HIDL HAL version</th>
28155           <th class="th_tags">Tags</th>
28156         </tr>
28157       </thead>
28158
28159       <tbody>
28160
28161         
28162
28163         
28164
28165         
28166
28167         
28168
28169                 
28170           <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
28171             <td class="entry_name
28172              " rowspan="3">
28173               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
28174             </td>
28175             <td class="entry_type">
28176                 <span class="entry_type_name">float</span>
28177
28178               <span class="entry_type_visibility"> [java_public]</span>
28179
28180
28181               <span class="entry_type_hwlevel">[limited] </span>
28182
28183
28184
28185
28186             </td> <!-- entry_type -->
28187
28188             <td class="entry_description">
28189               <p>The amount of exposure time increase factor applied to the original output
28190 frame by the application processing before sending for reprocessing.<wbr/></p>
28191             </td>
28192
28193             <td class="entry_units">
28194               Relative exposure time increase factor.<wbr/>
28195             </td>
28196
28197             <td class="entry_range">
28198               <p>&gt;= 1.<wbr/>0</p>
28199             </td>
28200
28201             <td class="entry_hal_version">
28202               <p>3.<wbr/>2</p>
28203             </td>
28204
28205             <td class="entry_tags">
28206               <ul class="entry_tags">
28207                   <li><a href="#tag_REPROC">REPROC</a></li>
28208               </ul>
28209             </td>
28210
28211           </tr>
28212           <tr class="entries_header">
28213             <th class="th_details" colspan="6">Details</th>
28214           </tr>
28215           <tr class="entry_cont">
28216             <td class="entry_details" colspan="6">
28217               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
28218 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
28219 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
28220 output frames to effectively reduce the noise to the same level as a frame that was
28221 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
28222 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
28223 the camera device is that the amount of noise in the image would be approximately what
28224 would be expected if the original capture parameters had been a sensitivity of
28225 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
28226 than S and T respectively.<wbr/> If the captured images were processed by the application
28227 before being sent for reprocessing,<wbr/> then the application may have used image processing
28228 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
28229 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
28230 control,<wbr/> the application can communicate to the camera device the actual noise level
28231 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
28232 device can select appropriate noise reduction and edge enhancement parameters to avoid
28233 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
28234 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
28235 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
28236 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
28237 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
28238 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
28239 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
28240 produce the best quality images.<wbr/></p>
28241 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
28242 buffer in a way that affects its effective exposure time.<wbr/></p>
28243 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
28244 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/>
28245 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
28246 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
28247             </td>
28248           </tr>
28249
28250
28251           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28252            <!-- end of entry -->
28253         
28254         
28255
28256       <!-- end of kind -->
28257       </tbody>
28258       <tr><td colspan="7" class="kind">static</td></tr>
28259
28260       <thead class="entries_header">
28261         <tr>
28262           <th class="th_name">Property Name</th>
28263           <th class="th_type">Type</th>
28264           <th class="th_description">Description</th>
28265           <th class="th_units">Units</th>
28266           <th class="th_range">Range</th>
28267           <th class="th_hal_version">Initial HIDL HAL version</th>
28268           <th class="th_tags">Tags</th>
28269         </tr>
28270       </thead>
28271
28272       <tbody>
28273
28274         
28275
28276         
28277
28278         
28279
28280         
28281
28282                 
28283           <tr class="entry" id="static_android.reprocess.maxCaptureStall">
28284             <td class="entry_name
28285              " rowspan="3">
28286               android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
28287             </td>
28288             <td class="entry_type">
28289                 <span class="entry_type_name">int32</span>
28290
28291               <span class="entry_type_visibility"> [java_public]</span>
28292
28293
28294               <span class="entry_type_hwlevel">[limited] </span>
28295
28296
28297
28298
28299             </td> <!-- entry_type -->
28300
28301             <td class="entry_description">
28302               <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
28303 reprocess capture request.<wbr/></p>
28304             </td>
28305
28306             <td class="entry_units">
28307               Number of frames.<wbr/>
28308             </td>
28309
28310             <td class="entry_range">
28311               <p>&lt;= 4</p>
28312             </td>
28313
28314             <td class="entry_hal_version">
28315               <p>3.<wbr/>2</p>
28316             </td>
28317
28318             <td class="entry_tags">
28319               <ul class="entry_tags">
28320                   <li><a href="#tag_REPROC">REPROC</a></li>
28321               </ul>
28322             </td>
28323
28324           </tr>
28325           <tr class="entries_header">
28326             <th class="th_details" colspan="6">Details</th>
28327           </tr>
28328           <tr class="entry_cont">
28329             <td class="entry_details" colspan="6">
28330               <p>The key describes the maximal interference that one reprocess (input) request
28331 can introduce to the camera simultaneous streaming of regular (output) capture
28332 requests,<wbr/> including repeating requests.<wbr/></p>
28333 <p>When a reprocessing capture request is submitted while a camera output repeating request
28334 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
28335 pipeline for at least one frame duration so that the camera device is unable to process
28336 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
28337 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
28338 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
28339 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
28340 the worst-case number of frame stall introduced by one reprocess request with any kind of
28341 formats/<wbr/>sizes combination.<wbr/></p>
28342 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
28343 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
28344 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
28345 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
28346 YUV_<wbr/>REPROCESSING).<wbr/></p>
28347             </td>
28348           </tr>
28349
28350
28351           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28352            <!-- end of entry -->
28353         
28354         
28355
28356       <!-- end of kind -->
28357       </tbody>
28358
28359   <!-- end of section -->
28360   <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
28361
28362
28363       <tr><td colspan="7" class="kind">static</td></tr>
28364
28365       <thead class="entries_header">
28366         <tr>
28367           <th class="th_name">Property Name</th>
28368           <th class="th_type">Type</th>
28369           <th class="th_description">Description</th>
28370           <th class="th_units">Units</th>
28371           <th class="th_range">Range</th>
28372           <th class="th_hal_version">Initial HIDL HAL version</th>
28373           <th class="th_tags">Tags</th>
28374         </tr>
28375       </thead>
28376
28377       <tbody>
28378
28379         
28380
28381         
28382
28383         
28384
28385         
28386
28387                 
28388           <tr class="entry" id="static_android.depth.maxDepthSamples">
28389             <td class="entry_name
28390              " rowspan="3">
28391               android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
28392             </td>
28393             <td class="entry_type">
28394                 <span class="entry_type_name">int32</span>
28395
28396               <span class="entry_type_visibility"> [system]</span>
28397
28398
28399               <span class="entry_type_hwlevel">[limited] </span>
28400
28401
28402
28403
28404             </td> <!-- entry_type -->
28405
28406             <td class="entry_description">
28407               <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
28408             </td>
28409
28410             <td class="entry_units">
28411             </td>
28412
28413             <td class="entry_range">
28414             </td>
28415
28416             <td class="entry_hal_version">
28417               <p>3.<wbr/>2</p>
28418             </td>
28419
28420             <td class="entry_tags">
28421               <ul class="entry_tags">
28422                   <li><a href="#tag_DEPTH">DEPTH</a></li>
28423               </ul>
28424             </td>
28425
28426           </tr>
28427           <tr class="entries_header">
28428             <th class="th_details" colspan="6">Details</th>
28429           </tr>
28430           <tr class="entry_cont">
28431             <td class="entry_details" colspan="6">
28432               <p>If a camera device supports outputting depth range data in the form of a depth point
28433 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
28434 number of points an output buffer may contain.<wbr/></p>
28435 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
28436 If output in the depth point cloud format is not supported,<wbr/> this entry will
28437 not be defined.<wbr/></p>
28438             </td>
28439           </tr>
28440
28441
28442           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28443            <!-- end of entry -->
28444         
28445                 
28446           <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
28447             <td class="entry_name
28448              " rowspan="3">
28449               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
28450             </td>
28451             <td class="entry_type">
28452                 <span class="entry_type_name entry_type_name_enum">int32</span>
28453                 <span class="entry_type_container">x</span>
28454
28455                 <span class="entry_type_array">
28456                   n x 4
28457                 </span>
28458               <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
28459
28460
28461               <span class="entry_type_hwlevel">[limited] </span>
28462
28463
28464
28465                 <ul class="entry_type_enum">
28466                   <li>
28467                     <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
28468                   </li>
28469                   <li>
28470                     <span class="entry_type_enum_name">INPUT (v3.2)</span>
28471                   </li>
28472                 </ul>
28473
28474             </td> <!-- entry_type -->
28475
28476             <td class="entry_description">
28477               <p>The available depth dataspace stream
28478 configurations that this camera device supports
28479 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
28480             </td>
28481
28482             <td class="entry_units">
28483             </td>
28484
28485             <td class="entry_range">
28486             </td>
28487
28488             <td class="entry_hal_version">
28489               <p>3.<wbr/>2</p>
28490             </td>
28491
28492             <td class="entry_tags">
28493               <ul class="entry_tags">
28494                   <li><a href="#tag_DEPTH">DEPTH</a></li>
28495               </ul>
28496             </td>
28497
28498           </tr>
28499           <tr class="entries_header">
28500             <th class="th_details" colspan="6">Details</th>
28501           </tr>
28502           <tr class="entry_cont">
28503             <td class="entry_details" colspan="6">
28504               <p>These are output stream configurations for use with
28505 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
28506 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
28507 <p>Only devices that support depth output for at least
28508 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
28509 this entry.<wbr/></p>
28510 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
28511 sparse depth point cloud must report a single entry for
28512 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
28513 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
28514 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
28515             </td>
28516           </tr>
28517
28518
28519           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28520            <!-- end of entry -->
28521         
28522                 
28523           <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
28524             <td class="entry_name
28525              " rowspan="3">
28526               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
28527             </td>
28528             <td class="entry_type">
28529                 <span class="entry_type_name">int64</span>
28530                 <span class="entry_type_container">x</span>
28531
28532                 <span class="entry_type_array">
28533                   4 x n
28534                 </span>
28535               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
28536
28537
28538               <span class="entry_type_hwlevel">[limited] </span>
28539
28540
28541
28542
28543             </td> <!-- entry_type -->
28544
28545             <td class="entry_description">
28546               <p>This lists the minimum frame duration for each
28547 format/<wbr/>size combination for depth output formats.<wbr/></p>
28548             </td>
28549
28550             <td class="entry_units">
28551               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
28552             </td>
28553
28554             <td class="entry_range">
28555             </td>
28556
28557             <td class="entry_hal_version">
28558               <p>3.<wbr/>2</p>
28559             </td>
28560
28561             <td class="entry_tags">
28562               <ul class="entry_tags">
28563                   <li><a href="#tag_DEPTH">DEPTH</a></li>
28564               </ul>
28565             </td>
28566
28567           </tr>
28568           <tr class="entries_header">
28569             <th class="th_details" colspan="6">Details</th>
28570           </tr>
28571           <tr class="entry_cont">
28572             <td class="entry_details" colspan="6">
28573               <p>This should correspond to the frame duration when only that
28574 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
28575 set to either OFF or FAST.<wbr/></p>
28576 <p>When multiple streams are used in a request,<wbr/> the minimum frame
28577 duration will be max(individual stream min durations).<wbr/></p>
28578 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
28579 is the same regardless of whether the stream is input or output.<wbr/></p>
28580 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
28581 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
28582 calculating the max frame rate.<wbr/></p>
28583             </td>
28584           </tr>
28585
28586
28587           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28588            <!-- end of entry -->
28589         
28590                 
28591           <tr class="entry" id="static_android.depth.availableDepthStallDurations">
28592             <td class="entry_name
28593              " rowspan="3">
28594               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
28595             </td>
28596             <td class="entry_type">
28597                 <span class="entry_type_name">int64</span>
28598                 <span class="entry_type_container">x</span>
28599
28600                 <span class="entry_type_array">
28601                   4 x n
28602                 </span>
28603               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
28604
28605
28606               <span class="entry_type_hwlevel">[limited] </span>
28607
28608
28609
28610
28611             </td> <!-- entry_type -->
28612
28613             <td class="entry_description">
28614               <p>This lists the maximum stall duration for each
28615 output format/<wbr/>size combination for depth streams.<wbr/></p>
28616             </td>
28617
28618             <td class="entry_units">
28619               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
28620             </td>
28621
28622             <td class="entry_range">
28623             </td>
28624
28625             <td class="entry_hal_version">
28626               <p>3.<wbr/>2</p>
28627             </td>
28628
28629             <td class="entry_tags">
28630               <ul class="entry_tags">
28631                   <li><a href="#tag_DEPTH">DEPTH</a></li>
28632               </ul>
28633             </td>
28634
28635           </tr>
28636           <tr class="entries_header">
28637             <th class="th_details" colspan="6">Details</th>
28638           </tr>
28639           <tr class="entry_cont">
28640             <td class="entry_details" colspan="6">
28641               <p>A stall duration is how much extra time would get added
28642 to the normal minimum frame duration for a repeating request
28643 that has streams with non-zero stall.<wbr/></p>
28644 <p>This functions similarly to
28645 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
28646 streams.<wbr/></p>
28647 <p>All depth output stream formats may have a nonzero stall
28648 duration.<wbr/></p>
28649             </td>
28650           </tr>
28651
28652
28653           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28654            <!-- end of entry -->
28655         
28656                 
28657           <tr class="entry" id="static_android.depth.depthIsExclusive">
28658             <td class="entry_name
28659              " rowspan="3">
28660               android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
28661             </td>
28662             <td class="entry_type">
28663                 <span class="entry_type_name entry_type_name_enum">byte</span>
28664
28665               <span class="entry_type_visibility"> [public as boolean]</span>
28666
28667
28668               <span class="entry_type_hwlevel">[limited] </span>
28669
28670
28671
28672                 <ul class="entry_type_enum">
28673                   <li>
28674                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
28675                   </li>
28676                   <li>
28677                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
28678                   </li>
28679                 </ul>
28680
28681             </td> <!-- entry_type -->
28682
28683             <td class="entry_description">
28684               <p>Indicates whether a capture request may target both a
28685 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
28686 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
28687             </td>
28688
28689             <td class="entry_units">
28690             </td>
28691
28692             <td class="entry_range">
28693             </td>
28694
28695             <td class="entry_hal_version">
28696               <p>3.<wbr/>2</p>
28697             </td>
28698
28699             <td class="entry_tags">
28700             </td>
28701
28702           </tr>
28703           <tr class="entries_header">
28704             <th class="th_details" colspan="6">Details</th>
28705           </tr>
28706           <tr class="entry_cont">
28707             <td class="entry_details" colspan="6">
28708               <p>If TRUE,<wbr/> including both depth and color outputs in a single
28709 capture request is not supported.<wbr/> An application must interleave color
28710 and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
28711 of output.<wbr/></p>
28712 <p>Typically,<wbr/> this restriction exists on camera devices that
28713 need to emit a specific pattern or wavelength of light to
28714 measure depth values,<wbr/> which causes the color image to be
28715 corrupted during depth measurement.<wbr/></p>
28716             </td>
28717           </tr>
28718
28719
28720           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28721            <!-- end of entry -->
28722         
28723         
28724
28725       <!-- end of kind -->
28726       </tbody>
28727
28728   <!-- end of section -->
28729 <!-- </namespace> -->
28730   </table>
28731
28732   <div class="tags" id="tag_index">
28733     <h2>Tags</h2>
28734     <ul>
28735       <li id="tag_BC">BC - 
28736         Needed for backwards compatibility with old Java API
28737     
28738         <ul class="tags_entries">
28739           <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
28740           <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
28741           <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
28742           <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
28743           <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
28744           <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
28745           <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
28746           <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
28747           <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
28748           <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
28749           <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
28750           <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
28751           <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
28752           <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
28753           <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
28754           <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
28755           <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
28756           <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
28757           <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
28758           <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
28759           <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
28760           <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
28761           <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
28762           <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
28763           <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
28764           <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
28765           <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
28766           <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
28767           <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
28768           <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
28769           <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
28770           <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
28771           <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
28772           <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
28773           <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
28774           <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
28775           <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
28776           <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
28777           <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
28778           <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
28779           <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
28780           <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
28781           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
28782           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
28783           <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
28784           <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
28785           <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
28786           <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
28787           <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
28788           <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
28789           <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
28790           <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
28791           <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
28792           <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
28793           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
28794           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
28795           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
28796           <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
28797           <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
28798           <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
28799           <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
28800           <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
28801           <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
28802           <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
28803           <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
28804           <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
28805           <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
28806         </ul>
28807       </li> <!-- tag_BC -->
28808       <li id="tag_V1">V1 - 
28809         New features for first camera 2 release (API1)
28810     
28811         <ul class="tags_entries">
28812           <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
28813           <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
28814           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
28815           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
28816           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
28817           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
28818           <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
28819           <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
28820           <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
28821           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
28822           <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
28823           <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
28824           <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
28825           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
28826           <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
28827           <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
28828           <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
28829           <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
28830           <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
28831           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
28832           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
28833           <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
28834           <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
28835           <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
28836           <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
28837           <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
28838           <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
28839           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
28840           <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
28841           <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
28842           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
28843           <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
28844           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
28845           <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
28846           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
28847           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
28848           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
28849           <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
28850           <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
28851           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
28852           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
28853           <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
28854           <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
28855           <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
28856           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
28857         </ul>
28858       </li> <!-- tag_V1 -->
28859       <li id="tag_RAW">RAW - 
28860         Needed for useful RAW image processing and DNG file support
28861     
28862         <ul class="tags_entries">
28863           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
28864           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
28865           <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
28866           <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
28867           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
28868           <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
28869           <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
28870           <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
28871           <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
28872           <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
28873           <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
28874           <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
28875           <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
28876           <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
28877           <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
28878           <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
28879           <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
28880           <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
28881           <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
28882           <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
28883           <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
28884           <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
28885           <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
28886           <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
28887           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
28888           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
28889           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
28890           <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
28891           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
28892         </ul>
28893       </li> <!-- tag_RAW -->
28894       <li id="tag_HAL2">HAL2 - 
28895         Entry is only used by camera device legacy HAL 2.x
28896     
28897         <ul class="tags_entries">
28898           <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
28899           <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
28900           <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
28901           <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
28902           <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
28903         </ul>
28904       </li> <!-- tag_HAL2 -->
28905       <li id="tag_FULL">FULL - 
28906         Entry is required for full hardware level devices, and optional for other hardware levels
28907     
28908         <ul class="tags_entries">
28909           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
28910         </ul>
28911       </li> <!-- tag_FULL -->
28912       <li id="tag_DEPTH">DEPTH - 
28913         Entry is required for the depth capability.
28914     
28915         <ul class="tags_entries">
28916           <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
28917           <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
28918           <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
28919           <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
28920           <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
28921           <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
28922           <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
28923           <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
28924         </ul>
28925       </li> <!-- tag_DEPTH -->
28926       <li id="tag_REPROC">REPROC - 
28927         Entry is required for the YUV or PRIVATE reprocessing capability.
28928     
28929         <ul class="tags_entries">
28930           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
28931           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
28932           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
28933           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
28934           <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
28935           <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
28936           <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
28937           <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
28938           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
28939           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
28940         </ul>
28941       </li> <!-- tag_REPROC -->
28942       <li id="tag_FUTURE">FUTURE - 
28943         Entry is  under-specified and is not required for now. This is for book-keeping purpose,
28944         do not implement or use it, it may be revised for future.
28945     
28946         <ul class="tags_entries">
28947           <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
28948           <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
28949           <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
28950           <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
28951           <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
28952           <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
28953           <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
28954           <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
28955           <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
28956           <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
28957           <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
28958           <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
28959           <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
28960           <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
28961           <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
28962           <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
28963           <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
28964           <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
28965           <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
28966           <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
28967           <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
28968         </ul>
28969       </li> <!-- tag_FUTURE -->
28970     </ul>
28971   </div>
28972
28973   [ <a href="#">top</a> ]
28974
28975 </body>
28976 </html>