OSDN Git Service

camera: Update logical multi-camera requirement
[android-x86/system-media.git] / camera / docs / docs.html
1 <!DOCTYPE html>
2 <html>
3 <!-- Copyright (C) 2012 The Android Open Source Project
4
5      Licensed under the Apache License, Version 2.0 (the "License");
6      you may not use this file except in compliance with the License.
7      You may obtain a copy of the License at
8
9           http://www.apache.org/licenses/LICENSE-2.0
10
11      Unless required by applicable law or agreed to in writing, software
12      distributed under the License is distributed on an "AS IS" BASIS,
13      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14      See the License for the specific language governing permissions and
15      limitations under the License.
16 -->
17 <head>
18   <!-- automatically generated from html.mako. do NOT edit directly -->
19   <meta charset="utf-8" />
20   <title>Android Camera HAL3.4 Properties</title>
21   <style type="text/css">
22      body { background-color: #f7f7f7; font-family: Roboto, sans-serif;}
23      h1 { color: #333333; }
24      h2 { color: #333333; }
25      a:link { color: #258aaf; text-decoration: none}
26      a:hover { color: #459aaf; text-decoration: underline }
27      a:visited { color: #154a5f; text-decoration: none}
28     .section { color: #eeeeee; font-size: 1.5em; font-weight: bold; background-color: #888888; padding: 0.5em 0em 0.5em 0.5em; border-width: thick thin thin thin; border-color: #111111 #777777 #777777 #777777}
29     .kind { color: #eeeeee; font-size: 1.2em; font-weight: bold; padding-left: 1.5em; background-color: #aaaaaa }
30     .entry { background-color: #f0f0f0 }
31     .entry_cont { background-color: #f0f0f0 }
32     .entries_header { background-color: #dddddd; text-align: center}
33
34     /* toc style */
35     .toc_section_header { font-size:1.3em;  }
36     .toc_kind_header { font-size:1.2em;  }
37     .toc_deprecated { text-decoration:line-through; }
38
39     /* table column sizes */
40     table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word }
41     td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em }
42     .th_name { width: 20% }
43     .th_units { width: 10% }
44     .th_tags { width: 5% }
45     .th_details { width: 25% }
46     .th_type { width: 17% }
47     .th_description { width: 20% }
48     .th_range { width: 8% }
49     .th_hal_version { width: 5% }
50     td { font-size: 0.9em; }
51
52     /* hide the first thead, we need it there only to enforce column sizes */
53     .thead_dummy { visibility: hidden; }
54
55     /* Entry flair */
56     .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; }
57     .entry_name_deprecated { text-decoration:line-through; }
58
59     /* Entry type flair */
60     .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;}
61     .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" }
62     .entry_type_visibility { font-weight: bolder; padding-left:1em}
63     .entry_type_synthetic { font-weight: bolder; color: #996600; }
64     .entry_type_hwlevel { font-weight: bolder; color: #000066; }
65     .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; }
66     .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
67     .entry_type_enum_notes:before { content:" - " }
68     .entry_type_enum_notes>p:first-child { display:inline; }
69     .entry_type_enum_value:before { content:" = " }
70     .entry_type_enum_value { font-family: monospace; }
71     .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; }
72     .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;}
73     .entry_range_deprecated { font-weight: bolder; }
74
75     /* Entry tags flair */
76     .entry_tags ul { list-style-type: none; }
77
78     /* Entry details (full docs) flair */
79     .entry_details_header { font-weight: bold; background-color: #dddddd;
80       text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; }
81
82     /* Entry spacer flair */
83     .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
84
85     /* TODO: generate abbr element for each tag link? */
86     /* TODO for each x.y.z try to link it to the entry */
87
88   </style>
89
90   <style>
91
92     {
93       /* broken...
94          supposedly there is a bug in chrome that it lays out tables before
95          it knows its being printed, so the page-break-* styles are ignored
96          */
97         tr { page-break-after: always; page-break-inside: avoid; }
98     }
99
100   </style>
101 </head>
102
103
104
105 <body>
106   <h1>Android Camera HAL3.2 Properties</h1>
107
108
109   <h2>Table of Contents</h2>
110   <ul class="toc">
111     <li><a href="#tag_index" class="toc_section_header">Tags</a></li>
112     <li>
113       <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span>
114       <ul class="toc_section">
115         <li>
116           <span class="toc_kind_header">controls</span>
117           <ul class="toc_section">
118             <li
119             ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
120             <li
121             ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
122             <li
123             ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
124             <li
125             ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
126           </ul>
127         </li>
128         <li>
129           <span class="toc_kind_header">dynamic</span>
130           <ul class="toc_section">
131             <li
132             ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
133             <li
134             ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
135             <li
136             ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
137             <li
138             ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
139           </ul>
140         </li>
141         <li>
142           <span class="toc_kind_header">static</span>
143           <ul class="toc_section">
144             <li
145             ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
146           </ul>
147         </li>
148       </ul> <!-- toc_section -->
149     </li>
150     <li>
151       <span class="toc_section_header"><a href="#section_control">control</a></span>
152       <ul class="toc_section">
153         <li>
154           <span class="toc_kind_header">controls</span>
155           <ul class="toc_section">
156             <li
157             ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
158             <li
159             ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
160             <li
161             ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
162             <li
163             ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
164             <li
165             ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
166             <li
167             ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
168             <li
169             ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
170             <li
171             ><a href="#controls_android.control.afMode">android.control.afMode</a></li>
172             <li
173             ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
174             <li
175             ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
176             <li
177             ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
178             <li
179             ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
180             <li
181             ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
182             <li
183             ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
184             <li
185             ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
186             <li
187             ><a href="#controls_android.control.mode">android.control.mode</a></li>
188             <li
189             ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
190             <li
191             ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
192             <li
193             ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
194             <li
195             ><a href="#controls_android.control.enableZsl">android.control.enableZsl</a></li>
196           </ul>
197         </li>
198         <li>
199           <span class="toc_kind_header">static</span>
200           <ul class="toc_section">
201             <li
202             ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
203             <li
204             ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
205             <li
206             ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
207             <li
208             ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
209             <li
210             ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
211             <li
212             ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
213             <li
214             ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
215             <li
216             ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
217             <li
218             ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
219             <li
220             ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
221             <li
222             ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
223             <li
224             ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
225             <li
226             ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
227             <li
228             ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
229             <li
230             ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
231             <li
232             ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
233             <li
234             ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
235             <li
236             ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
237             <li
238             ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
239             <li
240             ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li>
241           </ul>
242         </li>
243         <li>
244           <span class="toc_kind_header">dynamic</span>
245           <ul class="toc_section">
246             <li
247                 class="toc_deprecated"
248             ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
249             <li
250             ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
251             <li
252             ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
253             <li
254             ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
255             <li
256             ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
257             <li
258             ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
259             <li
260             ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
261             <li
262             ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
263             <li
264             ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
265             <li
266             ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
267             <li
268             ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
269             <li
270             ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
271             <li
272             ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
273             <li
274                 class="toc_deprecated"
275             ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
276             <li
277             ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
278             <li
279             ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
280             <li
281             ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
282             <li
283             ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
284             <li
285             ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
286             <li
287             ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
288             <li
289             ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
290             <li
291             ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
292             <li
293             ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
294             <li
295             ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
296             <li
297             ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li>
298             <li
299             ><a href="#dynamic_android.control.afSceneChange">android.control.afSceneChange</a></li>
300           </ul>
301         </li>
302       </ul> <!-- toc_section -->
303     </li>
304     <li>
305       <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
306       <ul class="toc_section">
307         <li>
308           <span class="toc_kind_header">controls</span>
309           <ul class="toc_section">
310             <li
311             ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
312           </ul>
313         </li>
314       </ul> <!-- toc_section -->
315     </li>
316     <li>
317       <span class="toc_section_header"><a href="#section_edge">edge</a></span>
318       <ul class="toc_section">
319         <li>
320           <span class="toc_kind_header">controls</span>
321           <ul class="toc_section">
322             <li
323             ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
324             <li
325             ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
326           </ul>
327         </li>
328         <li>
329           <span class="toc_kind_header">static</span>
330           <ul class="toc_section">
331             <li
332             ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
333           </ul>
334         </li>
335         <li>
336           <span class="toc_kind_header">dynamic</span>
337           <ul class="toc_section">
338             <li
339             ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
340           </ul>
341         </li>
342       </ul> <!-- toc_section -->
343     </li>
344     <li>
345       <span class="toc_section_header"><a href="#section_flash">flash</a></span>
346       <ul class="toc_section">
347         <li>
348           <span class="toc_kind_header">controls</span>
349           <ul class="toc_section">
350             <li
351             ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
352             <li
353             ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
354             <li
355             ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
356           </ul>
357         </li>
358         <li>
359           <span class="toc_kind_header">static</span>
360           <ul class="toc_section">
361
362             <li
363             ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
364             <li
365             ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
366
367             <li
368             ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
369             <li
370             ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
371           </ul>
372         </li>
373         <li>
374           <span class="toc_kind_header">dynamic</span>
375           <ul class="toc_section">
376             <li
377             ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
378             <li
379             ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
380             <li
381             ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
382             <li
383             ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
384           </ul>
385         </li>
386       </ul> <!-- toc_section -->
387     </li>
388     <li>
389       <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
390       <ul class="toc_section">
391         <li>
392           <span class="toc_kind_header">controls</span>
393           <ul class="toc_section">
394             <li
395             ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
396           </ul>
397         </li>
398         <li>
399           <span class="toc_kind_header">static</span>
400           <ul class="toc_section">
401             <li
402             ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
403           </ul>
404         </li>
405         <li>
406           <span class="toc_kind_header">dynamic</span>
407           <ul class="toc_section">
408             <li
409             ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
410           </ul>
411         </li>
412       </ul> <!-- toc_section -->
413     </li>
414     <li>
415       <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
416       <ul class="toc_section">
417         <li>
418           <span class="toc_kind_header">controls</span>
419           <ul class="toc_section">
420             <li
421             ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
422             <li
423             ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
424             <li
425             ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
426             <li
427             ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
428             <li
429             ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
430             <li
431             ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
432             <li
433             ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
434             <li
435             ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
436           </ul>
437         </li>
438         <li>
439           <span class="toc_kind_header">static</span>
440           <ul class="toc_section">
441             <li
442             ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
443             <li
444             ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
445           </ul>
446         </li>
447         <li>
448           <span class="toc_kind_header">dynamic</span>
449           <ul class="toc_section">
450             <li
451             ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
452             <li
453             ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
454             <li
455             ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
456             <li
457             ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
458             <li
459             ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
460             <li
461             ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
462             <li
463             ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
464             <li
465             ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
466             <li
467             ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
468           </ul>
469         </li>
470       </ul> <!-- toc_section -->
471     </li>
472     <li>
473       <span class="toc_section_header"><a href="#section_lens">lens</a></span>
474       <ul class="toc_section">
475         <li>
476           <span class="toc_kind_header">controls</span>
477           <ul class="toc_section">
478             <li
479             ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
480             <li
481             ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
482             <li
483             ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
484             <li
485             ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
486             <li
487             ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
488           </ul>
489         </li>
490         <li>
491           <span class="toc_kind_header">static</span>
492           <ul class="toc_section">
493
494             <li
495             ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
496             <li
497             ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
498             <li
499             ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
500             <li
501             ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
502             <li
503             ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
504             <li
505             ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
506             <li
507             ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
508             <li
509             ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
510
511             <li
512             ><a href="#static_android.lens.facing">android.lens.facing</a></li>
513             <li
514             ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
515             <li
516             ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
517             <li
518             ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
519             <li
520             ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
521             <li
522             ><a href="#static_android.lens.poseReference">android.lens.poseReference</a></li>
523           </ul>
524         </li>
525         <li>
526           <span class="toc_kind_header">dynamic</span>
527           <ul class="toc_section">
528             <li
529             ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
530             <li
531             ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
532             <li
533             ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
534             <li
535             ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
536             <li
537             ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
538             <li
539             ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
540             <li
541             ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
542             <li
543             ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
544             <li
545             ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
546             <li
547             ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
548             <li
549             ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
550           </ul>
551         </li>
552       </ul> <!-- toc_section -->
553     </li>
554     <li>
555       <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
556       <ul class="toc_section">
557         <li>
558           <span class="toc_kind_header">controls</span>
559           <ul class="toc_section">
560             <li
561             ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
562             <li
563             ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
564           </ul>
565         </li>
566         <li>
567           <span class="toc_kind_header">static</span>
568           <ul class="toc_section">
569             <li
570             ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
571           </ul>
572         </li>
573         <li>
574           <span class="toc_kind_header">dynamic</span>
575           <ul class="toc_section">
576             <li
577             ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
578           </ul>
579         </li>
580       </ul> <!-- toc_section -->
581     </li>
582     <li>
583       <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
584       <ul class="toc_section">
585         <li>
586           <span class="toc_kind_header">static</span>
587           <ul class="toc_section">
588             <li
589                 class="toc_deprecated"
590             ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
591             <li
592                 class="toc_deprecated"
593             ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
594             <li
595                 class="toc_deprecated"
596             ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
597             <li
598                 class="toc_deprecated"
599             ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
600           </ul>
601         </li>
602         <li>
603           <span class="toc_kind_header">dynamic</span>
604           <ul class="toc_section">
605             <li
606                 class="toc_deprecated"
607             ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
608           </ul>
609         </li>
610       </ul> <!-- toc_section -->
611     </li>
612     <li>
613       <span class="toc_section_header"><a href="#section_request">request</a></span>
614       <ul class="toc_section">
615         <li>
616           <span class="toc_kind_header">controls</span>
617           <ul class="toc_section">
618             <li
619                 class="toc_deprecated"
620             ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
621             <li
622             ><a href="#controls_android.request.id">android.request.id</a></li>
623             <li
624                 class="toc_deprecated"
625             ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
626             <li
627             ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
628             <li
629                 class="toc_deprecated"
630             ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
631             <li
632                 class="toc_deprecated"
633             ><a href="#controls_android.request.type">android.request.type</a></li>
634           </ul>
635         </li>
636         <li>
637           <span class="toc_kind_header">static</span>
638           <ul class="toc_section">
639             <li
640             ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
641             <li
642             ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
643             <li
644             ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
645             <li
646             ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
647             <li
648                 class="toc_deprecated"
649             ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
650             <li
651             ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
652             <li
653             ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
654             <li
655             ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
656             <li
657             ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
658             <li
659             ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
660             <li
661             ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
662             <li
663             ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
664             <li
665             ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li>
666             <li
667             ><a href="#static_android.request.availablePhysicalCameraRequestKeys">android.request.availablePhysicalCameraRequestKeys</a></li>
668           </ul>
669         </li>
670         <li>
671           <span class="toc_kind_header">dynamic</span>
672           <ul class="toc_section">
673             <li
674                 class="toc_deprecated"
675             ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
676             <li
677             ><a href="#dynamic_android.request.id">android.request.id</a></li>
678             <li
679             ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
680             <li
681                 class="toc_deprecated"
682             ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
683             <li
684             ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
685           </ul>
686         </li>
687       </ul> <!-- toc_section -->
688     </li>
689     <li>
690       <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
691       <ul class="toc_section">
692         <li>
693           <span class="toc_kind_header">controls</span>
694           <ul class="toc_section">
695             <li
696             ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
697           </ul>
698         </li>
699         <li>
700           <span class="toc_kind_header">static</span>
701           <ul class="toc_section">
702             <li
703                 class="toc_deprecated"
704             ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
705             <li
706                 class="toc_deprecated"
707             ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
708             <li
709                 class="toc_deprecated"
710             ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
711             <li
712             ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
713             <li
714                 class="toc_deprecated"
715             ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
716             <li
717                 class="toc_deprecated"
718             ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
719             <li
720                 class="toc_deprecated"
721             ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
722             <li
723                 class="toc_deprecated"
724             ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
725             <li
726             ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
727             <li
728             ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
729             <li
730             ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
731             <li
732             ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
733             <li
734             ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
735             <li
736             ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
737           </ul>
738         </li>
739         <li>
740           <span class="toc_kind_header">dynamic</span>
741           <ul class="toc_section">
742             <li
743             ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
744           </ul>
745         </li>
746       </ul> <!-- toc_section -->
747     </li>
748     <li>
749       <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
750       <ul class="toc_section">
751         <li>
752           <span class="toc_kind_header">controls</span>
753           <ul class="toc_section">
754             <li
755             ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
756             <li
757             ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
758             <li
759             ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
760             <li
761             ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
762             <li
763             ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
764           </ul>
765         </li>
766         <li>
767           <span class="toc_kind_header">static</span>
768           <ul class="toc_section">
769
770             <li
771             ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
772             <li
773             ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
774             <li
775             ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
776             <li
777             ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
778             <li
779             ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
780             <li
781             ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
782             <li
783             ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
784             <li
785             ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
786             <li
787             ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
788             <li
789             ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
790             <li
791             ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
792
793             <li
794             ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
795             <li
796             ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
797             <li
798             ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
799             <li
800             ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
801             <li
802             ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
803             <li
804             ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
805             <li
806             ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
807             <li
808             ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
809             <li
810             ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
811             <li
812             ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
813             <li
814             ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
815             <li
816             ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
817             <li
818             ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
819             <li
820             ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
821             <li
822             ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
823             <li
824             ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
825           </ul>
826         </li>
827         <li>
828           <span class="toc_kind_header">dynamic</span>
829           <ul class="toc_section">
830             <li
831             ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
832             <li
833             ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
834             <li
835             ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
836             <li
837             ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
838             <li
839             ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
840             <li
841             ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
842             <li
843             ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
844             <li
845             ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
846             <li
847             ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
848             <li
849             ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
850             <li
851             ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
852             <li
853             ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
854             <li
855             ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
856             <li
857             ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
858             <li
859             ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
860           </ul>
861         </li>
862       </ul> <!-- toc_section -->
863     </li>
864     <li>
865       <span class="toc_section_header"><a href="#section_shading">shading</a></span>
866       <ul class="toc_section">
867         <li>
868           <span class="toc_kind_header">controls</span>
869           <ul class="toc_section">
870             <li
871             ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
872             <li
873             ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
874           </ul>
875         </li>
876         <li>
877           <span class="toc_kind_header">dynamic</span>
878           <ul class="toc_section">
879             <li
880             ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
881           </ul>
882         </li>
883         <li>
884           <span class="toc_kind_header">static</span>
885           <ul class="toc_section">
886             <li
887             ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
888           </ul>
889         </li>
890       </ul> <!-- toc_section -->
891     </li>
892     <li>
893       <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
894       <ul class="toc_section">
895         <li>
896           <span class="toc_kind_header">controls</span>
897           <ul class="toc_section">
898             <li
899             ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
900             <li
901             ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
902             <li
903             ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
904             <li
905             ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
906             <li
907             ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
908             <li
909             ><a href="#controls_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
910           </ul>
911         </li>
912         <li>
913           <span class="toc_kind_header">static</span>
914           <ul class="toc_section">
915
916             <li
917             ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
918             <li
919             ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
920             <li
921             ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
922             <li
923             ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
924             <li
925             ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
926             <li
927             ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
928             <li
929             ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
930             <li
931             ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
932             <li
933             ><a href="#static_android.statistics.info.availableOisDataModes">android.statistics.info.availableOisDataModes</a></li>
934
935           </ul>
936         </li>
937         <li>
938           <span class="toc_kind_header">dynamic</span>
939           <ul class="toc_section">
940             <li
941             ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
942             <li
943             ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
944             <li
945             ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
946             <li
947             ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
948             <li
949             ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
950             <li
951             ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
952             <li
953             ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
954             <li
955             ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
956             <li
957             ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
958             <li
959             ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
960             <li
961             ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
962             <li
963             ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
964             <li
965                 class="toc_deprecated"
966             ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
967             <li
968                 class="toc_deprecated"
969             ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
970             <li
971             ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
972             <li
973             ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
974             <li
975             ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
976             <li
977             ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
978             <li
979             ><a href="#dynamic_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
980             <li
981             ><a href="#dynamic_android.statistics.oisTimestamps">android.statistics.oisTimestamps</a></li>
982             <li
983             ><a href="#dynamic_android.statistics.oisXShifts">android.statistics.oisXShifts</a></li>
984             <li
985             ><a href="#dynamic_android.statistics.oisYShifts">android.statistics.oisYShifts</a></li>
986           </ul>
987         </li>
988       </ul> <!-- toc_section -->
989     </li>
990     <li>
991       <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
992       <ul class="toc_section">
993         <li>
994           <span class="toc_kind_header">controls</span>
995           <ul class="toc_section">
996             <li
997             ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
998             <li
999             ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1000             <li
1001             ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1002             <li
1003             ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
1004             <li
1005             ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
1006             <li
1007             ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
1008             <li
1009             ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1010           </ul>
1011         </li>
1012         <li>
1013           <span class="toc_kind_header">static</span>
1014           <ul class="toc_section">
1015             <li
1016             ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
1017             <li
1018             ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
1019           </ul>
1020         </li>
1021         <li>
1022           <span class="toc_kind_header">dynamic</span>
1023           <ul class="toc_section">
1024             <li
1025             ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1026             <li
1027             ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1028             <li
1029             ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1030             <li
1031             ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1032             <li
1033             ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1034             <li
1035             ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1036             <li
1037             ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1038           </ul>
1039         </li>
1040       </ul> <!-- toc_section -->
1041     </li>
1042     <li>
1043       <span class="toc_section_header"><a href="#section_led">led</a></span>
1044       <ul class="toc_section">
1045         <li>
1046           <span class="toc_kind_header">controls</span>
1047           <ul class="toc_section">
1048             <li
1049             ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1050           </ul>
1051         </li>
1052         <li>
1053           <span class="toc_kind_header">dynamic</span>
1054           <ul class="toc_section">
1055             <li
1056             ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1057           </ul>
1058         </li>
1059         <li>
1060           <span class="toc_kind_header">static</span>
1061           <ul class="toc_section">
1062             <li
1063             ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1064           </ul>
1065         </li>
1066       </ul> <!-- toc_section -->
1067     </li>
1068     <li>
1069       <span class="toc_section_header"><a href="#section_info">info</a></span>
1070       <ul class="toc_section">
1071         <li>
1072           <span class="toc_kind_header">static</span>
1073           <ul class="toc_section">
1074             <li
1075             ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1076             <li
1077             ><a href="#static_android.info.version">android.info.version</a></li>
1078           </ul>
1079         </li>
1080       </ul> <!-- toc_section -->
1081     </li>
1082     <li>
1083       <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1084       <ul class="toc_section">
1085         <li>
1086           <span class="toc_kind_header">controls</span>
1087           <ul class="toc_section">
1088             <li
1089             ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1090           </ul>
1091         </li>
1092         <li>
1093           <span class="toc_kind_header">dynamic</span>
1094           <ul class="toc_section">
1095             <li
1096             ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1097           </ul>
1098         </li>
1099       </ul> <!-- toc_section -->
1100     </li>
1101     <li>
1102       <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1103       <ul class="toc_section">
1104         <li>
1105           <span class="toc_kind_header">dynamic</span>
1106           <ul class="toc_section">
1107             <li
1108             ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1109           </ul>
1110         </li>
1111         <li>
1112           <span class="toc_kind_header">static</span>
1113           <ul class="toc_section">
1114             <li
1115             ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1116           </ul>
1117         </li>
1118       </ul> <!-- toc_section -->
1119     </li>
1120     <li>
1121       <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1122       <ul class="toc_section">
1123         <li>
1124           <span class="toc_kind_header">controls</span>
1125           <ul class="toc_section">
1126             <li
1127             ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1128           </ul>
1129         </li>
1130         <li>
1131           <span class="toc_kind_header">dynamic</span>
1132           <ul class="toc_section">
1133             <li
1134             ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1135           </ul>
1136         </li>
1137         <li>
1138           <span class="toc_kind_header">static</span>
1139           <ul class="toc_section">
1140             <li
1141             ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1142           </ul>
1143         </li>
1144       </ul> <!-- toc_section -->
1145     </li>
1146     <li>
1147       <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1148       <ul class="toc_section">
1149         <li>
1150           <span class="toc_kind_header">static</span>
1151           <ul class="toc_section">
1152             <li
1153             ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1154             <li
1155             ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1156             <li
1157             ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1158             <li
1159             ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1160             <li
1161             ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1162           </ul>
1163         </li>
1164       </ul> <!-- toc_section -->
1165     </li>
1166     <li>
1167       <span class="toc_section_header"><a href="#section_logicalMultiCamera">logicalMultiCamera</a></span>
1168       <ul class="toc_section">
1169         <li>
1170           <span class="toc_kind_header">static</span>
1171           <ul class="toc_section">
1172             <li
1173             ><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a></li>
1174             <li
1175             ><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a></li>
1176           </ul>
1177         </li>
1178       </ul> <!-- toc_section -->
1179     </li>
1180   </ul>
1181
1182
1183   <h1>Properties</h1>
1184   <table class="properties">
1185
1186     <thead class="thead_dummy">
1187       <tr>
1188         <th class="th_name">Property Name</th>
1189         <th class="th_type">Type</th>
1190         <th class="th_description">Description</th>
1191         <th class="th_units">Units</th>
1192         <th class="th_range">Range</th>
1193         <th class="th_hal_version">HIDL HAL version</th>
1194         <th class="th_tags">Tags</th>
1195       </tr>
1196     </thead> <!-- so that the first occurrence of thead is not
1197                          above the first occurrence of tr -->
1198 <!-- <namespace name="android"> -->
1199   <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1200
1201
1202       <tr><td colspan="7" class="kind">controls</td></tr>
1203
1204       <thead class="entries_header">
1205         <tr>
1206           <th class="th_name">Property Name</th>
1207           <th class="th_type">Type</th>
1208           <th class="th_description">Description</th>
1209           <th class="th_units">Units</th>
1210           <th class="th_range">Range</th>
1211           <th class="th_hal_version">Initial HIDL HAL version</th>
1212           <th class="th_tags">Tags</th>
1213         </tr>
1214       </thead>
1215
1216       <tbody>
1217
1218         
1219
1220         
1221
1222         
1223
1224         
1225
1226                 
1227           <tr class="entry" id="controls_android.colorCorrection.mode">
1228             <td class="entry_name
1229              " rowspan="5">
1230               android.<wbr/>color<wbr/>Correction.<wbr/>mode
1231             </td>
1232             <td class="entry_type">
1233                 <span class="entry_type_name entry_type_name_enum">byte</span>
1234
1235               <span class="entry_type_visibility"> [public]</span>
1236
1237
1238               <span class="entry_type_hwlevel">[full] </span>
1239
1240
1241
1242                 <ul class="entry_type_enum">
1243                   <li>
1244                     <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1245                     <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1246 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1247 <p>All advanced white balance adjustments (not specified
1248 by our white balance pipeline) must be disabled.<wbr/></p>
1249 <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
1250 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1251 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1252                   </li>
1253                   <li>
1254                     <span class="entry_type_enum_name">FAST (v3.2)</span>
1255                     <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1256 capture rate relative to sensor raw output.<wbr/></p>
1257 <p>Advanced white balance adjustments above and beyond
1258 the specified white balance pipeline may be applied.<wbr/></p>
1259 <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
1260 the camera device uses the last frame's AWB values
1261 (or defaults if AWB has never been run).<wbr/></p></span>
1262                   </li>
1263                   <li>
1264                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1265                     <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1266 quality but the capture rate might be reduced (relative to sensor
1267 raw output rate)</p>
1268 <p>Advanced white balance adjustments above and beyond
1269 the specified white balance pipeline may be applied.<wbr/></p>
1270 <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
1271 the camera device uses the last frame's AWB values
1272 (or defaults if AWB has never been run).<wbr/></p></span>
1273                   </li>
1274                 </ul>
1275
1276             </td> <!-- entry_type -->
1277
1278             <td class="entry_description">
1279               <p>The mode control selects how the image data is converted from the
1280 sensor's native color into linear sRGB color.<wbr/></p>
1281             </td>
1282
1283             <td class="entry_units">
1284             </td>
1285
1286             <td class="entry_range">
1287             </td>
1288
1289             <td class="entry_hal_version">
1290               <p>3.<wbr/>2</p>
1291             </td>
1292
1293             <td class="entry_tags">
1294             </td>
1295
1296           </tr>
1297           <tr class="entries_header">
1298             <th class="th_details" colspan="6">Details</th>
1299           </tr>
1300           <tr class="entry_cont">
1301             <td class="entry_details" colspan="6">
1302               <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
1303 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1304 application controls how the color mapping is performed.<wbr/></p>
1305 <p>We define the expected processing pipeline below.<wbr/> For consistency
1306 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1307 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1308 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1309 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1310 camera device (in the results) and be roughly correct.<wbr/></p>
1311 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1312 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1313 as what was produced by the camera device in the earlier frame.<wbr/></p>
1314 <p>The expected processing pipeline is as follows:</p>
1315 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1316 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1317 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1318 matrix (applied after demosaic).<wbr/></p>
1319 <p>The 4-channel white-balance gains are defined as:</p>
1320 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1321 </code></pre>
1322 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1323 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1324 These may be identical for a given camera device implementation; if
1325 the camera device does not support a separate gain for even/<wbr/>odd green
1326 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1327 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1328 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1329 <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 ]
1330 </code></pre>
1331 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1332 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1333 <p>with colors as follows:</p>
1334 <pre><code>r' = I0r + I1g + I2b
1335 g' = I3r + I4g + I5b
1336 b' = I6r + I7g + I8b
1337 </code></pre>
1338 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1339 values are clipped to fit within the range.<wbr/></p>
1340             </td>
1341           </tr>
1342
1343           <tr class="entries_header">
1344             <th class="th_details" colspan="6">HAL Implementation Details</th>
1345           </tr>
1346           <tr class="entry_cont">
1347             <td class="entry_details" colspan="6">
1348               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1349 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1350 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1351 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1352             </td>
1353           </tr>
1354
1355           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1356            <!-- end of entry -->
1357         
1358                 
1359           <tr class="entry" id="controls_android.colorCorrection.transform">
1360             <td class="entry_name
1361              " rowspan="3">
1362               android.<wbr/>color<wbr/>Correction.<wbr/>transform
1363             </td>
1364             <td class="entry_type">
1365                 <span class="entry_type_name">rational</span>
1366                 <span class="entry_type_container">x</span>
1367
1368                 <span class="entry_type_array">
1369                   3 x 3
1370                 </span>
1371               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1372
1373
1374               <span class="entry_type_hwlevel">[full] </span>
1375
1376
1377                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1378
1379
1380             </td> <!-- entry_type -->
1381
1382             <td class="entry_description">
1383               <p>A color transform matrix to use to transform
1384 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1385             </td>
1386
1387             <td class="entry_units">
1388               Unitless scale factors
1389             </td>
1390
1391             <td class="entry_range">
1392             </td>
1393
1394             <td class="entry_hal_version">
1395               <p>3.<wbr/>2</p>
1396             </td>
1397
1398             <td class="entry_tags">
1399             </td>
1400
1401           </tr>
1402           <tr class="entries_header">
1403             <th class="th_details" colspan="6">Details</th>
1404           </tr>
1405           <tr class="entry_cont">
1406             <td class="entry_details" colspan="6">
1407               <p>This matrix is either set by the camera device when the request
1408 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1409 directly by the application in the request when the
1410 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1411 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1412 for precision issues; the final rounded matrix should be reported back
1413 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1414 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1415 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1416 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1417 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1418             </td>
1419           </tr>
1420
1421
1422           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1423            <!-- end of entry -->
1424         
1425                 
1426           <tr class="entry" id="controls_android.colorCorrection.gains">
1427             <td class="entry_name
1428              " rowspan="5">
1429               android.<wbr/>color<wbr/>Correction.<wbr/>gains
1430             </td>
1431             <td class="entry_type">
1432                 <span class="entry_type_name">float</span>
1433                 <span class="entry_type_container">x</span>
1434
1435                 <span class="entry_type_array">
1436                   4
1437                 </span>
1438               <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1439
1440
1441               <span class="entry_type_hwlevel">[full] </span>
1442
1443
1444                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1445
1446
1447             </td> <!-- entry_type -->
1448
1449             <td class="entry_description">
1450               <p>Gains applying to Bayer raw color channels for
1451 white-balance.<wbr/></p>
1452             </td>
1453
1454             <td class="entry_units">
1455               Unitless gain factors
1456             </td>
1457
1458             <td class="entry_range">
1459             </td>
1460
1461             <td class="entry_hal_version">
1462               <p>3.<wbr/>2</p>
1463             </td>
1464
1465             <td class="entry_tags">
1466             </td>
1467
1468           </tr>
1469           <tr class="entries_header">
1470             <th class="th_details" colspan="6">Details</th>
1471           </tr>
1472           <tr class="entry_cont">
1473             <td class="entry_details" colspan="6">
1474               <p>These per-channel gains are either set by the camera device
1475 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1476 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1477 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1478 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1479 <p>The gains in the result metadata are the gains actually
1480 applied by the camera device to the current frame.<wbr/></p>
1481 <p>The valid range of gains varies on different devices,<wbr/> but gains
1482 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1483 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1484 this can create color artifacts.<wbr/></p>
1485             </td>
1486           </tr>
1487
1488           <tr class="entries_header">
1489             <th class="th_details" colspan="6">HAL Implementation Details</th>
1490           </tr>
1491           <tr class="entry_cont">
1492             <td class="entry_details" colspan="6">
1493               <p>The 4-channel white-balance gains are defined in
1494 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1495 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1496 is the gain for green pixels on the odd rows.<wbr/></p>
1497 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1498 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1499 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1500             </td>
1501           </tr>
1502
1503           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1504            <!-- end of entry -->
1505         
1506                 
1507           <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1508             <td class="entry_name
1509              " rowspan="3">
1510               android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1511             </td>
1512             <td class="entry_type">
1513                 <span class="entry_type_name entry_type_name_enum">byte</span>
1514
1515               <span class="entry_type_visibility"> [public]</span>
1516
1517
1518               <span class="entry_type_hwlevel">[legacy] </span>
1519
1520
1521
1522                 <ul class="entry_type_enum">
1523                   <li>
1524                     <span class="entry_type_enum_name">OFF (v3.2)</span>
1525                     <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1526                   </li>
1527                   <li>
1528                     <span class="entry_type_enum_name">FAST (v3.2)</span>
1529                     <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1530 relative to sensor raw output.<wbr/></p></span>
1531                   </li>
1532                   <li>
1533                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1534                     <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1535 reduced (relative to sensor raw output rate)</p></span>
1536                   </li>
1537                 </ul>
1538
1539             </td> <!-- entry_type -->
1540
1541             <td class="entry_description">
1542               <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1543             </td>
1544
1545             <td class="entry_units">
1546             </td>
1547
1548             <td class="entry_range">
1549               <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1550             </td>
1551
1552             <td class="entry_hal_version">
1553               <p>3.<wbr/>2</p>
1554             </td>
1555
1556             <td class="entry_tags">
1557             </td>
1558
1559           </tr>
1560           <tr class="entries_header">
1561             <th class="th_details" colspan="6">Details</th>
1562           </tr>
1563           <tr class="entry_cont">
1564             <td class="entry_details" colspan="6">
1565               <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1566 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1567 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1568 minimize the chromatic artifacts that may occur along the object boundaries in an
1569 image.<wbr/></p>
1570 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1571 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1572 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1573 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1574 applying aberration correction.<wbr/></p>
1575 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1576             </td>
1577           </tr>
1578
1579
1580           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1581            <!-- end of entry -->
1582         
1583         
1584
1585       <!-- end of kind -->
1586       </tbody>
1587       <tr><td colspan="7" class="kind">dynamic</td></tr>
1588
1589       <thead class="entries_header">
1590         <tr>
1591           <th class="th_name">Property Name</th>
1592           <th class="th_type">Type</th>
1593           <th class="th_description">Description</th>
1594           <th class="th_units">Units</th>
1595           <th class="th_range">Range</th>
1596           <th class="th_hal_version">Initial HIDL HAL version</th>
1597           <th class="th_tags">Tags</th>
1598         </tr>
1599       </thead>
1600
1601       <tbody>
1602
1603         
1604
1605         
1606
1607         
1608
1609         
1610
1611                 
1612           <tr class="entry" id="dynamic_android.colorCorrection.mode">
1613             <td class="entry_name
1614              " rowspan="5">
1615               android.<wbr/>color<wbr/>Correction.<wbr/>mode
1616             </td>
1617             <td class="entry_type">
1618                 <span class="entry_type_name entry_type_name_enum">byte</span>
1619
1620               <span class="entry_type_visibility"> [public]</span>
1621
1622
1623               <span class="entry_type_hwlevel">[full] </span>
1624
1625
1626
1627                 <ul class="entry_type_enum">
1628                   <li>
1629                     <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1630                     <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1631 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1632 <p>All advanced white balance adjustments (not specified
1633 by our white balance pipeline) must be disabled.<wbr/></p>
1634 <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
1635 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1636 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1637                   </li>
1638                   <li>
1639                     <span class="entry_type_enum_name">FAST (v3.2)</span>
1640                     <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1641 capture rate relative to sensor raw output.<wbr/></p>
1642 <p>Advanced white balance adjustments above and beyond
1643 the specified white balance pipeline may be applied.<wbr/></p>
1644 <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
1645 the camera device uses the last frame's AWB values
1646 (or defaults if AWB has never been run).<wbr/></p></span>
1647                   </li>
1648                   <li>
1649                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1650                     <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1651 quality but the capture rate might be reduced (relative to sensor
1652 raw output rate)</p>
1653 <p>Advanced white balance adjustments above and beyond
1654 the specified white balance pipeline may be applied.<wbr/></p>
1655 <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
1656 the camera device uses the last frame's AWB values
1657 (or defaults if AWB has never been run).<wbr/></p></span>
1658                   </li>
1659                 </ul>
1660
1661             </td> <!-- entry_type -->
1662
1663             <td class="entry_description">
1664               <p>The mode control selects how the image data is converted from the
1665 sensor's native color into linear sRGB color.<wbr/></p>
1666             </td>
1667
1668             <td class="entry_units">
1669             </td>
1670
1671             <td class="entry_range">
1672             </td>
1673
1674             <td class="entry_hal_version">
1675               <p>3.<wbr/>2</p>
1676             </td>
1677
1678             <td class="entry_tags">
1679             </td>
1680
1681           </tr>
1682           <tr class="entries_header">
1683             <th class="th_details" colspan="6">Details</th>
1684           </tr>
1685           <tr class="entry_cont">
1686             <td class="entry_details" colspan="6">
1687               <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
1688 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1689 application controls how the color mapping is performed.<wbr/></p>
1690 <p>We define the expected processing pipeline below.<wbr/> For consistency
1691 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1692 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1693 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1694 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1695 camera device (in the results) and be roughly correct.<wbr/></p>
1696 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1697 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1698 as what was produced by the camera device in the earlier frame.<wbr/></p>
1699 <p>The expected processing pipeline is as follows:</p>
1700 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1701 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1702 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1703 matrix (applied after demosaic).<wbr/></p>
1704 <p>The 4-channel white-balance gains are defined as:</p>
1705 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1706 </code></pre>
1707 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1708 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1709 These may be identical for a given camera device implementation; if
1710 the camera device does not support a separate gain for even/<wbr/>odd green
1711 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1712 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1713 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1714 <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 ]
1715 </code></pre>
1716 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1717 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1718 <p>with colors as follows:</p>
1719 <pre><code>r' = I0r + I1g + I2b
1720 g' = I3r + I4g + I5b
1721 b' = I6r + I7g + I8b
1722 </code></pre>
1723 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1724 values are clipped to fit within the range.<wbr/></p>
1725             </td>
1726           </tr>
1727
1728           <tr class="entries_header">
1729             <th class="th_details" colspan="6">HAL Implementation Details</th>
1730           </tr>
1731           <tr class="entry_cont">
1732             <td class="entry_details" colspan="6">
1733               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1734 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1735 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1736 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1737             </td>
1738           </tr>
1739
1740           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1741            <!-- end of entry -->
1742         
1743                 
1744           <tr class="entry" id="dynamic_android.colorCorrection.transform">
1745             <td class="entry_name
1746              " rowspan="3">
1747               android.<wbr/>color<wbr/>Correction.<wbr/>transform
1748             </td>
1749             <td class="entry_type">
1750                 <span class="entry_type_name">rational</span>
1751                 <span class="entry_type_container">x</span>
1752
1753                 <span class="entry_type_array">
1754                   3 x 3
1755                 </span>
1756               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1757
1758
1759               <span class="entry_type_hwlevel">[full] </span>
1760
1761
1762                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1763
1764
1765             </td> <!-- entry_type -->
1766
1767             <td class="entry_description">
1768               <p>A color transform matrix to use to transform
1769 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1770             </td>
1771
1772             <td class="entry_units">
1773               Unitless scale factors
1774             </td>
1775
1776             <td class="entry_range">
1777             </td>
1778
1779             <td class="entry_hal_version">
1780               <p>3.<wbr/>2</p>
1781             </td>
1782
1783             <td class="entry_tags">
1784             </td>
1785
1786           </tr>
1787           <tr class="entries_header">
1788             <th class="th_details" colspan="6">Details</th>
1789           </tr>
1790           <tr class="entry_cont">
1791             <td class="entry_details" colspan="6">
1792               <p>This matrix is either set by the camera device when the request
1793 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1794 directly by the application in the request when the
1795 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1796 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1797 for precision issues; the final rounded matrix should be reported back
1798 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1799 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1800 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1801 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1802 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1803             </td>
1804           </tr>
1805
1806
1807           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1808            <!-- end of entry -->
1809         
1810                 
1811           <tr class="entry" id="dynamic_android.colorCorrection.gains">
1812             <td class="entry_name
1813              " rowspan="5">
1814               android.<wbr/>color<wbr/>Correction.<wbr/>gains
1815             </td>
1816             <td class="entry_type">
1817                 <span class="entry_type_name">float</span>
1818                 <span class="entry_type_container">x</span>
1819
1820                 <span class="entry_type_array">
1821                   4
1822                 </span>
1823               <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1824
1825
1826               <span class="entry_type_hwlevel">[full] </span>
1827
1828
1829                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1830
1831
1832             </td> <!-- entry_type -->
1833
1834             <td class="entry_description">
1835               <p>Gains applying to Bayer raw color channels for
1836 white-balance.<wbr/></p>
1837             </td>
1838
1839             <td class="entry_units">
1840               Unitless gain factors
1841             </td>
1842
1843             <td class="entry_range">
1844             </td>
1845
1846             <td class="entry_hal_version">
1847               <p>3.<wbr/>2</p>
1848             </td>
1849
1850             <td class="entry_tags">
1851             </td>
1852
1853           </tr>
1854           <tr class="entries_header">
1855             <th class="th_details" colspan="6">Details</th>
1856           </tr>
1857           <tr class="entry_cont">
1858             <td class="entry_details" colspan="6">
1859               <p>These per-channel gains are either set by the camera device
1860 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1861 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1862 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1863 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1864 <p>The gains in the result metadata are the gains actually
1865 applied by the camera device to the current frame.<wbr/></p>
1866 <p>The valid range of gains varies on different devices,<wbr/> but gains
1867 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1868 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1869 this can create color artifacts.<wbr/></p>
1870             </td>
1871           </tr>
1872
1873           <tr class="entries_header">
1874             <th class="th_details" colspan="6">HAL Implementation Details</th>
1875           </tr>
1876           <tr class="entry_cont">
1877             <td class="entry_details" colspan="6">
1878               <p>The 4-channel white-balance gains are defined in
1879 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1880 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1881 is the gain for green pixels on the odd rows.<wbr/></p>
1882 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1883 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1884 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1885             </td>
1886           </tr>
1887
1888           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1889            <!-- end of entry -->
1890         
1891                 
1892           <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1893             <td class="entry_name
1894              " rowspan="3">
1895               android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1896             </td>
1897             <td class="entry_type">
1898                 <span class="entry_type_name entry_type_name_enum">byte</span>
1899
1900               <span class="entry_type_visibility"> [public]</span>
1901
1902
1903               <span class="entry_type_hwlevel">[legacy] </span>
1904
1905
1906
1907                 <ul class="entry_type_enum">
1908                   <li>
1909                     <span class="entry_type_enum_name">OFF (v3.2)</span>
1910                     <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1911                   </li>
1912                   <li>
1913                     <span class="entry_type_enum_name">FAST (v3.2)</span>
1914                     <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1915 relative to sensor raw output.<wbr/></p></span>
1916                   </li>
1917                   <li>
1918                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1919                     <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1920 reduced (relative to sensor raw output rate)</p></span>
1921                   </li>
1922                 </ul>
1923
1924             </td> <!-- entry_type -->
1925
1926             <td class="entry_description">
1927               <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1928             </td>
1929
1930             <td class="entry_units">
1931             </td>
1932
1933             <td class="entry_range">
1934               <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1935             </td>
1936
1937             <td class="entry_hal_version">
1938               <p>3.<wbr/>2</p>
1939             </td>
1940
1941             <td class="entry_tags">
1942             </td>
1943
1944           </tr>
1945           <tr class="entries_header">
1946             <th class="th_details" colspan="6">Details</th>
1947           </tr>
1948           <tr class="entry_cont">
1949             <td class="entry_details" colspan="6">
1950               <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1951 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1952 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1953 minimize the chromatic artifacts that may occur along the object boundaries in an
1954 image.<wbr/></p>
1955 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1956 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1957 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1958 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1959 applying aberration correction.<wbr/></p>
1960 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1961             </td>
1962           </tr>
1963
1964
1965           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1966            <!-- end of entry -->
1967         
1968         
1969
1970       <!-- end of kind -->
1971       </tbody>
1972       <tr><td colspan="7" class="kind">static</td></tr>
1973
1974       <thead class="entries_header">
1975         <tr>
1976           <th class="th_name">Property Name</th>
1977           <th class="th_type">Type</th>
1978           <th class="th_description">Description</th>
1979           <th class="th_units">Units</th>
1980           <th class="th_range">Range</th>
1981           <th class="th_hal_version">Initial HIDL HAL version</th>
1982           <th class="th_tags">Tags</th>
1983         </tr>
1984       </thead>
1985
1986       <tbody>
1987
1988         
1989
1990         
1991
1992         
1993
1994         
1995
1996                 
1997           <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1998             <td class="entry_name
1999              " rowspan="5">
2000               android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
2001             </td>
2002             <td class="entry_type">
2003                 <span class="entry_type_name">byte</span>
2004                 <span class="entry_type_container">x</span>
2005
2006                 <span class="entry_type_array">
2007                   n
2008                 </span>
2009               <span class="entry_type_visibility"> [public as enumList]</span>
2010
2011
2012               <span class="entry_type_hwlevel">[legacy] </span>
2013
2014
2015                 <div class="entry_type_notes">list of enums</div>
2016
2017
2018             </td> <!-- entry_type -->
2019
2020             <td class="entry_description">
2021               <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
2022 supported by this camera device.<wbr/></p>
2023             </td>
2024
2025             <td class="entry_units">
2026             </td>
2027
2028             <td class="entry_range">
2029               <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
2030             </td>
2031
2032             <td class="entry_hal_version">
2033               <p>3.<wbr/>2</p>
2034             </td>
2035
2036             <td class="entry_tags">
2037               <ul class="entry_tags">
2038                   <li><a href="#tag_V1">V1</a></li>
2039               </ul>
2040             </td>
2041
2042           </tr>
2043           <tr class="entries_header">
2044             <th class="th_details" colspan="6">Details</th>
2045           </tr>
2046           <tr class="entry_cont">
2047             <td class="entry_details" colspan="6">
2048               <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
2049 aberration correction modes are available for a device,<wbr/> this list will solely include
2050 OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
2051 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
2052 OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
2053 <p>LEGACY devices will always only support FAST mode.<wbr/></p>
2054             </td>
2055           </tr>
2056
2057           <tr class="entries_header">
2058             <th class="th_details" colspan="6">HAL Implementation Details</th>
2059           </tr>
2060           <tr class="entry_cont">
2061             <td class="entry_details" colspan="6">
2062               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
2063 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
2064 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
2065 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
2066             </td>
2067           </tr>
2068
2069           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2070            <!-- end of entry -->
2071         
2072         
2073
2074       <!-- end of kind -->
2075       </tbody>
2076
2077   <!-- end of section -->
2078   <tr><td colspan="7" id="section_control" class="section">control</td></tr>
2079
2080
2081       <tr><td colspan="7" class="kind">controls</td></tr>
2082
2083       <thead class="entries_header">
2084         <tr>
2085           <th class="th_name">Property Name</th>
2086           <th class="th_type">Type</th>
2087           <th class="th_description">Description</th>
2088           <th class="th_units">Units</th>
2089           <th class="th_range">Range</th>
2090           <th class="th_hal_version">Initial HIDL HAL version</th>
2091           <th class="th_tags">Tags</th>
2092         </tr>
2093       </thead>
2094
2095       <tbody>
2096
2097         
2098
2099         
2100
2101         
2102
2103         
2104
2105                 
2106           <tr class="entry" id="controls_android.control.aeAntibandingMode">
2107             <td class="entry_name
2108              " rowspan="5">
2109               android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2110             </td>
2111             <td class="entry_type">
2112                 <span class="entry_type_name entry_type_name_enum">byte</span>
2113
2114               <span class="entry_type_visibility"> [public]</span>
2115
2116
2117               <span class="entry_type_hwlevel">[legacy] </span>
2118
2119
2120
2121                 <ul class="entry_type_enum">
2122                   <li>
2123                     <span class="entry_type_enum_name">OFF (v3.2)</span>
2124                     <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2125 avoid banding problems.<wbr/></p></span>
2126                   </li>
2127                   <li>
2128                     <span class="entry_type_enum_name">50HZ (v3.2)</span>
2129                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2130 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2131                   </li>
2132                   <li>
2133                     <span class="entry_type_enum_name">60HZ (v3.2)</span>
2134                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2135 avoid banding problems with 60Hz illumination
2136 sources.<wbr/></p></span>
2137                   </li>
2138                   <li>
2139                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
2140                     <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2141 antibanding routine to the current illumination
2142 condition.<wbr/> This is the default mode if AUTO is
2143 available on given camera device.<wbr/></p></span>
2144                   </li>
2145                 </ul>
2146
2147             </td> <!-- entry_type -->
2148
2149             <td class="entry_description">
2150               <p>The desired setting for the camera device's auto-exposure
2151 algorithm's antibanding compensation.<wbr/></p>
2152             </td>
2153
2154             <td class="entry_units">
2155             </td>
2156
2157             <td class="entry_range">
2158               <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2159             </td>
2160
2161             <td class="entry_hal_version">
2162               <p>3.<wbr/>2</p>
2163             </td>
2164
2165             <td class="entry_tags">
2166               <ul class="entry_tags">
2167                   <li><a href="#tag_BC">BC</a></li>
2168               </ul>
2169             </td>
2170
2171           </tr>
2172           <tr class="entries_header">
2173             <th class="th_details" colspan="6">Details</th>
2174           </tr>
2175           <tr class="entry_cont">
2176             <td class="entry_details" colspan="6">
2177               <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2178 lights,<wbr/> flicker at the rate of the power supply frequency
2179 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2180 typically not noticeable to a person,<wbr/> it can be visible to
2181 a camera device.<wbr/> If a camera sets its exposure time to the
2182 wrong value,<wbr/> the flicker may become visible in the
2183 viewfinder as flicker or in a final captured image,<wbr/> as a
2184 set of variable-brightness bands across the image.<wbr/></p>
2185 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
2186 include antibanding routines that ensure that the chosen
2187 exposure value will not cause such banding.<wbr/> The choice of
2188 exposure time depends on the rate of flicker,<wbr/> which the
2189 camera device can detect automatically,<wbr/> or the expected
2190 rate can be selected by the application using this
2191 control.<wbr/></p>
2192 <p>A given camera device may not support all of the possible
2193 options for the antibanding mode.<wbr/> The
2194 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2195 the available modes for a given camera device.<wbr/></p>
2196 <p>AUTO mode is the default if it is available on given
2197 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2198 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2199 and 60HZ will be available.<wbr/></p>
2200 <p>If manual exposure control is enabled (by setting
2201 <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/>
2202 then this setting has no effect,<wbr/> and the application must
2203 ensure it selects exposure times that do not cause banding
2204 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2205 the application in this.<wbr/></p>
2206             </td>
2207           </tr>
2208
2209           <tr class="entries_header">
2210             <th class="th_details" colspan="6">HAL Implementation Details</th>
2211           </tr>
2212           <tr class="entry_cont">
2213             <td class="entry_details" colspan="6">
2214               <p>For all capture request templates,<wbr/> this field must be set
2215 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2216 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
2217 60HZ must be available.<wbr/></p>
2218 <p>If manual exposure control is enabled (by setting
2219 <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/>
2220 then the exposure values provided by the application must not be
2221 adjusted for antibanding.<wbr/></p>
2222             </td>
2223           </tr>
2224
2225           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2226            <!-- end of entry -->
2227         
2228                 
2229           <tr class="entry" id="controls_android.control.aeExposureCompensation">
2230             <td class="entry_name
2231              " rowspan="3">
2232               android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2233             </td>
2234             <td class="entry_type">
2235                 <span class="entry_type_name">int32</span>
2236
2237               <span class="entry_type_visibility"> [public]</span>
2238
2239
2240               <span class="entry_type_hwlevel">[legacy] </span>
2241
2242
2243
2244
2245             </td> <!-- entry_type -->
2246
2247             <td class="entry_description">
2248               <p>Adjustment to auto-exposure (AE) target image
2249 brightness.<wbr/></p>
2250             </td>
2251
2252             <td class="entry_units">
2253               Compensation steps
2254             </td>
2255
2256             <td class="entry_range">
2257               <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2258             </td>
2259
2260             <td class="entry_hal_version">
2261               <p>3.<wbr/>2</p>
2262             </td>
2263
2264             <td class="entry_tags">
2265               <ul class="entry_tags">
2266                   <li><a href="#tag_BC">BC</a></li>
2267               </ul>
2268             </td>
2269
2270           </tr>
2271           <tr class="entries_header">
2272             <th class="th_details" colspan="6">Details</th>
2273           </tr>
2274           <tr class="entry_cont">
2275             <td class="entry_details" colspan="6">
2276               <p>The adjustment is measured as a count of steps,<wbr/> with the
2277 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2278 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2279 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2280 will mean an exposure compensation of +2 EV; -3 will mean an
2281 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2282 of image brightness.<wbr/> Note that this control will only be
2283 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2284 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2285 <p>In the event of exposure compensation value being changed,<wbr/> camera device
2286 may take several frames to reach the newly requested exposure target.<wbr/>
2287 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2288 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
2289 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2290 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2291             </td>
2292           </tr>
2293
2294
2295           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2296            <!-- end of entry -->
2297         
2298                 
2299           <tr class="entry" id="controls_android.control.aeLock">
2300             <td class="entry_name
2301              " rowspan="3">
2302               android.<wbr/>control.<wbr/>ae<wbr/>Lock
2303             </td>
2304             <td class="entry_type">
2305                 <span class="entry_type_name entry_type_name_enum">byte</span>
2306
2307               <span class="entry_type_visibility"> [public as boolean]</span>
2308
2309
2310               <span class="entry_type_hwlevel">[legacy] </span>
2311
2312
2313
2314                 <ul class="entry_type_enum">
2315                   <li>
2316                     <span class="entry_type_enum_name">OFF (v3.2)</span>
2317                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2318 is free to update its parameters.<wbr/></p></span>
2319                   </li>
2320                   <li>
2321                     <span class="entry_type_enum_name">ON (v3.2)</span>
2322                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2323 must not update the exposure and sensitivity parameters
2324 while the lock is active.<wbr/></p>
2325 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2326 will still take effect while auto-exposure is locked.<wbr/></p>
2327 <p>Some rare LEGACY devices may not support
2328 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2329                   </li>
2330                 </ul>
2331
2332             </td> <!-- entry_type -->
2333
2334             <td class="entry_description">
2335               <p>Whether auto-exposure (AE) is currently locked to its latest
2336 calculated values.<wbr/></p>
2337             </td>
2338
2339             <td class="entry_units">
2340             </td>
2341
2342             <td class="entry_range">
2343             </td>
2344
2345             <td class="entry_hal_version">
2346               <p>3.<wbr/>2</p>
2347             </td>
2348
2349             <td class="entry_tags">
2350               <ul class="entry_tags">
2351                   <li><a href="#tag_BC">BC</a></li>
2352               </ul>
2353             </td>
2354
2355           </tr>
2356           <tr class="entries_header">
2357             <th class="th_details" colspan="6">Details</th>
2358           </tr>
2359           <tr class="entry_cont">
2360             <td class="entry_details" colspan="6">
2361               <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2362 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2363 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
2364 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2365 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2366 <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
2367 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2368 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2369 when AE is already locked,<wbr/> the camera device will not change the exposure time
2370 (<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>)
2371 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2372 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2373 <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/>
2374 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2375 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2376 the AE if AE is locked by the camera device internally during precapture metering
2377 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2378 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2379 will never succeed in a sequence of preview requests where AE lock is always set
2380 to <code>false</code>.<wbr/></p>
2381 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2382 get locked do not necessarily correspond to the settings that were present in the
2383 latest capture result received from the camera device,<wbr/> since additional captures
2384 and AE updates may have occurred even before the result was sent out.<wbr/> If an
2385 application is switching between automatic and manual control and wishes to eliminate
2386 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2387 <ol>
2388 <li>Starting in auto-AE mode:</li>
2389 <li>Lock AE</li>
2390 <li>Wait for the first result to be output that has the AE locked</li>
2391 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2392 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2393 </ol>
2394 <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>
2395             </td>
2396           </tr>
2397
2398
2399           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2400            <!-- end of entry -->
2401         
2402                 
2403           <tr class="entry" id="controls_android.control.aeMode">
2404             <td class="entry_name
2405              " rowspan="3">
2406               android.<wbr/>control.<wbr/>ae<wbr/>Mode
2407             </td>
2408             <td class="entry_type">
2409                 <span class="entry_type_name entry_type_name_enum">byte</span>
2410
2411               <span class="entry_type_visibility"> [public]</span>
2412
2413
2414               <span class="entry_type_hwlevel">[legacy] </span>
2415
2416
2417
2418                 <ul class="entry_type_enum">
2419                   <li>
2420                     <span class="entry_type_enum_name">OFF (v3.2)</span>
2421                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2422 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2423 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2424 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2425 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2426 a flash unit for this camera device.<wbr/></p>
2427 <p>Note that auto-white balance (AWB) and auto-focus (AF)
2428 behavior is device dependent when AE is in OFF mode.<wbr/>
2429 To have consistent behavior across different devices,<wbr/>
2430 it is recommended to either set AWB and AF to OFF mode
2431 or lock AWB and AF before setting AE to OFF.<wbr/>
2432 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/>
2433 <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>
2434 for more details.<wbr/></p>
2435 <p>LEGACY devices do not support the OFF mode and will
2436 override attempts to use this value to ON.<wbr/></p></span>
2437                   </li>
2438                   <li>
2439                     <span class="entry_type_enum_name">ON (v3.2)</span>
2440                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2441 with no flash control.<wbr/></p>
2442 <p>The application's values for
2443 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2444 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2445 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2446 application has control over the various
2447 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2448                   </li>
2449                   <li>
2450                     <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
2451                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2452 the camera's flash unit,<wbr/> firing it in low-light
2453 conditions.<wbr/></p>
2454 <p>The flash may be fired during a precapture sequence
2455 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2456 may be fired for captures for which the
2457 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2458 STILL_<wbr/>CAPTURE</p></span>
2459                   </li>
2460                   <li>
2461                     <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
2462                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2463 the camera's flash unit,<wbr/> always firing it for still
2464 captures.<wbr/></p>
2465 <p>The flash may be fired during a precapture sequence
2466 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2467 will always be fired for captures for which the
2468 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2469 STILL_<wbr/>CAPTURE</p></span>
2470                   </li>
2471                   <li>
2472                     <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
2473                     <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2474 reduction.<wbr/></p>
2475 <p>If deemed necessary by the camera device,<wbr/> a red eye
2476 reduction flash will fire during the precapture
2477 sequence.<wbr/></p></span>
2478                   </li>
2479                   <li>
2480                     <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
2481                     <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
2482 <p>It informs the camera device that an external flash has been turned on,<wbr/> and that
2483 metering (and continuous focus if active) should be quickly recaculated to account
2484 for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
2485 <p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
2486 other available AE modes.<wbr/></p>
2487 <p>If the camera device supports AE external flash mode,<wbr/> aeState must be
2488 FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
2489 flash.<wbr/></p></span>
2490                   </li>
2491                 </ul>
2492
2493             </td> <!-- entry_type -->
2494
2495             <td class="entry_description">
2496               <p>The desired mode for the camera device's
2497 auto-exposure routine.<wbr/></p>
2498             </td>
2499
2500             <td class="entry_units">
2501             </td>
2502
2503             <td class="entry_range">
2504               <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2505             </td>
2506
2507             <td class="entry_hal_version">
2508               <p>3.<wbr/>2</p>
2509             </td>
2510
2511             <td class="entry_tags">
2512               <ul class="entry_tags">
2513                   <li><a href="#tag_BC">BC</a></li>
2514               </ul>
2515             </td>
2516
2517           </tr>
2518           <tr class="entries_header">
2519             <th class="th_details" colspan="6">Details</th>
2520           </tr>
2521           <tr class="entry_cont">
2522             <td class="entry_details" colspan="6">
2523               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2524 AUTO.<wbr/></p>
2525 <p>When set to any of the ON modes,<wbr/> the camera device's
2526 auto-exposure routine is enabled,<wbr/> overriding the
2527 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2528 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2529 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2530 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2531 is selected,<wbr/> the camera device's flash unit controls are
2532 also overridden.<wbr/></p>
2533 <p>The FLASH modes are only available if the camera device
2534 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>
2535 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
2536 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2537 <p>When set to any of the ON modes,<wbr/> the values chosen by the
2538 camera device auto-exposure routine for the overridden
2539 fields for a given capture will be available in its
2540 CaptureResult.<wbr/></p>
2541             </td>
2542           </tr>
2543
2544
2545           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2546            <!-- end of entry -->
2547         
2548                 
2549           <tr class="entry" id="controls_android.control.aeRegions">
2550             <td class="entry_name
2551              " rowspan="5">
2552               android.<wbr/>control.<wbr/>ae<wbr/>Regions
2553             </td>
2554             <td class="entry_type">
2555                 <span class="entry_type_name">int32</span>
2556                 <span class="entry_type_container">x</span>
2557
2558                 <span class="entry_type_array">
2559                   5 x area_count
2560                 </span>
2561               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2562
2563
2564
2565
2566
2567
2568             </td> <!-- entry_type -->
2569
2570             <td class="entry_description">
2571               <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2572             </td>
2573
2574             <td class="entry_units">
2575               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2576             </td>
2577
2578             <td class="entry_range">
2579               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2580 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2581             </td>
2582
2583             <td class="entry_hal_version">
2584               <p>3.<wbr/>2</p>
2585             </td>
2586
2587             <td class="entry_tags">
2588               <ul class="entry_tags">
2589                   <li><a href="#tag_BC">BC</a></li>
2590               </ul>
2591             </td>
2592
2593           </tr>
2594           <tr class="entries_header">
2595             <th class="th_details" colspan="6">Details</th>
2596           </tr>
2597           <tr class="entry_cont">
2598             <td class="entry_details" colspan="6">
2599               <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2600 Otherwise will always be present.<wbr/></p>
2601 <p>The maximum number of regions supported by the device is determined by the value
2602 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2603 <p>The coordinate system is based on the active pixel array,<wbr/>
2604 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2605 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2606 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2607 bottom-right pixel in the active pixel array.<wbr/></p>
2608 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2609 for every pixel in the area.<wbr/> This means that a large metering area
2610 with the same weight as a smaller area will have more effect in
2611 the metering result.<wbr/> Metering areas can partially overlap and the
2612 camera device will add the weights in the overlap region.<wbr/></p>
2613 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2614 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2615 weight is ignored.<wbr/></p>
2616 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2617 camera device.<wbr/></p>
2618 <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
2619 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2620 region and output only the intersection rectangle as the metering region in the result
2621 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
2622 not reported in the result metadata.<wbr/></p>
2623             </td>
2624           </tr>
2625
2626           <tr class="entries_header">
2627             <th class="th_details" colspan="6">HAL Implementation Details</th>
2628           </tr>
2629           <tr class="entry_cont">
2630             <td class="entry_details" colspan="6">
2631               <p>The HAL level representation of MeteringRectangle[] is a
2632 int[5 * area_<wbr/>count].<wbr/>
2633 Every five elements represent a metering region of
2634 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2635 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2636 exclusive on xmax and ymax.<wbr/></p>
2637             </td>
2638           </tr>
2639
2640           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2641            <!-- end of entry -->
2642         
2643                 
2644           <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2645             <td class="entry_name
2646              " rowspan="3">
2647               android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2648             </td>
2649             <td class="entry_type">
2650                 <span class="entry_type_name">int32</span>
2651                 <span class="entry_type_container">x</span>
2652
2653                 <span class="entry_type_array">
2654                   2
2655                 </span>
2656               <span class="entry_type_visibility"> [public as rangeInt]</span>
2657
2658
2659               <span class="entry_type_hwlevel">[legacy] </span>
2660
2661
2662
2663
2664             </td> <!-- entry_type -->
2665
2666             <td class="entry_description">
2667               <p>Range over which the auto-exposure routine can
2668 adjust the capture frame rate to maintain good
2669 exposure.<wbr/></p>
2670             </td>
2671
2672             <td class="entry_units">
2673               Frames per second (FPS)
2674             </td>
2675
2676             <td class="entry_range">
2677               <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>
2678             </td>
2679
2680             <td class="entry_hal_version">
2681               <p>3.<wbr/>2</p>
2682             </td>
2683
2684             <td class="entry_tags">
2685               <ul class="entry_tags">
2686                   <li><a href="#tag_BC">BC</a></li>
2687               </ul>
2688             </td>
2689
2690           </tr>
2691           <tr class="entries_header">
2692             <th class="th_details" colspan="6">Details</th>
2693           </tr>
2694           <tr class="entry_cont">
2695             <td class="entry_details" colspan="6">
2696               <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2697 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2698 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2699             </td>
2700           </tr>
2701
2702
2703           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2704            <!-- end of entry -->
2705         
2706                 
2707           <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2708             <td class="entry_name
2709              " rowspan="5">
2710               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2711             </td>
2712             <td class="entry_type">
2713                 <span class="entry_type_name entry_type_name_enum">byte</span>
2714
2715               <span class="entry_type_visibility"> [public]</span>
2716
2717
2718               <span class="entry_type_hwlevel">[limited] </span>
2719
2720
2721
2722                 <ul class="entry_type_enum">
2723                   <li>
2724                     <span class="entry_type_enum_name">IDLE (v3.2)</span>
2725                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2726                   </li>
2727                   <li>
2728                     <span class="entry_type_enum_name">START (v3.2)</span>
2729                     <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2730 by the camera device.<wbr/></p>
2731 <p>The exact effect of the precapture trigger depends on
2732 the current AE mode and state.<wbr/></p></span>
2733                   </li>
2734                   <li>
2735                     <span class="entry_type_enum_name">CANCEL (v3.2)</span>
2736                     <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2737 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2738 initial state.<wbr/></p></span>
2739                   </li>
2740                 </ul>
2741
2742             </td> <!-- entry_type -->
2743
2744             <td class="entry_description">
2745               <p>Whether the camera device will trigger a precapture
2746 metering sequence when it processes this request.<wbr/></p>
2747             </td>
2748
2749             <td class="entry_units">
2750             </td>
2751
2752             <td class="entry_range">
2753             </td>
2754
2755             <td class="entry_hal_version">
2756               <p>3.<wbr/>2</p>
2757             </td>
2758
2759             <td class="entry_tags">
2760               <ul class="entry_tags">
2761                   <li><a href="#tag_BC">BC</a></li>
2762               </ul>
2763             </td>
2764
2765           </tr>
2766           <tr class="entries_header">
2767             <th class="th_details" colspan="6">Details</th>
2768           </tr>
2769           <tr class="entry_cont">
2770             <td class="entry_details" colspan="6">
2771               <p>This entry is normally set to IDLE,<wbr/> or is not
2772 included at all in the request settings.<wbr/> When included and
2773 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2774 precapture metering sequence.<wbr/></p>
2775 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
2776 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2777 If a precapture metering sequence is already completed,<wbr/> and the camera
2778 device has implicitly locked the AE for subsequent still capture,<wbr/> the
2779 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2780 <p>The precapture sequence should be triggered before starting a
2781 high-quality still capture for final metering decisions to
2782 be made,<wbr/> and for firing pre-capture flash pulses to estimate
2783 scene brightness and required final capture flash power,<wbr/> when
2784 the flash is enabled.<wbr/></p>
2785 <p>Normally,<wbr/> this entry should be set to START for only a
2786 single request,<wbr/> and the application should wait until the
2787 sequence completes before starting a new one.<wbr/></p>
2788 <p>When a precapture metering sequence is finished,<wbr/> the camera device
2789 may lock the auto-exposure routine internally to be able to accurately expose the
2790 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2791 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2792 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2793 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
2794 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
2795 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2796 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2797 internally locked AE if the application doesn't submit a still capture request after
2798 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2799 be used in devices that have earlier API levels.<wbr/></p>
2800 <p>The exact effect of auto-exposure (AE) precapture trigger
2801 depends on the current AE mode and state; see
2802 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2803 details.<wbr/></p>
2804 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2805 capturing a high-resolution JPEG image will automatically trigger a
2806 precapture sequence before the high-resolution capture,<wbr/> including
2807 potentially firing a pre-capture flash.<wbr/></p>
2808 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2809 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2810 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2811 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2812 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2813 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
2814 example.<wbr/></p>
2815 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2816 the camera device will complete them in the optimal order for that device.<wbr/></p>
2817             </td>
2818           </tr>
2819
2820           <tr class="entries_header">
2821             <th class="th_details" colspan="6">HAL Implementation Details</th>
2822           </tr>
2823           <tr class="entry_cont">
2824             <td class="entry_details" colspan="6">
2825               <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2826 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
2827 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2828 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2829 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2830             </td>
2831           </tr>
2832
2833           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2834            <!-- end of entry -->
2835         
2836                 
2837           <tr class="entry" id="controls_android.control.afMode">
2838             <td class="entry_name
2839              " rowspan="5">
2840               android.<wbr/>control.<wbr/>af<wbr/>Mode
2841             </td>
2842             <td class="entry_type">
2843                 <span class="entry_type_name entry_type_name_enum">byte</span>
2844
2845               <span class="entry_type_visibility"> [public]</span>
2846
2847
2848               <span class="entry_type_hwlevel">[legacy] </span>
2849
2850
2851
2852                 <ul class="entry_type_enum">
2853                   <li>
2854                     <span class="entry_type_enum_name">OFF (v3.2)</span>
2855                     <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2856 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2857 application.<wbr/></p></span>
2858                   </li>
2859                   <li>
2860                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
2861                     <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2862 <p>In this mode,<wbr/> the lens does not move unless
2863 the autofocus trigger action is called.<wbr/> When that trigger
2864 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2865 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2866 <p>Always supported if lens is not fixed focus.<wbr/></p>
2867 <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
2868 is fixed-focus.<wbr/></p>
2869 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2870 and sets the AF state to INACTIVE.<wbr/></p></span>
2871                   </li>
2872                   <li>
2873                     <span class="entry_type_enum_name">MACRO (v3.2)</span>
2874                     <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2875 <p>In this mode,<wbr/> the lens does not move unless the
2876 autofocus trigger action is called.<wbr/> When that trigger is
2877 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2878 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2879 mode is optimized for focusing on objects very close to
2880 the camera.<wbr/></p>
2881 <p>When that trigger is activated,<wbr/> AF will transition to
2882 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2883 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2884 position to default,<wbr/> and sets the AF state to
2885 INACTIVE.<wbr/></p></span>
2886                   </li>
2887                   <li>
2888                     <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
2889                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2890 position continually to attempt to provide a
2891 constantly-in-focus image stream.<wbr/></p>
2892 <p>The focusing behavior should be suitable for good quality
2893 video recording; typically this means slower focus
2894 movement and no overshoots.<wbr/> When the AF trigger is not
2895 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2896 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2897 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2898 the algorithm should immediately transition into
2899 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2900 lens position until a cancel AF trigger is received.<wbr/></p>
2901 <p>Once cancel is received,<wbr/> the algorithm should transition
2902 back to INACTIVE and resume passive scan.<wbr/> Note that this
2903 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2904 ongoing PASSIVE_<wbr/>SCAN must immediately be
2905 canceled.<wbr/></p></span>
2906                   </li>
2907                   <li>
2908                     <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
2909                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2910 position continually to attempt to provide a
2911 constantly-in-focus image stream.<wbr/></p>
2912 <p>The focusing behavior should be suitable for still image
2913 capture; typically this means focusing as fast as
2914 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2915 algorithm should start in INACTIVE state,<wbr/> and then
2916 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2917 appropriate as it attempts to maintain focus.<wbr/> When the AF
2918 trigger is activated,<wbr/> the algorithm should finish its
2919 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2920 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2921 lens position until a cancel AF trigger is received.<wbr/></p>
2922 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
2923 should transition back to INACTIVE and then act as if it
2924 has just been started.<wbr/></p></span>
2925                   </li>
2926                   <li>
2927                     <span class="entry_type_enum_name">EDOF (v3.2)</span>
2928                     <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2929 <p>The camera device will produce images with an extended
2930 depth of field automatically; no special focusing
2931 operations need to be done before taking a picture.<wbr/></p>
2932 <p>AF triggers are ignored,<wbr/> and the AF state will always be
2933 INACTIVE.<wbr/></p></span>
2934                   </li>
2935                 </ul>
2936
2937             </td> <!-- entry_type -->
2938
2939             <td class="entry_description">
2940               <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2941 mode it is set to.<wbr/></p>
2942             </td>
2943
2944             <td class="entry_units">
2945             </td>
2946
2947             <td class="entry_range">
2948               <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2949             </td>
2950
2951             <td class="entry_hal_version">
2952               <p>3.<wbr/>2</p>
2953             </td>
2954
2955             <td class="entry_tags">
2956               <ul class="entry_tags">
2957                   <li><a href="#tag_BC">BC</a></li>
2958               </ul>
2959             </td>
2960
2961           </tr>
2962           <tr class="entries_header">
2963             <th class="th_details" colspan="6">Details</th>
2964           </tr>
2965           <tr class="entry_cont">
2966             <td class="entry_details" colspan="6">
2967               <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2968 (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
2969 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2970 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
2971 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>
2972 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2973 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2974 in result metadata.<wbr/></p>
2975             </td>
2976           </tr>
2977
2978           <tr class="entries_header">
2979             <th class="th_details" colspan="6">HAL Implementation Details</th>
2980           </tr>
2981           <tr class="entry_cont">
2982             <td class="entry_details" colspan="6">
2983               <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2984 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
2985 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2986 <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
2987 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2988 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2989 the same focal plane remains in focus.<wbr/></p>
2990 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2991 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2992 (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
2993 same lock behavior as above.<wbr/></p>
2994 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2995 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/>
2996 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2997 manual control.<wbr/></p>
2998 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2999 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
3000 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
3001 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
3002 that will arise on camera modules with open-loop VCMs.<wbr/></p>
3003             </td>
3004           </tr>
3005
3006           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3007            <!-- end of entry -->
3008         
3009                 
3010           <tr class="entry" id="controls_android.control.afRegions">
3011             <td class="entry_name
3012              " rowspan="5">
3013               android.<wbr/>control.<wbr/>af<wbr/>Regions
3014             </td>
3015             <td class="entry_type">
3016                 <span class="entry_type_name">int32</span>
3017                 <span class="entry_type_container">x</span>
3018
3019                 <span class="entry_type_array">
3020                   5 x area_count
3021                 </span>
3022               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3023
3024
3025
3026
3027
3028
3029             </td> <!-- entry_type -->
3030
3031             <td class="entry_description">
3032               <p>List of metering areas to use for auto-focus.<wbr/></p>
3033             </td>
3034
3035             <td class="entry_units">
3036               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3037             </td>
3038
3039             <td class="entry_range">
3040               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3041 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3042             </td>
3043
3044             <td class="entry_hal_version">
3045               <p>3.<wbr/>2</p>
3046             </td>
3047
3048             <td class="entry_tags">
3049               <ul class="entry_tags">
3050                   <li><a href="#tag_BC">BC</a></li>
3051               </ul>
3052             </td>
3053
3054           </tr>
3055           <tr class="entries_header">
3056             <th class="th_details" colspan="6">Details</th>
3057           </tr>
3058           <tr class="entry_cont">
3059             <td class="entry_details" colspan="6">
3060               <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
3061 Otherwise will always be present.<wbr/></p>
3062 <p>The maximum number of focus areas supported by the device is determined by the value
3063 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
3064 <p>The coordinate system is based on the active pixel array,<wbr/>
3065 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3066 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3067 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3068 bottom-right pixel in the active pixel array.<wbr/></p>
3069 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
3070 for every pixel in the area.<wbr/> This means that a large metering area
3071 with the same weight as a smaller area will have more effect in
3072 the metering result.<wbr/> Metering areas can partially overlap and the
3073 camera device will add the weights in the overlap region.<wbr/></p>
3074 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
3075 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
3076 ignored.<wbr/></p>
3077 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3078 camera device.<wbr/></p>
3079 <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
3080 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3081 region and output only the intersection rectangle as the metering region in the result
3082 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3083 not reported in the result metadata.<wbr/></p>
3084             </td>
3085           </tr>
3086
3087           <tr class="entries_header">
3088             <th class="th_details" colspan="6">HAL Implementation Details</th>
3089           </tr>
3090           <tr class="entry_cont">
3091             <td class="entry_details" colspan="6">
3092               <p>The HAL level representation of MeteringRectangle[] is a
3093 int[5 * area_<wbr/>count].<wbr/>
3094 Every five elements represent a metering region of
3095 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3096 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3097 exclusive on xmax and ymax.<wbr/></p>
3098             </td>
3099           </tr>
3100
3101           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3102            <!-- end of entry -->
3103         
3104                 
3105           <tr class="entry" id="controls_android.control.afTrigger">
3106             <td class="entry_name
3107              " rowspan="5">
3108               android.<wbr/>control.<wbr/>af<wbr/>Trigger
3109             </td>
3110             <td class="entry_type">
3111                 <span class="entry_type_name entry_type_name_enum">byte</span>
3112
3113               <span class="entry_type_visibility"> [public]</span>
3114
3115
3116               <span class="entry_type_hwlevel">[legacy] </span>
3117
3118
3119
3120                 <ul class="entry_type_enum">
3121                   <li>
3122                     <span class="entry_type_enum_name">IDLE (v3.2)</span>
3123                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
3124                   </li>
3125                   <li>
3126                     <span class="entry_type_enum_name">START (v3.2)</span>
3127                     <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
3128                   </li>
3129                   <li>
3130                     <span class="entry_type_enum_name">CANCEL (v3.2)</span>
3131                     <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
3132 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
3133                   </li>
3134                 </ul>
3135
3136             </td> <!-- entry_type -->
3137
3138             <td class="entry_description">
3139               <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
3140             </td>
3141
3142             <td class="entry_units">
3143             </td>
3144
3145             <td class="entry_range">
3146             </td>
3147
3148             <td class="entry_hal_version">
3149               <p>3.<wbr/>2</p>
3150             </td>
3151
3152             <td class="entry_tags">
3153               <ul class="entry_tags">
3154                   <li><a href="#tag_BC">BC</a></li>
3155               </ul>
3156             </td>
3157
3158           </tr>
3159           <tr class="entries_header">
3160             <th class="th_details" colspan="6">Details</th>
3161           </tr>
3162           <tr class="entry_cont">
3163             <td class="entry_details" colspan="6">
3164               <p>This entry is normally set to IDLE,<wbr/> or is not
3165 included at all in the request settings.<wbr/></p>
3166 <p>When included and set to START,<wbr/> the camera device will trigger the
3167 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3168 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3169 and return to its initial AF state.<wbr/></p>
3170 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3171 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3172 START for multiple captures in a row means restarting the AF operation over
3173 and over again.<wbr/></p>
3174 <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>
3175 <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>
3176 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3177 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3178 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3179 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3180 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3181             </td>
3182           </tr>
3183
3184           <tr class="entries_header">
3185             <th class="th_details" colspan="6">HAL Implementation Details</th>
3186           </tr>
3187           <tr class="entry_cont">
3188             <td class="entry_details" colspan="6">
3189               <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3190 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
3191 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3192 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3193 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3194             </td>
3195           </tr>
3196
3197           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3198            <!-- end of entry -->
3199         
3200                 
3201           <tr class="entry" id="controls_android.control.awbLock">
3202             <td class="entry_name
3203              " rowspan="3">
3204               android.<wbr/>control.<wbr/>awb<wbr/>Lock
3205             </td>
3206             <td class="entry_type">
3207                 <span class="entry_type_name entry_type_name_enum">byte</span>
3208
3209               <span class="entry_type_visibility"> [public as boolean]</span>
3210
3211
3212               <span class="entry_type_hwlevel">[legacy] </span>
3213
3214
3215
3216                 <ul class="entry_type_enum">
3217                   <li>
3218                     <span class="entry_type_enum_name">OFF (v3.2)</span>
3219                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3220 algorithm is free to update its parameters if in AUTO
3221 mode.<wbr/></p></span>
3222                   </li>
3223                   <li>
3224                     <span class="entry_type_enum_name">ON (v3.2)</span>
3225                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3226 algorithm will not update its parameters while the lock
3227 is active.<wbr/></p></span>
3228                   </li>
3229                 </ul>
3230
3231             </td> <!-- entry_type -->
3232
3233             <td class="entry_description">
3234               <p>Whether auto-white balance (AWB) is currently locked to its
3235 latest calculated values.<wbr/></p>
3236             </td>
3237
3238             <td class="entry_units">
3239             </td>
3240
3241             <td class="entry_range">
3242             </td>
3243
3244             <td class="entry_hal_version">
3245               <p>3.<wbr/>2</p>
3246             </td>
3247
3248             <td class="entry_tags">
3249               <ul class="entry_tags">
3250                   <li><a href="#tag_BC">BC</a></li>
3251               </ul>
3252             </td>
3253
3254           </tr>
3255           <tr class="entries_header">
3256             <th class="th_details" colspan="6">Details</th>
3257           </tr>
3258           <tr class="entry_cont">
3259             <td class="entry_details" colspan="6">
3260               <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3261 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3262 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3263 get locked do not necessarily correspond to the settings that were present in the
3264 latest capture result received from the camera device,<wbr/> since additional captures
3265 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3266 application is switching between automatic and manual control and wishes to eliminate
3267 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3268 <ol>
3269 <li>Starting in auto-AWB mode:</li>
3270 <li>Lock AWB</li>
3271 <li>Wait for the first result to be output that has the AWB locked</li>
3272 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3273 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3274 </ol>
3275 <p>Note that AWB lock is only meaningful when
3276 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3277 AWB is already fixed to a specific setting.<wbr/></p>
3278 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3279             </td>
3280           </tr>
3281
3282
3283           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3284            <!-- end of entry -->
3285         
3286                 
3287           <tr class="entry" id="controls_android.control.awbMode">
3288             <td class="entry_name
3289              " rowspan="3">
3290               android.<wbr/>control.<wbr/>awb<wbr/>Mode
3291             </td>
3292             <td class="entry_type">
3293                 <span class="entry_type_name entry_type_name_enum">byte</span>
3294
3295               <span class="entry_type_visibility"> [public]</span>
3296
3297
3298               <span class="entry_type_hwlevel">[legacy] </span>
3299
3300
3301
3302                 <ul class="entry_type_enum">
3303                   <li>
3304                     <span class="entry_type_enum_name">OFF (v3.2)</span>
3305                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3306 <p>The application-selected color transform matrix
3307 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3308 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3309 device for manual white balance control.<wbr/></p></span>
3310                   </li>
3311                   <li>
3312                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
3313                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<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">INCANDESCENT (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 incandescent 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 A.<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">FLUORESCENT (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 fluorescent light as the assumed scene
3338 illumination for white balance.<wbr/></p>
3339 <p>While the exact white balance transforms are up to the
3340 camera device,<wbr/> they will approximately match the CIE
3341 standard illuminant F2.<wbr/></p>
3342 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3343 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3344 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3345 values used by the camera device for the transform and gains
3346 will be available in the capture result for this request.<wbr/></p></span>
3347                   </li>
3348                   <li>
3349                     <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
3350                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3351 the camera device uses warm fluorescent light as the assumed scene
3352 illumination for white balance.<wbr/></p>
3353 <p>While the exact white balance transforms are up to the
3354 camera device,<wbr/> they will approximately match the CIE
3355 standard illuminant F4.<wbr/></p>
3356 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3357 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3358 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3359 values used by the camera device for the transform and gains
3360 will be available in the capture result for this request.<wbr/></p></span>
3361                   </li>
3362                   <li>
3363                     <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
3364                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3365 the camera device uses daylight light as the assumed scene
3366 illumination for white balance.<wbr/></p>
3367 <p>While the exact white balance transforms are up to the
3368 camera device,<wbr/> they will approximately match the CIE
3369 standard illuminant D65.<wbr/></p>
3370 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3371 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3372 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3373 values used by the camera device for the transform and gains
3374 will be available in the capture result for this request.<wbr/></p></span>
3375                   </li>
3376                   <li>
3377                     <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
3378                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3379 the camera device uses cloudy daylight light as the assumed scene
3380 illumination for white balance.<wbr/></p>
3381 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3382 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3383 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3384 values used by the camera device for the transform and gains
3385 will be available in the capture result for this request.<wbr/></p></span>
3386                   </li>
3387                   <li>
3388                     <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
3389                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3390 the camera device uses twilight light as the assumed scene
3391 illumination for white balance.<wbr/></p>
3392 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3393 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3394 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3395 values used by the camera device for the transform and gains
3396 will be available in the capture result for this request.<wbr/></p></span>
3397                   </li>
3398                   <li>
3399                     <span class="entry_type_enum_name">SHADE (v3.2)</span>
3400                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3401 the camera device uses shade light as the assumed scene
3402 illumination for white balance.<wbr/></p>
3403 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3404 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3405 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3406 values used by the camera device for the transform and gains
3407 will be available in the capture result for this request.<wbr/></p></span>
3408                   </li>
3409                 </ul>
3410
3411             </td> <!-- entry_type -->
3412
3413             <td class="entry_description">
3414               <p>Whether auto-white balance (AWB) is currently setting the color
3415 transform fields,<wbr/> and what its illumination target
3416 is.<wbr/></p>
3417             </td>
3418
3419             <td class="entry_units">
3420             </td>
3421
3422             <td class="entry_range">
3423               <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3424             </td>
3425
3426             <td class="entry_hal_version">
3427               <p>3.<wbr/>2</p>
3428             </td>
3429
3430             <td class="entry_tags">
3431               <ul class="entry_tags">
3432                   <li><a href="#tag_BC">BC</a></li>
3433               </ul>
3434             </td>
3435
3436           </tr>
3437           <tr class="entries_header">
3438             <th class="th_details" colspan="6">Details</th>
3439           </tr>
3440           <tr class="entry_cont">
3441             <td class="entry_details" colspan="6">
3442               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3443 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3444 routine is enabled,<wbr/> overriding the application's selected
3445 <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
3446 <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>
3447 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3448 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
3449 setting AE mode to OFF.<wbr/></p>
3450 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3451 routine is disabled.<wbr/> The application manually controls the white
3452 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>
3453 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3454 <p>When set to any other modes,<wbr/> the camera device's auto-white
3455 balance routine is disabled.<wbr/> The camera device uses each
3456 particular illumination target for white balance
3457 adjustment.<wbr/> The application's values for
3458 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3459 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3460 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3461             </td>
3462           </tr>
3463
3464
3465           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3466            <!-- end of entry -->
3467         
3468                 
3469           <tr class="entry" id="controls_android.control.awbRegions">
3470             <td class="entry_name
3471              " rowspan="5">
3472               android.<wbr/>control.<wbr/>awb<wbr/>Regions
3473             </td>
3474             <td class="entry_type">
3475                 <span class="entry_type_name">int32</span>
3476                 <span class="entry_type_container">x</span>
3477
3478                 <span class="entry_type_array">
3479                   5 x area_count
3480                 </span>
3481               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3482
3483
3484
3485
3486
3487
3488             </td> <!-- entry_type -->
3489
3490             <td class="entry_description">
3491               <p>List of metering areas to use for auto-white-balance illuminant
3492 estimation.<wbr/></p>
3493             </td>
3494
3495             <td class="entry_units">
3496               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3497             </td>
3498
3499             <td class="entry_range">
3500               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3501 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3502             </td>
3503
3504             <td class="entry_hal_version">
3505               <p>3.<wbr/>2</p>
3506             </td>
3507
3508             <td class="entry_tags">
3509               <ul class="entry_tags">
3510                   <li><a href="#tag_BC">BC</a></li>
3511               </ul>
3512             </td>
3513
3514           </tr>
3515           <tr class="entries_header">
3516             <th class="th_details" colspan="6">Details</th>
3517           </tr>
3518           <tr class="entry_cont">
3519             <td class="entry_details" colspan="6">
3520               <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3521 Otherwise will always be present.<wbr/></p>
3522 <p>The maximum number of regions supported by the device is determined by the value
3523 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3524 <p>The coordinate system is based on the active pixel array,<wbr/>
3525 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3526 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3527 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3528 bottom-right pixel in the active pixel array.<wbr/></p>
3529 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3530 for every pixel in the area.<wbr/> This means that a large metering area
3531 with the same weight as a smaller area will have more effect in
3532 the metering result.<wbr/> Metering areas can partially overlap and the
3533 camera device will add the weights in the overlap region.<wbr/></p>
3534 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3535 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
3536 0 weight is ignored.<wbr/></p>
3537 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3538 camera device.<wbr/></p>
3539 <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
3540 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3541 region and output only the intersection rectangle as the metering region in the result
3542 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3543 not reported in the result metadata.<wbr/></p>
3544             </td>
3545           </tr>
3546
3547           <tr class="entries_header">
3548             <th class="th_details" colspan="6">HAL Implementation Details</th>
3549           </tr>
3550           <tr class="entry_cont">
3551             <td class="entry_details" colspan="6">
3552               <p>The HAL level representation of MeteringRectangle[] is a
3553 int[5 * area_<wbr/>count].<wbr/>
3554 Every five elements represent a metering region of
3555 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3556 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3557 exclusive on xmax and ymax.<wbr/></p>
3558             </td>
3559           </tr>
3560
3561           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3562            <!-- end of entry -->
3563         
3564                 
3565           <tr class="entry" id="controls_android.control.captureIntent">
3566             <td class="entry_name
3567              " rowspan="3">
3568               android.<wbr/>control.<wbr/>capture<wbr/>Intent
3569             </td>
3570             <td class="entry_type">
3571                 <span class="entry_type_name entry_type_name_enum">byte</span>
3572
3573               <span class="entry_type_visibility"> [public]</span>
3574
3575
3576               <span class="entry_type_hwlevel">[legacy] </span>
3577
3578
3579
3580                 <ul class="entry_type_enum">
3581                   <li>
3582                     <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
3583                     <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3584 categories.<wbr/> The camera device will default to preview-like
3585 behavior.<wbr/></p></span>
3586                   </li>
3587                   <li>
3588                     <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
3589                     <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3590 <p>The precapture trigger may be used to start off a metering
3591 w/<wbr/>flash sequence.<wbr/></p></span>
3592                   </li>
3593                   <li>
3594                     <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
3595                     <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3596 use case.<wbr/></p>
3597 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3598                   </li>
3599                   <li>
3600                     <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
3601                     <span class="entry_type_enum_notes"><p>This request is for a video recording
3602 use case.<wbr/></p></span>
3603                   </li>
3604                   <li>
3605                     <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
3606                     <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3607 image while recording video) use case.<wbr/></p>
3608 <p>The camera device should take the highest-quality image
3609 possible (given the other settings) without disrupting the
3610 frame rate of video recording.<wbr/>  </p></span>
3611                   </li>
3612                   <li>
3613                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
3614                     <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3615 application will stream full-resolution images and
3616 reprocess one or several later for a final
3617 capture.<wbr/></p></span>
3618                   </li>
3619                   <li>
3620                     <span class="entry_type_enum_name">MANUAL (v3.2)</span>
3621                     <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3622 the applications want to directly control the capture parameters.<wbr/></p>
3623 <p>For example,<wbr/> the application may wish to manually control
3624 <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>
3625                   </li>
3626                   <li>
3627                     <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
3628                     <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
3629 the application will use camera and inertial sensor data to
3630 locate and track objects in the world.<wbr/></p>
3631 <p>The camera device auto-exposure routine will limit the exposure time
3632 of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
3633                   </li>
3634                 </ul>
3635
3636             </td> <!-- entry_type -->
3637
3638             <td class="entry_description">
3639               <p>Information to the camera device 3A (auto-exposure,<wbr/>
3640 auto-focus,<wbr/> auto-white balance) routines about the purpose
3641 of this capture,<wbr/> to help the camera device to decide optimal 3A
3642 strategy.<wbr/></p>
3643             </td>
3644
3645             <td class="entry_units">
3646             </td>
3647
3648             <td class="entry_range">
3649             </td>
3650
3651             <td class="entry_hal_version">
3652               <p>3.<wbr/>2</p>
3653             </td>
3654
3655             <td class="entry_tags">
3656               <ul class="entry_tags">
3657                   <li><a href="#tag_BC">BC</a></li>
3658               </ul>
3659             </td>
3660
3661           </tr>
3662           <tr class="entries_header">
3663             <th class="th_details" colspan="6">Details</th>
3664           </tr>
3665           <tr class="entry_cont">
3666             <td class="entry_details" colspan="6">
3667               <p>This control (except for MANUAL) is only effective if
3668 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3669 <p>All intents are supported by all devices,<wbr/> except that:
3670   * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3671 PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
3672   * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3673 MANUAL_<wbr/>SENSOR.<wbr/>
3674   * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3675 MOTION_<wbr/>TRACKING.<wbr/></p>
3676             </td>
3677           </tr>
3678
3679
3680           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3681            <!-- end of entry -->
3682         
3683                 
3684           <tr class="entry" id="controls_android.control.effectMode">
3685             <td class="entry_name
3686              " rowspan="3">
3687               android.<wbr/>control.<wbr/>effect<wbr/>Mode
3688             </td>
3689             <td class="entry_type">
3690                 <span class="entry_type_name entry_type_name_enum">byte</span>
3691
3692               <span class="entry_type_visibility"> [public]</span>
3693
3694
3695               <span class="entry_type_hwlevel">[legacy] </span>
3696
3697
3698
3699                 <ul class="entry_type_enum">
3700                   <li>
3701                     <span class="entry_type_enum_name">OFF (v3.2)</span>
3702                     <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3703                   </li>
3704                   <li>
3705                     <span class="entry_type_enum_name">MONO (v3.2)</span>
3706                     <span class="entry_type_enum_optional">[optional]</span>
3707                     <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3708 a single color.<wbr/></p>
3709 <p>This will typically be grayscale.<wbr/></p></span>
3710                   </li>
3711                   <li>
3712                     <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
3713                     <span class="entry_type_enum_optional">[optional]</span>
3714                     <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3715 are inverted.<wbr/></p></span>
3716                   </li>
3717                   <li>
3718                     <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
3719                     <span class="entry_type_enum_optional">[optional]</span>
3720                     <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3721 image is wholly or partially reversed in
3722 tone.<wbr/></p></span>
3723                   </li>
3724                   <li>
3725                     <span class="entry_type_enum_name">SEPIA (v3.2)</span>
3726                     <span class="entry_type_enum_optional">[optional]</span>
3727                     <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3728 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3729                   </li>
3730                   <li>
3731                     <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
3732                     <span class="entry_type_enum_optional">[optional]</span>
3733                     <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3734 discrete regions of tone rather than a continuous
3735 gradient of tones.<wbr/></p></span>
3736                   </li>
3737                   <li>
3738                     <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
3739                     <span class="entry_type_enum_optional">[optional]</span>
3740                     <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3741 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3742                   </li>
3743                   <li>
3744                     <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
3745                     <span class="entry_type_enum_optional">[optional]</span>
3746                     <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3747 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3748                   </li>
3749                   <li>
3750                     <span class="entry_type_enum_name">AQUA (v3.2)</span>
3751                     <span class="entry_type_enum_optional">[optional]</span>
3752                     <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3753                   </li>
3754                 </ul>
3755
3756             </td> <!-- entry_type -->
3757
3758             <td class="entry_description">
3759               <p>A special color effect to apply.<wbr/></p>
3760             </td>
3761
3762             <td class="entry_units">
3763             </td>
3764
3765             <td class="entry_range">
3766               <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3767             </td>
3768
3769             <td class="entry_hal_version">
3770               <p>3.<wbr/>2</p>
3771             </td>
3772
3773             <td class="entry_tags">
3774               <ul class="entry_tags">
3775                   <li><a href="#tag_BC">BC</a></li>
3776               </ul>
3777             </td>
3778
3779           </tr>
3780           <tr class="entries_header">
3781             <th class="th_details" colspan="6">Details</th>
3782           </tr>
3783           <tr class="entry_cont">
3784             <td class="entry_details" colspan="6">
3785               <p>When this mode is set,<wbr/> a color effect will be applied
3786 to images produced by the camera device.<wbr/> The interpretation
3787 and implementation of these color effects is left to the
3788 implementor of the camera device,<wbr/> and should not be
3789 depended on to be consistent (or present) across all
3790 devices.<wbr/></p>
3791             </td>
3792           </tr>
3793
3794
3795           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3796            <!-- end of entry -->
3797         
3798                 
3799           <tr class="entry" id="controls_android.control.mode">
3800             <td class="entry_name
3801              " rowspan="3">
3802               android.<wbr/>control.<wbr/>mode
3803             </td>
3804             <td class="entry_type">
3805                 <span class="entry_type_name entry_type_name_enum">byte</span>
3806
3807               <span class="entry_type_visibility"> [public]</span>
3808
3809
3810               <span class="entry_type_hwlevel">[legacy] </span>
3811
3812
3813
3814                 <ul class="entry_type_enum">
3815                   <li>
3816                     <span class="entry_type_enum_name">OFF (v3.2)</span>
3817                     <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3818 <p>All control by the device's metering and focusing (3A)
3819 routines is disabled,<wbr/> and no other settings in
3820 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3821 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3822 device to select post-processing values for processing
3823 blocks that do not allow for manual control,<wbr/> or are not
3824 exposed by the camera API.<wbr/></p>
3825 <p>However,<wbr/> the camera device's 3A routines may continue to
3826 collect statistics and update their internal state so that
3827 when control is switched to AUTO mode,<wbr/> good control values
3828 can be immediately applied.<wbr/></p></span>
3829                   </li>
3830                   <li>
3831                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
3832                     <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3833 <p>Manual control of capture parameters is disabled.<wbr/> All
3834 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3835 effect.<wbr/></p></span>
3836                   </li>
3837                   <li>
3838                     <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
3839                     <span class="entry_type_enum_optional">[optional]</span>
3840                     <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3841 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3842 control.<wbr/>afMode controls; the camera device will ignore
3843 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3844 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3845 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3846 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3847 contain some modes other than DISABLED).<wbr/></p></span>
3848                   </li>
3849                   <li>
3850                     <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
3851                     <span class="entry_type_enum_optional">[optional]</span>
3852                     <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3853 used by camera device background auto-exposure,<wbr/> auto-white balance and
3854 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3855 <p>Specifically,<wbr/> the 3A routines are locked to the last
3856 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3857 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3858 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3859 discarded by the camera device.<wbr/></p></span>
3860                   </li>
3861                 </ul>
3862
3863             </td> <!-- entry_type -->
3864
3865             <td class="entry_description">
3866               <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3867 routines.<wbr/></p>
3868             </td>
3869
3870             <td class="entry_units">
3871             </td>
3872
3873             <td class="entry_range">
3874               <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3875             </td>
3876
3877             <td class="entry_hal_version">
3878               <p>3.<wbr/>2</p>
3879             </td>
3880
3881             <td class="entry_tags">
3882               <ul class="entry_tags">
3883                   <li><a href="#tag_BC">BC</a></li>
3884               </ul>
3885             </td>
3886
3887           </tr>
3888           <tr class="entries_header">
3889             <th class="th_details" colspan="6">Details</th>
3890           </tr>
3891           <tr class="entry_cont">
3892             <td class="entry_details" colspan="6">
3893               <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3894 by the camera device is disabled.<wbr/> The application must set the fields for
3895 capture parameters itself.<wbr/></p>
3896 <p>When set to AUTO,<wbr/> the individual algorithm controls in
3897 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>
3898 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3899 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
3900 implements one of the scene mode settings (such as ACTION,<wbr/>
3901 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
3902 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3903 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3904 is that this frame will not be used by camera device background 3A statistics
3905 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3906 where the application doesn't want a 3A manual control capture to affect
3907 the subsequent auto 3A capture results.<wbr/></p>
3908             </td>
3909           </tr>
3910
3911
3912           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3913            <!-- end of entry -->
3914         
3915                 
3916           <tr class="entry" id="controls_android.control.sceneMode">
3917             <td class="entry_name
3918              " rowspan="5">
3919               android.<wbr/>control.<wbr/>scene<wbr/>Mode
3920             </td>
3921             <td class="entry_type">
3922                 <span class="entry_type_name entry_type_name_enum">byte</span>
3923
3924               <span class="entry_type_visibility"> [public]</span>
3925
3926
3927               <span class="entry_type_hwlevel">[legacy] </span>
3928
3929
3930
3931                 <ul class="entry_type_enum">
3932                   <li>
3933                     <span class="entry_type_enum_name">DISABLED (v3.2)</span>
3934                     <span class="entry_type_enum_value">0</span>
3935                     <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3936                   </li>
3937                   <li>
3938                     <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
3939                     <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3940 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3941 auto-exposure routines.<wbr/></p>
3942 <p>If face detection statistics are disabled
3943 (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/>
3944 this should still operate correctly (but will not return
3945 face detection statistics to the framework).<wbr/></p>
3946 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3947 <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>
3948 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3949                   </li>
3950                   <li>
3951                     <span class="entry_type_enum_name">ACTION (v3.2)</span>
3952                     <span class="entry_type_enum_optional">[optional]</span>
3953                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3954 <p>Similar to SPORTS.<wbr/></p></span>
3955                   </li>
3956                   <li>
3957                     <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
3958                     <span class="entry_type_enum_optional">[optional]</span>
3959                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3960                   </li>
3961                   <li>
3962                     <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
3963                     <span class="entry_type_enum_optional">[optional]</span>
3964                     <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3965                   </li>
3966                   <li>
3967                     <span class="entry_type_enum_name">NIGHT (v3.2)</span>
3968                     <span class="entry_type_enum_optional">[optional]</span>
3969                     <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3970                   </li>
3971                   <li>
3972                     <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
3973                     <span class="entry_type_enum_optional">[optional]</span>
3974                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3975 settings.<wbr/></p></span>
3976                   </li>
3977                   <li>
3978                     <span class="entry_type_enum_name">THEATRE (v3.2)</span>
3979                     <span class="entry_type_enum_optional">[optional]</span>
3980                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3981 remain off.<wbr/></p></span>
3982                   </li>
3983                   <li>
3984                     <span class="entry_type_enum_name">BEACH (v3.2)</span>
3985                     <span class="entry_type_enum_optional">[optional]</span>
3986                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3987                   </li>
3988                   <li>
3989                     <span class="entry_type_enum_name">SNOW (v3.2)</span>
3990                     <span class="entry_type_enum_optional">[optional]</span>
3991                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3992                   </li>
3993                   <li>
3994                     <span class="entry_type_enum_name">SUNSET (v3.2)</span>
3995                     <span class="entry_type_enum_optional">[optional]</span>
3996                     <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3997                   </li>
3998                   <li>
3999                     <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
4000                     <span class="entry_type_enum_optional">[optional]</span>
4001                     <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
4002 device motion (for example: due to hand shake).<wbr/></p></span>
4003                   </li>
4004                   <li>
4005                     <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
4006                     <span class="entry_type_enum_optional">[optional]</span>
4007                     <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
4008                   </li>
4009                   <li>
4010                     <span class="entry_type_enum_name">SPORTS (v3.2)</span>
4011                     <span class="entry_type_enum_optional">[optional]</span>
4012                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
4013 <p>Similar to ACTION.<wbr/></p></span>
4014                   </li>
4015                   <li>
4016                     <span class="entry_type_enum_name">PARTY (v3.2)</span>
4017                     <span class="entry_type_enum_optional">[optional]</span>
4018                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
4019 people.<wbr/></p></span>
4020                   </li>
4021                   <li>
4022                     <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
4023                     <span class="entry_type_enum_optional">[optional]</span>
4024                     <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
4025 is a flame.<wbr/></p></span>
4026                   </li>
4027                   <li>
4028                     <span class="entry_type_enum_name">BARCODE (v3.2)</span>
4029                     <span class="entry_type_enum_optional">[optional]</span>
4030                     <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
4031 for use by camera applications that wish to read the
4032 barcode value.<wbr/></p></span>
4033                   </li>
4034                   <li>
4035                     <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
4036                     <span class="entry_type_enum_deprecated">[deprecated]</span>
4037                     <span class="entry_type_enum_optional">[optional]</span>
4038                     <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>
4039 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
4040 for high speed video recording.<wbr/></p>
4041 <p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
4042 <p>The supported high speed video sizes and fps ranges are specified in
4043 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
4044 output frame rates,<wbr/> the application is only allowed to select video size
4045 and fps range combinations listed in this static metadata.<wbr/> The fps range
4046 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
4047 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
4048 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
4049 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
4050 and post-processing parameters is possible.<wbr/> All other controls operate the
4051 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
4052 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
4053 <ul>
4054 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
4055 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
4056 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
4057 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
4058 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
4059 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
4060 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
4061 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
4062 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
4063 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
4064 </ul>
4065 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
4066 <ul>
4067 <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>
4068 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
4069 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
4070 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
4071 </ul>
4072 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
4073 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
4074 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
4075 the application need check if the video encoder is capable of supporting the
4076 high frame rate for a given video size,<wbr/> or it will end up with lower recording
4077 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
4078 rate will be bounded by the screen refresh rate.<wbr/></p>
4079 <p>The camera device will only support up to 2 output high speed streams
4080 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
4081 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
4082 <ul>
4083 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
4084 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
4085 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>
4086 <li>The stream sizes are selected from the sizes reported by
4087 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
4088 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
4089 </ul>
4090 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
4091 <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/>
4092 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
4093 and the returned capture result metadata will give the fps range choosen
4094 by the camera device.<wbr/></p>
4095 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
4096 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
4097 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
4098                   </li>
4099                   <li>
4100                     <span class="entry_type_enum_name">HDR (v3.2)</span>
4101                     <span class="entry_type_enum_optional">[optional]</span>
4102                     <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
4103 <p>In this scene mode,<wbr/> the camera device captures images
4104 that keep a larger range of scene illumination levels
4105 visible in the final image.<wbr/> For example,<wbr/> when taking a
4106 picture of a object in front of a bright window,<wbr/> both
4107 the object and the scene through the window may be
4108 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
4109 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
4110 HDR mode generally takes much longer to capture a single
4111 image,<wbr/> has no user control,<wbr/> and may have other artifacts
4112 depending on the HDR method used.<wbr/></p>
4113 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
4114 than regular captures.<wbr/></p>
4115 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
4116 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
4117 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
4118 using a high dynamic range capture technique.<wbr/>  On LEGACY
4119 devices,<wbr/> captures that target a JPEG-format output will
4120 be captured with HDR,<wbr/> and the capture intent is not
4121 relevant.<wbr/></p>
4122 <p>The HDR capture may involve the device capturing a burst
4123 of images internally and combining them into one,<wbr/> or it
4124 may involve the device using specialized high dynamic
4125 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
4126 produced in response to a capture request submitted
4127 while in HDR mode.<wbr/></p>
4128 <p>Since substantial post-processing is generally needed to
4129 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
4130 outputs are supported for LIMITED/<wbr/>FULL device HDR
4131 captures,<wbr/> and only JPEG outputs are supported for LEGACY
4132 HDR captures.<wbr/> Using a RAW output for HDR capture is not
4133 supported.<wbr/></p>
4134 <p>Some devices may also support always-on HDR,<wbr/> which
4135 applies HDR processing at full frame rate.<wbr/>  For these
4136 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
4137 produce an HDR output with no frame rate impact compared
4138 to normal operation,<wbr/> though the quality may be lower
4139 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
4140 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
4141 or capture intents,<wbr/> the images captured will be as if
4142 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
4143                   </li>
4144                   <li>
4145                     <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
4146                     <span class="entry_type_enum_optional">[optional]</span>
4147                     <span class="entry_type_enum_hidden">[hidden]</span>
4148                     <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
4149 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
4150 under low light conditions.<wbr/></p>
4151 <p>The camera device may be tuned to expose the images in a reduced
4152 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
4153 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/>
4154 the camera device auto-exposure routine tuning process may limit the actual
4155 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
4156 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
4157 low light may be under-exposed when the sensor max exposure time (bounded by the
4158 <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
4159 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
4160 camera device auto-exposure routine to increase the sensitivity up to the max
4161 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
4162 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
4163 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
4164 recommended that the application only use this scene mode when it is capable of
4165 reducing the noise level of the captured images.<wbr/></p>
4166 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4167 <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>
4168 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
4169                   </li>
4170                   <li>
4171                     <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
4172                     <span class="entry_type_enum_optional">[optional]</span>
4173                     <span class="entry_type_enum_hidden">[hidden]</span>
4174                     <span class="entry_type_enum_value">100</span>
4175                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4176 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4177 customized scene modes.<wbr/></p></span>
4178                   </li>
4179                   <li>
4180                     <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
4181                     <span class="entry_type_enum_optional">[optional]</span>
4182                     <span class="entry_type_enum_hidden">[hidden]</span>
4183                     <span class="entry_type_enum_value">127</span>
4184                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4185 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4186 customized scene modes.<wbr/></p></span>
4187                   </li>
4188                 </ul>
4189
4190             </td> <!-- entry_type -->
4191
4192             <td class="entry_description">
4193               <p>Control for which scene mode is currently active.<wbr/></p>
4194             </td>
4195
4196             <td class="entry_units">
4197             </td>
4198
4199             <td class="entry_range">
4200               <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
4201             </td>
4202
4203             <td class="entry_hal_version">
4204               <p>3.<wbr/>2</p>
4205             </td>
4206
4207             <td class="entry_tags">
4208               <ul class="entry_tags">
4209                   <li><a href="#tag_BC">BC</a></li>
4210               </ul>
4211             </td>
4212
4213           </tr>
4214           <tr class="entries_header">
4215             <th class="th_details" colspan="6">Details</th>
4216           </tr>
4217           <tr class="entry_cont">
4218             <td class="entry_details" colspan="6">
4219               <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4220 capture settings.<wbr/></p>
4221 <p>This is the mode that that is active when
4222 <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
4223 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>
4224 while in use.<wbr/></p>
4225 <p>The interpretation and implementation of these scene modes is left
4226 to the implementor of the camera device.<wbr/> Their behavior will not be
4227 consistent across all devices,<wbr/> and any given device may only implement
4228 a subset of these modes.<wbr/></p>
4229             </td>
4230           </tr>
4231
4232           <tr class="entries_header">
4233             <th class="th_details" colspan="6">HAL Implementation Details</th>
4234           </tr>
4235           <tr class="entry_cont">
4236             <td class="entry_details" colspan="6">
4237               <p>HAL implementations that include scene modes are expected to provide
4238 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4239 <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
4240 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4241 <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
4242 HAL must list supported video size and fps range in
4243 <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/>
4244 if the HAL has two different sensor configurations for normal streaming mode and high
4245 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
4246 HAL may have to switch between different sensor modes.<wbr/>  This mode is deprecated in legacy
4247 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4248 <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
4249 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4250             </td>
4251           </tr>
4252
4253           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4254            <!-- end of entry -->
4255         
4256                 
4257           <tr class="entry" id="controls_android.control.videoStabilizationMode">
4258             <td class="entry_name
4259              " rowspan="3">
4260               android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4261             </td>
4262             <td class="entry_type">
4263                 <span class="entry_type_name entry_type_name_enum">byte</span>
4264
4265               <span class="entry_type_visibility"> [public]</span>
4266
4267
4268               <span class="entry_type_hwlevel">[legacy] </span>
4269
4270
4271
4272                 <ul class="entry_type_enum">
4273                   <li>
4274                     <span class="entry_type_enum_name">OFF (v3.2)</span>
4275                     <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4276                   </li>
4277                   <li>
4278                     <span class="entry_type_enum_name">ON (v3.2)</span>
4279                     <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4280                   </li>
4281                 </ul>
4282
4283             </td> <!-- entry_type -->
4284
4285             <td class="entry_description">
4286               <p>Whether video stabilization is
4287 active.<wbr/></p>
4288             </td>
4289
4290             <td class="entry_units">
4291             </td>
4292
4293             <td class="entry_range">
4294             </td>
4295
4296             <td class="entry_hal_version">
4297               <p>3.<wbr/>2</p>
4298             </td>
4299
4300             <td class="entry_tags">
4301               <ul class="entry_tags">
4302                   <li><a href="#tag_BC">BC</a></li>
4303               </ul>
4304             </td>
4305
4306           </tr>
4307           <tr class="entries_header">
4308             <th class="th_details" colspan="6">Details</th>
4309           </tr>
4310           <tr class="entry_cont">
4311             <td class="entry_details" colspan="6">
4312               <p>Video stabilization automatically warps images from
4313 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4314 <p>If enabled,<wbr/> video stabilization can modify the
4315 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4316 <p>Switching between different video stabilization modes may take several
4317 frames to initialize,<wbr/> the camera device will report the current mode
4318 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4319 the video stabilization modes in the first several capture results may
4320 still be "OFF",<wbr/> and it will become "ON" when the initialization is
4321 done.<wbr/></p>
4322 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4323 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4324 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4325 the recording resolution is less than or equal to 1920 x 1080 (width less than
4326 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4327 frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
4328 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4329 OFF if the recording output is not stabilized,<wbr/> or if there are no output
4330 Surface types that can be stabilized.<wbr/></p>
4331 <p>If a camera device supports both this mode and OIS
4332 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4333 produce undesirable interaction,<wbr/> so it is recommended not to enable
4334 both at the same time.<wbr/></p>
4335             </td>
4336           </tr>
4337
4338
4339           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4340            <!-- end of entry -->
4341         
4342                 
4343           <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
4344             <td class="entry_name
4345              " rowspan="3">
4346               android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
4347             </td>
4348             <td class="entry_type">
4349                 <span class="entry_type_name">int32</span>
4350
4351               <span class="entry_type_visibility"> [public]</span>
4352
4353
4354
4355
4356
4357
4358             </td> <!-- entry_type -->
4359
4360             <td class="entry_description">
4361               <p>The amount of additional sensitivity boost applied to output images
4362 after RAW sensor data is captured.<wbr/></p>
4363             </td>
4364
4365             <td class="entry_units">
4366               ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
4367             </td>
4368
4369             <td class="entry_range">
4370               <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
4371             </td>
4372
4373             <td class="entry_hal_version">
4374               <p>3.<wbr/>2</p>
4375             </td>
4376
4377             <td class="entry_tags">
4378             </td>
4379
4380           </tr>
4381           <tr class="entries_header">
4382             <th class="th_details" colspan="6">Details</th>
4383           </tr>
4384           <tr class="entry_cont">
4385             <td class="entry_details" colspan="6">
4386               <p>Some camera devices support additional digital sensitivity boosting in the
4387 camera processing pipeline after sensor RAW image is captured.<wbr/>
4388 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
4389 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
4390 <p>This key will be <code>null</code> for devices that do not support any RAW format
4391 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
4392 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
4393 list <code>100</code> in this key.<wbr/></p>
4394 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
4395 boost to the nearest supported value.<wbr/>
4396 The final boost value used will be available in the output capture result.<wbr/></p>
4397 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
4398 of such device will have the total sensitivity of
4399 <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>
4400 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
4401 <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
4402 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
4403             </td>
4404           </tr>
4405
4406
4407           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4408            <!-- end of entry -->
4409         
4410                 
4411           <tr class="entry" id="controls_android.control.enableZsl">
4412             <td class="entry_name
4413              " rowspan="5">
4414               android.<wbr/>control.<wbr/>enable<wbr/>Zsl
4415             </td>
4416             <td class="entry_type">
4417                 <span class="entry_type_name entry_type_name_enum">byte</span>
4418
4419               <span class="entry_type_visibility"> [public as boolean]</span>
4420
4421
4422
4423
4424
4425                 <ul class="entry_type_enum">
4426                   <li>
4427                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
4428                     <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
4429 after previous requests.<wbr/></p></span>
4430                   </li>
4431                   <li>
4432                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
4433                     <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
4434 captured before previous requests.<wbr/></p></span>
4435                   </li>
4436                 </ul>
4437
4438             </td> <!-- entry_type -->
4439
4440             <td class="entry_description">
4441               <p>Allow camera device to enable zero-shutter-lag mode for requests with
4442 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
4443             </td>
4444
4445             <td class="entry_units">
4446             </td>
4447
4448             <td class="entry_range">
4449             </td>
4450
4451             <td class="entry_hal_version">
4452               <p>3.<wbr/>2</p>
4453             </td>
4454
4455             <td class="entry_tags">
4456             </td>
4457
4458           </tr>
4459           <tr class="entries_header">
4460             <th class="th_details" colspan="6">Details</th>
4461           </tr>
4462           <tr class="entry_cont">
4463             <td class="entry_details" colspan="6">
4464               <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
4465 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
4466 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
4467 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
4468 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
4469 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
4470 capture intents.<wbr/></p>
4471 <p>For example,<wbr/> when requests are submitted in the following order:
4472   Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
4473   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>
4474 <p>The output images for request B may have contents captured before the output images for
4475 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
4476 request A.<wbr/></p>
4477 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
4478 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
4479 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
4480 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
4481 <code>false</code> if present.<wbr/></p>
4482 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
4483 capture templates is always <code>false</code> if present.<wbr/></p>
4484 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
4485             </td>
4486           </tr>
4487
4488           <tr class="entries_header">
4489             <th class="th_details" colspan="6">HAL Implementation Details</th>
4490           </tr>
4491           <tr class="entry_cont">
4492             <td class="entry_details" colspan="6">
4493               <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
4494 capture intent.<wbr/></p>
4495             </td>
4496           </tr>
4497
4498           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4499            <!-- end of entry -->
4500         
4501         
4502
4503       <!-- end of kind -->
4504       </tbody>
4505       <tr><td colspan="7" class="kind">static</td></tr>
4506
4507       <thead class="entries_header">
4508         <tr>
4509           <th class="th_name">Property Name</th>
4510           <th class="th_type">Type</th>
4511           <th class="th_description">Description</th>
4512           <th class="th_units">Units</th>
4513           <th class="th_range">Range</th>
4514           <th class="th_hal_version">Initial HIDL HAL version</th>
4515           <th class="th_tags">Tags</th>
4516         </tr>
4517       </thead>
4518
4519       <tbody>
4520
4521         
4522
4523         
4524
4525         
4526
4527         
4528
4529                 
4530           <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4531             <td class="entry_name
4532              " rowspan="3">
4533               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4534             </td>
4535             <td class="entry_type">
4536                 <span class="entry_type_name">byte</span>
4537                 <span class="entry_type_container">x</span>
4538
4539                 <span class="entry_type_array">
4540                   n
4541                 </span>
4542               <span class="entry_type_visibility"> [public as enumList]</span>
4543
4544
4545               <span class="entry_type_hwlevel">[legacy] </span>
4546
4547
4548                 <div class="entry_type_notes">list of enums</div>
4549
4550
4551             </td> <!-- entry_type -->
4552
4553             <td class="entry_description">
4554               <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
4555 supported by this camera device.<wbr/></p>
4556             </td>
4557
4558             <td class="entry_units">
4559             </td>
4560
4561             <td class="entry_range">
4562               <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4563             </td>
4564
4565             <td class="entry_hal_version">
4566               <p>3.<wbr/>2</p>
4567             </td>
4568
4569             <td class="entry_tags">
4570               <ul class="entry_tags">
4571                   <li><a href="#tag_BC">BC</a></li>
4572               </ul>
4573             </td>
4574
4575           </tr>
4576           <tr class="entries_header">
4577             <th class="th_details" colspan="6">Details</th>
4578           </tr>
4579           <tr class="entry_cont">
4580             <td class="entry_details" colspan="6">
4581               <p>Not all of the auto-exposure anti-banding modes may be
4582 supported by a given camera device.<wbr/> This field lists the
4583 valid anti-banding modes that the application may request
4584 for this camera device with the
4585 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4586             </td>
4587           </tr>
4588
4589
4590           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4591            <!-- end of entry -->
4592         
4593                 
4594           <tr class="entry" id="static_android.control.aeAvailableModes">
4595             <td class="entry_name
4596              " rowspan="3">
4597               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4598             </td>
4599             <td class="entry_type">
4600                 <span class="entry_type_name">byte</span>
4601                 <span class="entry_type_container">x</span>
4602
4603                 <span class="entry_type_array">
4604                   n
4605                 </span>
4606               <span class="entry_type_visibility"> [public as enumList]</span>
4607
4608
4609               <span class="entry_type_hwlevel">[legacy] </span>
4610
4611
4612                 <div class="entry_type_notes">list of enums</div>
4613
4614
4615             </td> <!-- entry_type -->
4616
4617             <td class="entry_description">
4618               <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
4619 device.<wbr/></p>
4620             </td>
4621
4622             <td class="entry_units">
4623             </td>
4624
4625             <td class="entry_range">
4626               <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4627             </td>
4628
4629             <td class="entry_hal_version">
4630               <p>3.<wbr/>2</p>
4631             </td>
4632
4633             <td class="entry_tags">
4634               <ul class="entry_tags">
4635                   <li><a href="#tag_BC">BC</a></li>
4636               </ul>
4637             </td>
4638
4639           </tr>
4640           <tr class="entries_header">
4641             <th class="th_details" colspan="6">Details</th>
4642           </tr>
4643           <tr class="entry_cont">
4644             <td class="entry_details" colspan="6">
4645               <p>Not all the auto-exposure modes may be supported by a
4646 given camera device,<wbr/> especially if no flash unit is
4647 available.<wbr/> This entry lists the valid modes for
4648 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4649 <p>All camera devices support ON,<wbr/> and all camera devices with flash
4650 units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4651 <p>FULL mode camera devices always support OFF mode,<wbr/>
4652 which enables application control of camera exposure time,<wbr/>
4653 sensitivity,<wbr/> and frame duration.<wbr/></p>
4654 <p>LEGACY mode camera devices never support OFF mode.<wbr/>
4655 LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4656 capability.<wbr/></p>
4657             </td>
4658           </tr>
4659
4660
4661           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4662            <!-- end of entry -->
4663         
4664                 
4665           <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4666             <td class="entry_name
4667              " rowspan="3">
4668               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4669             </td>
4670             <td class="entry_type">
4671                 <span class="entry_type_name">int32</span>
4672                 <span class="entry_type_container">x</span>
4673
4674                 <span class="entry_type_array">
4675                   2 x n
4676                 </span>
4677               <span class="entry_type_visibility"> [public as rangeInt]</span>
4678
4679
4680               <span class="entry_type_hwlevel">[legacy] </span>
4681
4682
4683                 <div class="entry_type_notes">list of pairs of frame rates</div>
4684
4685
4686             </td> <!-- entry_type -->
4687
4688             <td class="entry_description">
4689               <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
4690 this camera device.<wbr/></p>
4691             </td>
4692
4693             <td class="entry_units">
4694               Frames per second (FPS)
4695             </td>
4696
4697             <td class="entry_range">
4698             </td>
4699
4700             <td class="entry_hal_version">
4701               <p>3.<wbr/>2</p>
4702             </td>
4703
4704             <td class="entry_tags">
4705               <ul class="entry_tags">
4706                   <li><a href="#tag_BC">BC</a></li>
4707               </ul>
4708             </td>
4709
4710           </tr>
4711           <tr class="entries_header">
4712             <th class="th_details" colspan="6">Details</th>
4713           </tr>
4714           <tr class="entry_cont">
4715             <td class="entry_details" colspan="6">
4716               <p>For devices at the LEGACY level or above:</p>
4717 <ul>
4718 <li>
4719 <p>For constant-framerate recording,<wbr/> for each normal
4720 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4721 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4722 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4723 the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4724 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4725 supported by the device and has
4726 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4727 always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4728 </li>
4729 <li>
4730 <p>Also,<wbr/> a camera device must either not support any
4731 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4732 or support at least one
4733 normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4734 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> &gt;= 24.<wbr/></p>
4735 </li>
4736 </ul>
4737 <p>For devices at the LIMITED level or above:</p>
4738 <ul>
4739 <li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4740 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
4741 maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4742 </ul>
4743             </td>
4744           </tr>
4745
4746
4747           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4748            <!-- end of entry -->
4749         
4750                 
4751           <tr class="entry" id="static_android.control.aeCompensationRange">
4752             <td class="entry_name
4753              " rowspan="1">
4754               android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4755             </td>
4756             <td class="entry_type">
4757                 <span class="entry_type_name">int32</span>
4758                 <span class="entry_type_container">x</span>
4759
4760                 <span class="entry_type_array">
4761                   2
4762                 </span>
4763               <span class="entry_type_visibility"> [public as rangeInt]</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>Maximum and minimum exposure compensation values for
4775 <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/>
4776 that are supported by this camera device.<wbr/></p>
4777             </td>
4778
4779             <td class="entry_units">
4780             </td>
4781
4782             <td class="entry_range">
4783               <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4784 <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4785 compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4786 <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>
4787 <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>
4788 <p>LEGACY devices may support a smaller range than this.<wbr/></p>
4789             </td>
4790
4791             <td class="entry_hal_version">
4792               <p>3.<wbr/>2</p>
4793             </td>
4794
4795             <td class="entry_tags">
4796               <ul class="entry_tags">
4797                   <li><a href="#tag_BC">BC</a></li>
4798               </ul>
4799             </td>
4800
4801           </tr>
4802
4803
4804           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4805            <!-- end of entry -->
4806         
4807                 
4808           <tr class="entry" id="static_android.control.aeCompensationStep">
4809             <td class="entry_name
4810              " rowspan="5">
4811               android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4812             </td>
4813             <td class="entry_type">
4814                 <span class="entry_type_name">rational</span>
4815
4816               <span class="entry_type_visibility"> [public]</span>
4817
4818
4819               <span class="entry_type_hwlevel">[legacy] </span>
4820
4821
4822
4823
4824             </td> <!-- entry_type -->
4825
4826             <td class="entry_description">
4827               <p>Smallest step by which the exposure compensation
4828 can be changed.<wbr/></p>
4829             </td>
4830
4831             <td class="entry_units">
4832               Exposure Value (EV)
4833             </td>
4834
4835             <td class="entry_range">
4836             </td>
4837
4838             <td class="entry_hal_version">
4839               <p>3.<wbr/>2</p>
4840             </td>
4841
4842             <td class="entry_tags">
4843               <ul class="entry_tags">
4844                   <li><a href="#tag_BC">BC</a></li>
4845               </ul>
4846             </td>
4847
4848           </tr>
4849           <tr class="entries_header">
4850             <th class="th_details" colspan="6">Details</th>
4851           </tr>
4852           <tr class="entry_cont">
4853             <td class="entry_details" colspan="6">
4854               <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
4855 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
4856 that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4857 <p>One unit of EV compensation changes the brightness of the captured image by a factor
4858 of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4859             </td>
4860           </tr>
4861
4862           <tr class="entries_header">
4863             <th class="th_details" colspan="6">HAL Implementation Details</th>
4864           </tr>
4865           <tr class="entry_cont">
4866             <td class="entry_details" colspan="6">
4867               <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4868             </td>
4869           </tr>
4870
4871           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4872            <!-- end of entry -->
4873         
4874                 
4875           <tr class="entry" id="static_android.control.afAvailableModes">
4876             <td class="entry_name
4877              " rowspan="3">
4878               android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4879             </td>
4880             <td class="entry_type">
4881                 <span class="entry_type_name">byte</span>
4882                 <span class="entry_type_container">x</span>
4883
4884                 <span class="entry_type_array">
4885                   n
4886                 </span>
4887               <span class="entry_type_visibility"> [public as enumList]</span>
4888
4889
4890               <span class="entry_type_hwlevel">[legacy] </span>
4891
4892
4893                 <div class="entry_type_notes">List of enums</div>
4894
4895
4896             </td> <!-- entry_type -->
4897
4898             <td class="entry_description">
4899               <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4900 supported by this camera device.<wbr/></p>
4901             </td>
4902
4903             <td class="entry_units">
4904             </td>
4905
4906             <td class="entry_range">
4907               <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4908             </td>
4909
4910             <td class="entry_hal_version">
4911               <p>3.<wbr/>2</p>
4912             </td>
4913
4914             <td class="entry_tags">
4915               <ul class="entry_tags">
4916                   <li><a href="#tag_BC">BC</a></li>
4917               </ul>
4918             </td>
4919
4920           </tr>
4921           <tr class="entries_header">
4922             <th class="th_details" colspan="6">Details</th>
4923           </tr>
4924           <tr class="entry_cont">
4925             <td class="entry_details" colspan="6">
4926               <p>Not all the auto-focus modes may be supported by a
4927 given camera device.<wbr/> This entry lists the valid modes for
4928 <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4929 <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4930 camera devices with adjustable focuser units
4931 (<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>
4932 <p>LEGACY devices will support OFF mode only if they support
4933 focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4934 <code>0.<wbr/>0f</code>).<wbr/></p>
4935             </td>
4936           </tr>
4937
4938
4939           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4940            <!-- end of entry -->
4941         
4942                 
4943           <tr class="entry" id="static_android.control.availableEffects">
4944             <td class="entry_name
4945              " rowspan="3">
4946               android.<wbr/>control.<wbr/>available<wbr/>Effects
4947             </td>
4948             <td class="entry_type">
4949                 <span class="entry_type_name">byte</span>
4950                 <span class="entry_type_container">x</span>
4951
4952                 <span class="entry_type_array">
4953                   n
4954                 </span>
4955               <span class="entry_type_visibility"> [public as enumList]</span>
4956
4957
4958               <span class="entry_type_hwlevel">[legacy] </span>
4959
4960
4961                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4962
4963
4964             </td> <!-- entry_type -->
4965
4966             <td class="entry_description">
4967               <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
4968 device.<wbr/></p>
4969             </td>
4970
4971             <td class="entry_units">
4972             </td>
4973
4974             <td class="entry_range">
4975               <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4976             </td>
4977
4978             <td class="entry_hal_version">
4979               <p>3.<wbr/>2</p>
4980             </td>
4981
4982             <td class="entry_tags">
4983               <ul class="entry_tags">
4984                   <li><a href="#tag_BC">BC</a></li>
4985               </ul>
4986             </td>
4987
4988           </tr>
4989           <tr class="entries_header">
4990             <th class="th_details" colspan="6">Details</th>
4991           </tr>
4992           <tr class="entry_cont">
4993             <td class="entry_details" colspan="6">
4994               <p>This list contains the color effect modes that can be applied to
4995 images produced by the camera device.<wbr/>
4996 Implementations are not expected to be consistent across all devices.<wbr/>
4997 If no color effect modes are available for a device,<wbr/> this will only list
4998 OFF.<wbr/></p>
4999 <p>A color effect will only be applied if
5000 <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
5001 <p>This control has no effect on the operation of other control routines such
5002 as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
5003             </td>
5004           </tr>
5005
5006
5007           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5008            <!-- end of entry -->
5009         
5010                 
5011           <tr class="entry" id="static_android.control.availableSceneModes">
5012             <td class="entry_name
5013              " rowspan="3">
5014               android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
5015             </td>
5016             <td class="entry_type">
5017                 <span class="entry_type_name">byte</span>
5018                 <span class="entry_type_container">x</span>
5019
5020                 <span class="entry_type_array">
5021                   n
5022                 </span>
5023               <span class="entry_type_visibility"> [public as enumList]</span>
5024
5025
5026               <span class="entry_type_hwlevel">[legacy] </span>
5027
5028
5029                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
5030
5031
5032             </td> <!-- entry_type -->
5033
5034             <td class="entry_description">
5035               <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
5036 device.<wbr/></p>
5037             </td>
5038
5039             <td class="entry_units">
5040             </td>
5041
5042             <td class="entry_range">
5043               <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
5044             </td>
5045
5046             <td class="entry_hal_version">
5047               <p>3.<wbr/>2</p>
5048             </td>
5049
5050             <td class="entry_tags">
5051               <ul class="entry_tags">
5052                   <li><a href="#tag_BC">BC</a></li>
5053               </ul>
5054             </td>
5055
5056           </tr>
5057           <tr class="entries_header">
5058             <th class="th_details" colspan="6">Details</th>
5059           </tr>
5060           <tr class="entry_cont">
5061             <td class="entry_details" colspan="6">
5062               <p>This list contains scene modes that can be set for the camera device.<wbr/>
5063 Only scene modes that have been fully implemented for the
5064 camera device may be included here.<wbr/> Implementations are not expected
5065 to be consistent across all devices.<wbr/></p>
5066 <p>If no scene modes are supported by the camera device,<wbr/> this
5067 will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
5068 <p>FACE_<wbr/>PRIORITY is always listed if face detection is
5069 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;
5070 0</code>).<wbr/></p>
5071             </td>
5072           </tr>
5073
5074
5075           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5076            <!-- end of entry -->
5077         
5078                 
5079           <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
5080             <td class="entry_name
5081              " rowspan="3">
5082               android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
5083             </td>
5084             <td class="entry_type">
5085                 <span class="entry_type_name">byte</span>
5086                 <span class="entry_type_container">x</span>
5087
5088                 <span class="entry_type_array">
5089                   n
5090                 </span>
5091               <span class="entry_type_visibility"> [public as enumList]</span>
5092
5093
5094               <span class="entry_type_hwlevel">[legacy] </span>
5095
5096
5097                 <div class="entry_type_notes">List of enums.<wbr/></div>
5098
5099
5100             </td> <!-- entry_type -->
5101
5102             <td class="entry_description">
5103               <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
5104 that are supported by this camera device.<wbr/></p>
5105             </td>
5106
5107             <td class="entry_units">
5108             </td>
5109
5110             <td class="entry_range">
5111               <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
5112             </td>
5113
5114             <td class="entry_hal_version">
5115               <p>3.<wbr/>2</p>
5116             </td>
5117
5118             <td class="entry_tags">
5119               <ul class="entry_tags">
5120                   <li><a href="#tag_BC">BC</a></li>
5121               </ul>
5122             </td>
5123
5124           </tr>
5125           <tr class="entries_header">
5126             <th class="th_details" colspan="6">Details</th>
5127           </tr>
5128           <tr class="entry_cont">
5129             <td class="entry_details" colspan="6">
5130               <p>OFF will always be listed.<wbr/></p>
5131             </td>
5132           </tr>
5133
5134
5135           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5136            <!-- end of entry -->
5137         
5138                 
5139           <tr class="entry" id="static_android.control.awbAvailableModes">
5140             <td class="entry_name
5141              " rowspan="3">
5142               android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
5143             </td>
5144             <td class="entry_type">
5145                 <span class="entry_type_name">byte</span>
5146                 <span class="entry_type_container">x</span>
5147
5148                 <span class="entry_type_array">
5149                   n
5150                 </span>
5151               <span class="entry_type_visibility"> [public as enumList]</span>
5152
5153
5154               <span class="entry_type_hwlevel">[legacy] </span>
5155
5156
5157                 <div class="entry_type_notes">List of enums</div>
5158
5159
5160             </td> <!-- entry_type -->
5161
5162             <td class="entry_description">
5163               <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
5164 camera device.<wbr/></p>
5165             </td>
5166
5167             <td class="entry_units">
5168             </td>
5169
5170             <td class="entry_range">
5171               <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
5172             </td>
5173
5174             <td class="entry_hal_version">
5175               <p>3.<wbr/>2</p>
5176             </td>
5177
5178             <td class="entry_tags">
5179               <ul class="entry_tags">
5180                   <li><a href="#tag_BC">BC</a></li>
5181               </ul>
5182             </td>
5183
5184           </tr>
5185           <tr class="entries_header">
5186             <th class="th_details" colspan="6">Details</th>
5187           </tr>
5188           <tr class="entry_cont">
5189             <td class="entry_details" colspan="6">
5190               <p>Not all the auto-white-balance modes may be supported by a
5191 given camera device.<wbr/> This entry lists the valid modes for
5192 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
5193 <p>All camera devices will support ON mode.<wbr/></p>
5194 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
5195 mode,<wbr/> which enables application control of white balance,<wbr/> by using
5196 <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
5197 mode camera devices.<wbr/></p>
5198             </td>
5199           </tr>
5200
5201
5202           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5203            <!-- end of entry -->
5204         
5205                 
5206           <tr class="entry" id="static_android.control.maxRegions">
5207             <td class="entry_name
5208              " rowspan="1">
5209               android.<wbr/>control.<wbr/>max<wbr/>Regions
5210             </td>
5211             <td class="entry_type">
5212                 <span class="entry_type_name">int32</span>
5213                 <span class="entry_type_container">x</span>
5214
5215                 <span class="entry_type_array">
5216                   3
5217                 </span>
5218               <span class="entry_type_visibility"> [ndk_public]</span>
5219
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>List of the maximum number of regions that can be used for metering in
5230 auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
5231 this corresponds to the the maximum number of elements in
5232 <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/>
5233 and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5234             </td>
5235
5236             <td class="entry_units">
5237             </td>
5238
5239             <td class="entry_range">
5240               <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
5241 this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
5242 <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
5243             </td>
5244
5245             <td class="entry_hal_version">
5246               <p>3.<wbr/>2</p>
5247             </td>
5248
5249             <td class="entry_tags">
5250               <ul class="entry_tags">
5251                   <li><a href="#tag_BC">BC</a></li>
5252               </ul>
5253             </td>
5254
5255           </tr>
5256
5257
5258           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5259            <!-- end of entry -->
5260         
5261                 
5262           <tr class="entry" id="static_android.control.maxRegionsAe">
5263             <td class="entry_name
5264              " rowspan="5">
5265               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
5266             </td>
5267             <td class="entry_type">
5268                 <span class="entry_type_name">int32</span>
5269
5270               <span class="entry_type_visibility"> [java_public]</span>
5271
5272               <span class="entry_type_synthetic">[synthetic] </span>
5273
5274               <span class="entry_type_hwlevel">[legacy] </span>
5275
5276
5277
5278
5279             </td> <!-- entry_type -->
5280
5281             <td class="entry_description">
5282               <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
5283 routine.<wbr/></p>
5284             </td>
5285
5286             <td class="entry_units">
5287             </td>
5288
5289             <td class="entry_range">
5290               <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5291 value will be &gt;= 1.<wbr/></p>
5292             </td>
5293
5294             <td class="entry_hal_version">
5295               <p>3.<wbr/>2</p>
5296             </td>
5297
5298             <td class="entry_tags">
5299             </td>
5300
5301           </tr>
5302           <tr class="entries_header">
5303             <th class="th_details" colspan="6">Details</th>
5304           </tr>
5305           <tr class="entry_cont">
5306             <td class="entry_details" colspan="6">
5307               <p>This corresponds to the the maximum allowed number of elements in
5308 <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
5309             </td>
5310           </tr>
5311
5312           <tr class="entries_header">
5313             <th class="th_details" colspan="6">HAL Implementation Details</th>
5314           </tr>
5315           <tr class="entry_cont">
5316             <td class="entry_details" colspan="6">
5317               <p>This entry is private to the framework.<wbr/> Fill in
5318 maxRegions to have this entry be automatically populated.<wbr/></p>
5319             </td>
5320           </tr>
5321
5322           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5323            <!-- end of entry -->
5324         
5325                 
5326           <tr class="entry" id="static_android.control.maxRegionsAwb">
5327             <td class="entry_name
5328              " rowspan="5">
5329               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
5330             </td>
5331             <td class="entry_type">
5332                 <span class="entry_type_name">int32</span>
5333
5334               <span class="entry_type_visibility"> [java_public]</span>
5335
5336               <span class="entry_type_synthetic">[synthetic] </span>
5337
5338               <span class="entry_type_hwlevel">[legacy] </span>
5339
5340
5341
5342
5343             </td> <!-- entry_type -->
5344
5345             <td class="entry_description">
5346               <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
5347 routine.<wbr/></p>
5348             </td>
5349
5350             <td class="entry_units">
5351             </td>
5352
5353             <td class="entry_range">
5354               <p>Value will be &gt;= 0.<wbr/></p>
5355             </td>
5356
5357             <td class="entry_hal_version">
5358               <p>3.<wbr/>2</p>
5359             </td>
5360
5361             <td class="entry_tags">
5362             </td>
5363
5364           </tr>
5365           <tr class="entries_header">
5366             <th class="th_details" colspan="6">Details</th>
5367           </tr>
5368           <tr class="entry_cont">
5369             <td class="entry_details" colspan="6">
5370               <p>This corresponds to the the maximum allowed number of elements in
5371 <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5372             </td>
5373           </tr>
5374
5375           <tr class="entries_header">
5376             <th class="th_details" colspan="6">HAL Implementation Details</th>
5377           </tr>
5378           <tr class="entry_cont">
5379             <td class="entry_details" colspan="6">
5380               <p>This entry is private to the framework.<wbr/> Fill in
5381 maxRegions to have this entry be automatically populated.<wbr/></p>
5382             </td>
5383           </tr>
5384
5385           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5386            <!-- end of entry -->
5387         
5388                 
5389           <tr class="entry" id="static_android.control.maxRegionsAf">
5390             <td class="entry_name
5391              " rowspan="5">
5392               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
5393             </td>
5394             <td class="entry_type">
5395                 <span class="entry_type_name">int32</span>
5396
5397               <span class="entry_type_visibility"> [java_public]</span>
5398
5399               <span class="entry_type_synthetic">[synthetic] </span>
5400
5401               <span class="entry_type_hwlevel">[legacy] </span>
5402
5403
5404
5405
5406             </td> <!-- entry_type -->
5407
5408             <td class="entry_description">
5409               <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
5410             </td>
5411
5412             <td class="entry_units">
5413             </td>
5414
5415             <td class="entry_range">
5416               <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5417 value will be &gt;= 1.<wbr/></p>
5418             </td>
5419
5420             <td class="entry_hal_version">
5421               <p>3.<wbr/>2</p>
5422             </td>
5423
5424             <td class="entry_tags">
5425             </td>
5426
5427           </tr>
5428           <tr class="entries_header">
5429             <th class="th_details" colspan="6">Details</th>
5430           </tr>
5431           <tr class="entry_cont">
5432             <td class="entry_details" colspan="6">
5433               <p>This corresponds to the the maximum allowed number of elements in
5434 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5435             </td>
5436           </tr>
5437
5438           <tr class="entries_header">
5439             <th class="th_details" colspan="6">HAL Implementation Details</th>
5440           </tr>
5441           <tr class="entry_cont">
5442             <td class="entry_details" colspan="6">
5443               <p>This entry is private to the framework.<wbr/> Fill in
5444 maxRegions to have this entry be automatically populated.<wbr/></p>
5445             </td>
5446           </tr>
5447
5448           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5449            <!-- end of entry -->
5450         
5451                 
5452           <tr class="entry" id="static_android.control.sceneModeOverrides">
5453             <td class="entry_name
5454              " rowspan="5">
5455               android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5456             </td>
5457             <td class="entry_type">
5458                 <span class="entry_type_name">byte</span>
5459                 <span class="entry_type_container">x</span>
5460
5461                 <span class="entry_type_array">
5462                   3 x length(availableSceneModes)
5463                 </span>
5464               <span class="entry_type_visibility"> [system]</span>
5465
5466
5467               <span class="entry_type_hwlevel">[limited] </span>
5468
5469
5470
5471
5472             </td> <!-- entry_type -->
5473
5474             <td class="entry_description">
5475               <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5476 settings to use with each available scene mode.<wbr/></p>
5477             </td>
5478
5479             <td class="entry_units">
5480             </td>
5481
5482             <td class="entry_range">
5483               <p>For each available scene mode,<wbr/> the list must contain three
5484 entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5485 <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
5486 by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5487 where aeMode has the lowest index position.<wbr/></p>
5488             </td>
5489
5490             <td class="entry_hal_version">
5491               <p>3.<wbr/>2</p>
5492             </td>
5493
5494             <td class="entry_tags">
5495               <ul class="entry_tags">
5496                   <li><a href="#tag_BC">BC</a></li>
5497               </ul>
5498             </td>
5499
5500           </tr>
5501           <tr class="entries_header">
5502             <th class="th_details" colspan="6">Details</th>
5503           </tr>
5504           <tr class="entry_cont">
5505             <td class="entry_details" colspan="6">
5506               <p>When a scene mode is enabled,<wbr/> the camera device is expected
5507 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/>
5508 and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5509 that scene mode.<wbr/></p>
5510 <p>The order of this list matches that of availableSceneModes,<wbr/>
5511 with 3 entries for each mode.<wbr/>  The overrides listed
5512 for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5513 since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5514 <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
5515 used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5516 is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5517 FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5518 <p>For example,<wbr/> if availableSceneModes contains
5519 <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
5520 expects sceneModeOverrides to have 9 entries formatted like:
5521 <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5522 ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5523             </td>
5524           </tr>
5525
5526           <tr class="entries_header">
5527             <th class="th_details" colspan="6">HAL Implementation Details</th>
5528           </tr>
5529           <tr class="entry_cont">
5530             <td class="entry_details" colspan="6">
5531               <p>To maintain backward compatibility,<wbr/> this list will be made available
5532 in the static metadata of the camera service.<wbr/>  The camera service will
5533 use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5534 <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
5535 mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5536             </td>
5537           </tr>
5538
5539           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5540            <!-- end of entry -->
5541         
5542                 
5543           <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5544             <td class="entry_name
5545              " rowspan="5">
5546               android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5547             </td>
5548             <td class="entry_type">
5549                 <span class="entry_type_name">int32</span>
5550                 <span class="entry_type_container">x</span>
5551
5552                 <span class="entry_type_array">
5553                   5 x n
5554                 </span>
5555               <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5556
5557
5558               <span class="entry_type_hwlevel">[limited] </span>
5559
5560
5561
5562
5563             </td> <!-- entry_type -->
5564
5565             <td class="entry_description">
5566               <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5567 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>
5568             </td>
5569
5570             <td class="entry_units">
5571             </td>
5572
5573             <td class="entry_range">
5574               <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
5575             </td>
5576
5577             <td class="entry_hal_version">
5578               <p>3.<wbr/>2</p>
5579             </td>
5580
5581             <td class="entry_tags">
5582               <ul class="entry_tags">
5583                   <li><a href="#tag_V1">V1</a></li>
5584               </ul>
5585             </td>
5586
5587           </tr>
5588           <tr class="entries_header">
5589             <th class="th_details" colspan="6">Details</th>
5590           </tr>
5591           <tr class="entry_cont">
5592             <td class="entry_details" colspan="6">
5593               <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/>
5594 this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5595 configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5596 reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5597 for processed non-stalling formats.<wbr/></p>
5598 <p>For the high speed video use case,<wbr/> the application must
5599 select the video size and fps range from this metadata to configure the recording and
5600 preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5601 to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5602 configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5603 by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5604 recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5605 must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5606 must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5607 <p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5608 <p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5609 to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5610 multiple frames together and send to camera device for processing where the request
5611 controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5612 the max possible number of frames the camera device will group together for this high
5613 speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5614 recording request list by
5615 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5616 The max batch size for each configuration will satisfy below conditions:</p>
5617 <ul>
5618 <li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5619 if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5620 <li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5621 the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5622 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>
5623 <li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5624 </ul>
5625 <p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5626 in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5627 <p>This fps ranges in this configuration list can only be used to create requests
5628 that are submitted to a high speed camera capture session created by
5629 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5630 The fps ranges reported in this metadata must not be used to setup capture requests for
5631 normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5632             </td>
5633           </tr>
5634
5635           <tr class="entries_header">
5636             <th class="th_details" colspan="6">HAL Implementation Details</th>
5637           </tr>
5638           <tr class="entry_cont">
5639             <td class="entry_details" colspan="6">
5640               <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5641 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5642 Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5643 of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5644 <p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5645 sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5646 usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5647 stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5648 the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5649 the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5650 For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5651 [30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5652 do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5653 recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5654 values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5655 values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5656 switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5657             </td>
5658           </tr>
5659
5660           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5661            <!-- end of entry -->
5662         
5663                 
5664           <tr class="entry" id="static_android.control.aeLockAvailable">
5665             <td class="entry_name
5666              " rowspan="3">
5667               android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5668             </td>
5669             <td class="entry_type">
5670                 <span class="entry_type_name entry_type_name_enum">byte</span>
5671
5672               <span class="entry_type_visibility"> [public as boolean]</span>
5673
5674
5675               <span class="entry_type_hwlevel">[legacy] </span>
5676
5677
5678
5679                 <ul class="entry_type_enum">
5680                   <li>
5681                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
5682                   </li>
5683                   <li>
5684                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
5685                   </li>
5686                 </ul>
5687
5688             </td> <!-- entry_type -->
5689
5690             <td class="entry_description">
5691               <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5692             </td>
5693
5694             <td class="entry_units">
5695             </td>
5696
5697             <td class="entry_range">
5698             </td>
5699
5700             <td class="entry_hal_version">
5701               <p>3.<wbr/>2</p>
5702             </td>
5703
5704             <td class="entry_tags">
5705               <ul class="entry_tags">
5706                   <li><a href="#tag_BC">BC</a></li>
5707               </ul>
5708             </td>
5709
5710           </tr>
5711           <tr class="entries_header">
5712             <th class="th_details" colspan="6">Details</th>
5713           </tr>
5714           <tr class="entry_cont">
5715             <td class="entry_details" colspan="6">
5716               <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5717 list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5718             </td>
5719           </tr>
5720
5721
5722           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5723            <!-- end of entry -->
5724         
5725                 
5726           <tr class="entry" id="static_android.control.awbLockAvailable">
5727             <td class="entry_name
5728              " rowspan="3">
5729               android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5730             </td>
5731             <td class="entry_type">
5732                 <span class="entry_type_name entry_type_name_enum">byte</span>
5733
5734               <span class="entry_type_visibility"> [public as boolean]</span>
5735
5736
5737               <span class="entry_type_hwlevel">[legacy] </span>
5738
5739
5740
5741                 <ul class="entry_type_enum">
5742                   <li>
5743                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
5744                   </li>
5745                   <li>
5746                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
5747                   </li>
5748                 </ul>
5749
5750             </td> <!-- entry_type -->
5751
5752             <td class="entry_description">
5753               <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5754             </td>
5755
5756             <td class="entry_units">
5757             </td>
5758
5759             <td class="entry_range">
5760             </td>
5761
5762             <td class="entry_hal_version">
5763               <p>3.<wbr/>2</p>
5764             </td>
5765
5766             <td class="entry_tags">
5767               <ul class="entry_tags">
5768                   <li><a href="#tag_BC">BC</a></li>
5769               </ul>
5770             </td>
5771
5772           </tr>
5773           <tr class="entries_header">
5774             <th class="th_details" colspan="6">Details</th>
5775           </tr>
5776           <tr class="entry_cont">
5777             <td class="entry_details" colspan="6">
5778               <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5779 always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5780             </td>
5781           </tr>
5782
5783
5784           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5785            <!-- end of entry -->
5786         
5787                 
5788           <tr class="entry" id="static_android.control.availableModes">
5789             <td class="entry_name
5790              " rowspan="3">
5791               android.<wbr/>control.<wbr/>available<wbr/>Modes
5792             </td>
5793             <td class="entry_type">
5794                 <span class="entry_type_name">byte</span>
5795                 <span class="entry_type_container">x</span>
5796
5797                 <span class="entry_type_array">
5798                   n
5799                 </span>
5800               <span class="entry_type_visibility"> [public as enumList]</span>
5801
5802
5803               <span class="entry_type_hwlevel">[legacy] </span>
5804
5805
5806                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5807
5808
5809             </td> <!-- entry_type -->
5810
5811             <td class="entry_description">
5812               <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5813 device.<wbr/></p>
5814             </td>
5815
5816             <td class="entry_units">
5817             </td>
5818
5819             <td class="entry_range">
5820               <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5821             </td>
5822
5823             <td class="entry_hal_version">
5824               <p>3.<wbr/>2</p>
5825             </td>
5826
5827             <td class="entry_tags">
5828             </td>
5829
5830           </tr>
5831           <tr class="entries_header">
5832             <th class="th_details" colspan="6">Details</th>
5833           </tr>
5834           <tr class="entry_cont">
5835             <td class="entry_details" colspan="6">
5836               <p>This list contains control modes that can be set for the camera device.<wbr/>
5837 LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5838 devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5839             </td>
5840           </tr>
5841
5842
5843           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5844            <!-- end of entry -->
5845         
5846                 
5847           <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
5848             <td class="entry_name
5849              " rowspan="5">
5850               android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
5851             </td>
5852             <td class="entry_type">
5853                 <span class="entry_type_name">int32</span>
5854                 <span class="entry_type_container">x</span>
5855
5856                 <span class="entry_type_array">
5857                   2
5858                 </span>
5859               <span class="entry_type_visibility"> [public as rangeInt]</span>
5860
5861
5862
5863
5864                 <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div>
5865
5866
5867             </td> <!-- entry_type -->
5868
5869             <td class="entry_description">
5870               <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
5871 by this camera device.<wbr/></p>
5872             </td>
5873
5874             <td class="entry_units">
5875               ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
5876             </td>
5877
5878             <td class="entry_range">
5879             </td>
5880
5881             <td class="entry_hal_version">
5882               <p>3.<wbr/>2</p>
5883             </td>
5884
5885             <td class="entry_tags">
5886             </td>
5887
5888           </tr>
5889           <tr class="entries_header">
5890             <th class="th_details" colspan="6">Details</th>
5891           </tr>
5892           <tr class="entry_cont">
5893             <td class="entry_details" colspan="6">
5894               <p>Devices support post RAW sensitivity boost  will advertise
5895 <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling
5896 post RAW sensitivity boost.<wbr/></p>
5897 <p>This key will be <code>null</code> for devices that do not support any RAW format
5898 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
5899 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
5900 list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
5901             </td>
5902           </tr>
5903
5904           <tr class="entries_header">
5905             <th class="th_details" colspan="6">HAL Implementation Details</th>
5906           </tr>
5907           <tr class="entry_cont">
5908             <td class="entry_details" colspan="6">
5909               <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera
5910 framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output
5911 formats.<wbr/>  All legacy HAL3.<wbr/>4 and above devices should list this key if device supports
5912 any of RAW output formats.<wbr/></p>
5913             </td>
5914           </tr>
5915
5916           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5917            <!-- end of entry -->
5918         
5919         
5920
5921       <!-- end of kind -->
5922       </tbody>
5923       <tr><td colspan="7" class="kind">dynamic</td></tr>
5924
5925       <thead class="entries_header">
5926         <tr>
5927           <th class="th_name">Property Name</th>
5928           <th class="th_type">Type</th>
5929           <th class="th_description">Description</th>
5930           <th class="th_units">Units</th>
5931           <th class="th_range">Range</th>
5932           <th class="th_hal_version">Initial HIDL HAL version</th>
5933           <th class="th_tags">Tags</th>
5934         </tr>
5935       </thead>
5936
5937       <tbody>
5938
5939         
5940
5941         
5942
5943         
5944
5945         
5946
5947                 
5948           <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5949             <td class="entry_name
5950                 entry_name_deprecated
5951              " rowspan="3">
5952               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5953             </td>
5954             <td class="entry_type">
5955                 <span class="entry_type_name">int32</span>
5956
5957               <span class="entry_type_visibility"> [system]</span>
5958
5959
5960
5961               <span class="entry_type_deprecated">[deprecated] </span>
5962
5963
5964
5965             </td> <!-- entry_type -->
5966
5967             <td class="entry_description">
5968               <p>The ID sent with the latest
5969 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
5970             </td>
5971
5972             <td class="entry_units">
5973             </td>
5974
5975             <td class="entry_range">
5976               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5977             </td>
5978
5979             <td class="entry_hal_version">
5980               <p>3.<wbr/>2</p>
5981             </td>
5982
5983             <td class="entry_tags">
5984             </td>
5985
5986           </tr>
5987           <tr class="entries_header">
5988             <th class="th_details" colspan="6">Details</th>
5989           </tr>
5990           <tr class="entry_cont">
5991             <td class="entry_details" colspan="6">
5992               <p>Must be 0 if no
5993 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5994 by HAL.<wbr/> Always updated even if AE algorithm ignores the
5995 trigger</p>
5996             </td>
5997           </tr>
5998
5999
6000           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6001            <!-- end of entry -->
6002         
6003                 
6004           <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
6005             <td class="entry_name
6006              " rowspan="5">
6007               android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
6008             </td>
6009             <td class="entry_type">
6010                 <span class="entry_type_name entry_type_name_enum">byte</span>
6011
6012               <span class="entry_type_visibility"> [public]</span>
6013
6014
6015               <span class="entry_type_hwlevel">[legacy] </span>
6016
6017
6018
6019                 <ul class="entry_type_enum">
6020                   <li>
6021                     <span class="entry_type_enum_name">OFF (v3.2)</span>
6022                     <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
6023 avoid banding problems.<wbr/></p></span>
6024                   </li>
6025                   <li>
6026                     <span class="entry_type_enum_name">50HZ (v3.2)</span>
6027                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
6028 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
6029                   </li>
6030                   <li>
6031                     <span class="entry_type_enum_name">60HZ (v3.2)</span>
6032                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
6033 avoid banding problems with 60Hz illumination
6034 sources.<wbr/></p></span>
6035                   </li>
6036                   <li>
6037                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
6038                     <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
6039 antibanding routine to the current illumination
6040 condition.<wbr/> This is the default mode if AUTO is
6041 available on given camera device.<wbr/></p></span>
6042                   </li>
6043                 </ul>
6044
6045             </td> <!-- entry_type -->
6046
6047             <td class="entry_description">
6048               <p>The desired setting for the camera device's auto-exposure
6049 algorithm's antibanding compensation.<wbr/></p>
6050             </td>
6051
6052             <td class="entry_units">
6053             </td>
6054
6055             <td class="entry_range">
6056               <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
6057             </td>
6058
6059             <td class="entry_hal_version">
6060               <p>3.<wbr/>2</p>
6061             </td>
6062
6063             <td class="entry_tags">
6064               <ul class="entry_tags">
6065                   <li><a href="#tag_BC">BC</a></li>
6066               </ul>
6067             </td>
6068
6069           </tr>
6070           <tr class="entries_header">
6071             <th class="th_details" colspan="6">Details</th>
6072           </tr>
6073           <tr class="entry_cont">
6074             <td class="entry_details" colspan="6">
6075               <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
6076 lights,<wbr/> flicker at the rate of the power supply frequency
6077 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
6078 typically not noticeable to a person,<wbr/> it can be visible to
6079 a camera device.<wbr/> If a camera sets its exposure time to the
6080 wrong value,<wbr/> the flicker may become visible in the
6081 viewfinder as flicker or in a final captured image,<wbr/> as a
6082 set of variable-brightness bands across the image.<wbr/></p>
6083 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
6084 include antibanding routines that ensure that the chosen
6085 exposure value will not cause such banding.<wbr/> The choice of
6086 exposure time depends on the rate of flicker,<wbr/> which the
6087 camera device can detect automatically,<wbr/> or the expected
6088 rate can be selected by the application using this
6089 control.<wbr/></p>
6090 <p>A given camera device may not support all of the possible
6091 options for the antibanding mode.<wbr/> The
6092 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
6093 the available modes for a given camera device.<wbr/></p>
6094 <p>AUTO mode is the default if it is available on given
6095 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
6096 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
6097 and 60HZ will be available.<wbr/></p>
6098 <p>If manual exposure control is enabled (by setting
6099 <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/>
6100 then this setting has no effect,<wbr/> and the application must
6101 ensure it selects exposure times that do not cause banding
6102 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
6103 the application in this.<wbr/></p>
6104             </td>
6105           </tr>
6106
6107           <tr class="entries_header">
6108             <th class="th_details" colspan="6">HAL Implementation Details</th>
6109           </tr>
6110           <tr class="entry_cont">
6111             <td class="entry_details" colspan="6">
6112               <p>For all capture request templates,<wbr/> this field must be set
6113 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
6114 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
6115 60HZ must be available.<wbr/></p>
6116 <p>If manual exposure control is enabled (by setting
6117 <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/>
6118 then the exposure values provided by the application must not be
6119 adjusted for antibanding.<wbr/></p>
6120             </td>
6121           </tr>
6122
6123           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6124            <!-- end of entry -->
6125         
6126                 
6127           <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
6128             <td class="entry_name
6129              " rowspan="3">
6130               android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
6131             </td>
6132             <td class="entry_type">
6133                 <span class="entry_type_name">int32</span>
6134
6135               <span class="entry_type_visibility"> [public]</span>
6136
6137
6138               <span class="entry_type_hwlevel">[legacy] </span>
6139
6140
6141
6142
6143             </td> <!-- entry_type -->
6144
6145             <td class="entry_description">
6146               <p>Adjustment to auto-exposure (AE) target image
6147 brightness.<wbr/></p>
6148             </td>
6149
6150             <td class="entry_units">
6151               Compensation steps
6152             </td>
6153
6154             <td class="entry_range">
6155               <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
6156             </td>
6157
6158             <td class="entry_hal_version">
6159               <p>3.<wbr/>2</p>
6160             </td>
6161
6162             <td class="entry_tags">
6163               <ul class="entry_tags">
6164                   <li><a href="#tag_BC">BC</a></li>
6165               </ul>
6166             </td>
6167
6168           </tr>
6169           <tr class="entries_header">
6170             <th class="th_details" colspan="6">Details</th>
6171           </tr>
6172           <tr class="entry_cont">
6173             <td class="entry_details" colspan="6">
6174               <p>The adjustment is measured as a count of steps,<wbr/> with the
6175 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
6176 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
6177 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
6178 will mean an exposure compensation of +2 EV; -3 will mean an
6179 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
6180 of image brightness.<wbr/> Note that this control will only be
6181 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
6182 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
6183 <p>In the event of exposure compensation value being changed,<wbr/> camera device
6184 may take several frames to reach the newly requested exposure target.<wbr/>
6185 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
6186 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
6187 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
6188 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
6189             </td>
6190           </tr>
6191
6192
6193           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6194            <!-- end of entry -->
6195         
6196                 
6197           <tr class="entry" id="dynamic_android.control.aeLock">
6198             <td class="entry_name
6199              " rowspan="3">
6200               android.<wbr/>control.<wbr/>ae<wbr/>Lock
6201             </td>
6202             <td class="entry_type">
6203                 <span class="entry_type_name entry_type_name_enum">byte</span>
6204
6205               <span class="entry_type_visibility"> [public as boolean]</span>
6206
6207
6208               <span class="entry_type_hwlevel">[legacy] </span>
6209
6210
6211
6212                 <ul class="entry_type_enum">
6213                   <li>
6214                     <span class="entry_type_enum_name">OFF (v3.2)</span>
6215                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
6216 is free to update its parameters.<wbr/></p></span>
6217                   </li>
6218                   <li>
6219                     <span class="entry_type_enum_name">ON (v3.2)</span>
6220                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
6221 must not update the exposure and sensitivity parameters
6222 while the lock is active.<wbr/></p>
6223 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
6224 will still take effect while auto-exposure is locked.<wbr/></p>
6225 <p>Some rare LEGACY devices may not support
6226 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
6227                   </li>
6228                 </ul>
6229
6230             </td> <!-- entry_type -->
6231
6232             <td class="entry_description">
6233               <p>Whether auto-exposure (AE) is currently locked to its latest
6234 calculated values.<wbr/></p>
6235             </td>
6236
6237             <td class="entry_units">
6238             </td>
6239
6240             <td class="entry_range">
6241             </td>
6242
6243             <td class="entry_hal_version">
6244               <p>3.<wbr/>2</p>
6245             </td>
6246
6247             <td class="entry_tags">
6248               <ul class="entry_tags">
6249                   <li><a href="#tag_BC">BC</a></li>
6250               </ul>
6251             </td>
6252
6253           </tr>
6254           <tr class="entries_header">
6255             <th class="th_details" colspan="6">Details</th>
6256           </tr>
6257           <tr class="entry_cont">
6258             <td class="entry_details" colspan="6">
6259               <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
6260 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
6261 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
6262 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
6263 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
6264 <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
6265 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
6266 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
6267 when AE is already locked,<wbr/> the camera device will not change the exposure time
6268 (<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>)
6269 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
6270 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
6271 <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/>
6272 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
6273 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
6274 the AE if AE is locked by the camera device internally during precapture metering
6275 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
6276 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
6277 will never succeed in a sequence of preview requests where AE lock is always set
6278 to <code>false</code>.<wbr/></p>
6279 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
6280 get locked do not necessarily correspond to the settings that were present in the
6281 latest capture result received from the camera device,<wbr/> since additional captures
6282 and AE updates may have occurred even before the result was sent out.<wbr/> If an
6283 application is switching between automatic and manual control and wishes to eliminate
6284 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
6285 <ol>
6286 <li>Starting in auto-AE mode:</li>
6287 <li>Lock AE</li>
6288 <li>Wait for the first result to be output that has the AE locked</li>
6289 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
6290 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
6291 </ol>
6292 <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>
6293             </td>
6294           </tr>
6295
6296
6297           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6298            <!-- end of entry -->
6299         
6300                 
6301           <tr class="entry" id="dynamic_android.control.aeMode">
6302             <td class="entry_name
6303              " rowspan="3">
6304               android.<wbr/>control.<wbr/>ae<wbr/>Mode
6305             </td>
6306             <td class="entry_type">
6307                 <span class="entry_type_name entry_type_name_enum">byte</span>
6308
6309               <span class="entry_type_visibility"> [public]</span>
6310
6311
6312               <span class="entry_type_hwlevel">[legacy] </span>
6313
6314
6315
6316                 <ul class="entry_type_enum">
6317                   <li>
6318                     <span class="entry_type_enum_name">OFF (v3.2)</span>
6319                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
6320 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6321 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
6322 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
6323 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
6324 a flash unit for this camera device.<wbr/></p>
6325 <p>Note that auto-white balance (AWB) and auto-focus (AF)
6326 behavior is device dependent when AE is in OFF mode.<wbr/>
6327 To have consistent behavior across different devices,<wbr/>
6328 it is recommended to either set AWB and AF to OFF mode
6329 or lock AWB and AF before setting AE to OFF.<wbr/>
6330 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/>
6331 <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>
6332 for more details.<wbr/></p>
6333 <p>LEGACY devices do not support the OFF mode and will
6334 override attempts to use this value to ON.<wbr/></p></span>
6335                   </li>
6336                   <li>
6337                     <span class="entry_type_enum_name">ON (v3.2)</span>
6338                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
6339 with no flash control.<wbr/></p>
6340 <p>The application's values for
6341 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6342 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6343 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
6344 application has control over the various
6345 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
6346                   </li>
6347                   <li>
6348                     <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
6349                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6350 the camera's flash unit,<wbr/> firing it in low-light
6351 conditions.<wbr/></p>
6352 <p>The flash may be fired during a precapture sequence
6353 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6354 may be fired for captures for which the
6355 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6356 STILL_<wbr/>CAPTURE</p></span>
6357                   </li>
6358                   <li>
6359                     <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
6360                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6361 the camera's flash unit,<wbr/> always firing it for still
6362 captures.<wbr/></p>
6363 <p>The flash may be fired during a precapture sequence
6364 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6365 will always be fired for captures for which the
6366 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6367 STILL_<wbr/>CAPTURE</p></span>
6368                   </li>
6369                   <li>
6370                     <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
6371                     <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
6372 reduction.<wbr/></p>
6373 <p>If deemed necessary by the camera device,<wbr/> a red eye
6374 reduction flash will fire during the precapture
6375 sequence.<wbr/></p></span>
6376                   </li>
6377                   <li>
6378                     <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
6379                     <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
6380 <p>It informs the camera device that an external flash has been turned on,<wbr/> and that
6381 metering (and continuous focus if active) should be quickly recaculated to account
6382 for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
6383 <p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
6384 other available AE modes.<wbr/></p>
6385 <p>If the camera device supports AE external flash mode,<wbr/> aeState must be
6386 FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
6387 flash.<wbr/></p></span>
6388                   </li>
6389                 </ul>
6390
6391             </td> <!-- entry_type -->
6392
6393             <td class="entry_description">
6394               <p>The desired mode for the camera device's
6395 auto-exposure routine.<wbr/></p>
6396             </td>
6397
6398             <td class="entry_units">
6399             </td>
6400
6401             <td class="entry_range">
6402               <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
6403             </td>
6404
6405             <td class="entry_hal_version">
6406               <p>3.<wbr/>2</p>
6407             </td>
6408
6409             <td class="entry_tags">
6410               <ul class="entry_tags">
6411                   <li><a href="#tag_BC">BC</a></li>
6412               </ul>
6413             </td>
6414
6415           </tr>
6416           <tr class="entries_header">
6417             <th class="th_details" colspan="6">Details</th>
6418           </tr>
6419           <tr class="entry_cont">
6420             <td class="entry_details" colspan="6">
6421               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
6422 AUTO.<wbr/></p>
6423 <p>When set to any of the ON modes,<wbr/> the camera device's
6424 auto-exposure routine is enabled,<wbr/> overriding the
6425 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
6426 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6427 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6428 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
6429 is selected,<wbr/> the camera device's flash unit controls are
6430 also overridden.<wbr/></p>
6431 <p>The FLASH modes are only available if the camera device
6432 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>
6433 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
6434 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
6435 <p>When set to any of the ON modes,<wbr/> the values chosen by the
6436 camera device auto-exposure routine for the overridden
6437 fields for a given capture will be available in its
6438 CaptureResult.<wbr/></p>
6439             </td>
6440           </tr>
6441
6442
6443           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6444            <!-- end of entry -->
6445         
6446                 
6447           <tr class="entry" id="dynamic_android.control.aeRegions">
6448             <td class="entry_name
6449              " rowspan="5">
6450               android.<wbr/>control.<wbr/>ae<wbr/>Regions
6451             </td>
6452             <td class="entry_type">
6453                 <span class="entry_type_name">int32</span>
6454                 <span class="entry_type_container">x</span>
6455
6456                 <span class="entry_type_array">
6457                   5 x area_count
6458                 </span>
6459               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6460
6461
6462
6463
6464
6465
6466             </td> <!-- entry_type -->
6467
6468             <td class="entry_description">
6469               <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
6470             </td>
6471
6472             <td class="entry_units">
6473               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6474             </td>
6475
6476             <td class="entry_range">
6477               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6478 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6479             </td>
6480
6481             <td class="entry_hal_version">
6482               <p>3.<wbr/>2</p>
6483             </td>
6484
6485             <td class="entry_tags">
6486               <ul class="entry_tags">
6487                   <li><a href="#tag_BC">BC</a></li>
6488               </ul>
6489             </td>
6490
6491           </tr>
6492           <tr class="entries_header">
6493             <th class="th_details" colspan="6">Details</th>
6494           </tr>
6495           <tr class="entry_cont">
6496             <td class="entry_details" colspan="6">
6497               <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
6498 Otherwise will always be present.<wbr/></p>
6499 <p>The maximum number of regions supported by the device is determined by the value
6500 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
6501 <p>The coordinate system is based on the active pixel array,<wbr/>
6502 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6503 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6504 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6505 bottom-right pixel in the active pixel array.<wbr/></p>
6506 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6507 for every pixel in the area.<wbr/> This means that a large metering area
6508 with the same weight as a smaller area will have more effect in
6509 the metering result.<wbr/> Metering areas can partially overlap and the
6510 camera device will add the weights in the overlap region.<wbr/></p>
6511 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
6512 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
6513 weight is ignored.<wbr/></p>
6514 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6515 camera device.<wbr/></p>
6516 <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
6517 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6518 region and output only the intersection rectangle as the metering region in the result
6519 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
6520 not reported in the result metadata.<wbr/></p>
6521             </td>
6522           </tr>
6523
6524           <tr class="entries_header">
6525             <th class="th_details" colspan="6">HAL Implementation Details</th>
6526           </tr>
6527           <tr class="entry_cont">
6528             <td class="entry_details" colspan="6">
6529               <p>The HAL level representation of MeteringRectangle[] is a
6530 int[5 * area_<wbr/>count].<wbr/>
6531 Every five elements represent a metering region of
6532 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6533 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6534 exclusive on xmax and ymax.<wbr/></p>
6535             </td>
6536           </tr>
6537
6538           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6539            <!-- end of entry -->
6540         
6541                 
6542           <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
6543             <td class="entry_name
6544              " rowspan="3">
6545               android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
6546             </td>
6547             <td class="entry_type">
6548                 <span class="entry_type_name">int32</span>
6549                 <span class="entry_type_container">x</span>
6550
6551                 <span class="entry_type_array">
6552                   2
6553                 </span>
6554               <span class="entry_type_visibility"> [public as rangeInt]</span>
6555
6556
6557               <span class="entry_type_hwlevel">[legacy] </span>
6558
6559
6560
6561
6562             </td> <!-- entry_type -->
6563
6564             <td class="entry_description">
6565               <p>Range over which the auto-exposure routine can
6566 adjust the capture frame rate to maintain good
6567 exposure.<wbr/></p>
6568             </td>
6569
6570             <td class="entry_units">
6571               Frames per second (FPS)
6572             </td>
6573
6574             <td class="entry_range">
6575               <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>
6576             </td>
6577
6578             <td class="entry_hal_version">
6579               <p>3.<wbr/>2</p>
6580             </td>
6581
6582             <td class="entry_tags">
6583               <ul class="entry_tags">
6584                   <li><a href="#tag_BC">BC</a></li>
6585               </ul>
6586             </td>
6587
6588           </tr>
6589           <tr class="entries_header">
6590             <th class="th_details" colspan="6">Details</th>
6591           </tr>
6592           <tr class="entry_cont">
6593             <td class="entry_details" colspan="6">
6594               <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6595 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6596 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6597             </td>
6598           </tr>
6599
6600
6601           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6602            <!-- end of entry -->
6603         
6604                 
6605           <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6606             <td class="entry_name
6607              " rowspan="5">
6608               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6609             </td>
6610             <td class="entry_type">
6611                 <span class="entry_type_name entry_type_name_enum">byte</span>
6612
6613               <span class="entry_type_visibility"> [public]</span>
6614
6615
6616               <span class="entry_type_hwlevel">[limited] </span>
6617
6618
6619
6620                 <ul class="entry_type_enum">
6621                   <li>
6622                     <span class="entry_type_enum_name">IDLE (v3.2)</span>
6623                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6624                   </li>
6625                   <li>
6626                     <span class="entry_type_enum_name">START (v3.2)</span>
6627                     <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6628 by the camera device.<wbr/></p>
6629 <p>The exact effect of the precapture trigger depends on
6630 the current AE mode and state.<wbr/></p></span>
6631                   </li>
6632                   <li>
6633                     <span class="entry_type_enum_name">CANCEL (v3.2)</span>
6634                     <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6635 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6636 initial state.<wbr/></p></span>
6637                   </li>
6638                 </ul>
6639
6640             </td> <!-- entry_type -->
6641
6642             <td class="entry_description">
6643               <p>Whether the camera device will trigger a precapture
6644 metering sequence when it processes this request.<wbr/></p>
6645             </td>
6646
6647             <td class="entry_units">
6648             </td>
6649
6650             <td class="entry_range">
6651             </td>
6652
6653             <td class="entry_hal_version">
6654               <p>3.<wbr/>2</p>
6655             </td>
6656
6657             <td class="entry_tags">
6658               <ul class="entry_tags">
6659                   <li><a href="#tag_BC">BC</a></li>
6660               </ul>
6661             </td>
6662
6663           </tr>
6664           <tr class="entries_header">
6665             <th class="th_details" colspan="6">Details</th>
6666           </tr>
6667           <tr class="entry_cont">
6668             <td class="entry_details" colspan="6">
6669               <p>This entry is normally set to IDLE,<wbr/> or is not
6670 included at all in the request settings.<wbr/> When included and
6671 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6672 precapture metering sequence.<wbr/></p>
6673 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
6674 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6675 If a precapture metering sequence is already completed,<wbr/> and the camera
6676 device has implicitly locked the AE for subsequent still capture,<wbr/> the
6677 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6678 <p>The precapture sequence should be triggered before starting a
6679 high-quality still capture for final metering decisions to
6680 be made,<wbr/> and for firing pre-capture flash pulses to estimate
6681 scene brightness and required final capture flash power,<wbr/> when
6682 the flash is enabled.<wbr/></p>
6683 <p>Normally,<wbr/> this entry should be set to START for only a
6684 single request,<wbr/> and the application should wait until the
6685 sequence completes before starting a new one.<wbr/></p>
6686 <p>When a precapture metering sequence is finished,<wbr/> the camera device
6687 may lock the auto-exposure routine internally to be able to accurately expose the
6688 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6689 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6690 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6691 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
6692 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
6693 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6694 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6695 internally locked AE if the application doesn't submit a still capture request after
6696 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6697 be used in devices that have earlier API levels.<wbr/></p>
6698 <p>The exact effect of auto-exposure (AE) precapture trigger
6699 depends on the current AE mode and state; see
6700 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6701 details.<wbr/></p>
6702 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6703 capturing a high-resolution JPEG image will automatically trigger a
6704 precapture sequence before the high-resolution capture,<wbr/> including
6705 potentially firing a pre-capture flash.<wbr/></p>
6706 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6707 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6708 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6709 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6710 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6711 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
6712 example.<wbr/></p>
6713 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6714 the camera device will complete them in the optimal order for that device.<wbr/></p>
6715             </td>
6716           </tr>
6717
6718           <tr class="entries_header">
6719             <th class="th_details" colspan="6">HAL Implementation Details</th>
6720           </tr>
6721           <tr class="entry_cont">
6722             <td class="entry_details" colspan="6">
6723               <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6724 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
6725 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6726 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6727 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6728             </td>
6729           </tr>
6730
6731           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6732            <!-- end of entry -->
6733         
6734                 
6735           <tr class="entry" id="dynamic_android.control.aeState">
6736             <td class="entry_name
6737              " rowspan="3">
6738               android.<wbr/>control.<wbr/>ae<wbr/>State
6739             </td>
6740             <td class="entry_type">
6741                 <span class="entry_type_name entry_type_name_enum">byte</span>
6742
6743               <span class="entry_type_visibility"> [public]</span>
6744
6745
6746               <span class="entry_type_hwlevel">[limited] </span>
6747
6748
6749
6750                 <ul class="entry_type_enum">
6751                   <li>
6752                     <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
6753                     <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6754 <p>When a camera device is opened,<wbr/> it starts in
6755 this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6756 this state in capture result.<wbr/></p></span>
6757                   </li>
6758                   <li>
6759                     <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
6760                     <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6761 for the current scene.<wbr/></p>
6762 <p>This is a transient state,<wbr/> the camera device may skip
6763 reporting this state in capture result.<wbr/></p></span>
6764                   </li>
6765                   <li>
6766                     <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
6767                     <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6768 current scene.<wbr/></p></span>
6769                   </li>
6770                   <li>
6771                     <span class="entry_type_enum_name">LOCKED (v3.2)</span>
6772                     <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6773                   </li>
6774                   <li>
6775                     <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span>
6776                     <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6777 needs to be fired for good quality still
6778 capture.<wbr/></p></span>
6779                   </li>
6780                   <li>
6781                     <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span>
6782                     <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6783 and is currently executing it.<wbr/></p>
6784 <p>Precapture can be triggered through setting
6785 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6786 active and completed (if it causes camera device internal AE lock) precapture
6787 metering sequence can be canceled through setting
6788 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6789 <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6790 or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6791 state,<wbr/> the camera device may skip reporting this state in
6792 capture result.<wbr/></p></span>
6793                   </li>
6794                 </ul>
6795
6796             </td> <!-- entry_type -->
6797
6798             <td class="entry_description">
6799               <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6800             </td>
6801
6802             <td class="entry_units">
6803             </td>
6804
6805             <td class="entry_range">
6806             </td>
6807
6808             <td class="entry_hal_version">
6809               <p>3.<wbr/>2</p>
6810             </td>
6811
6812             <td class="entry_tags">
6813             </td>
6814
6815           </tr>
6816           <tr class="entries_header">
6817             <th class="th_details" colspan="6">Details</th>
6818           </tr>
6819           <tr class="entry_cont">
6820             <td class="entry_details" colspan="6">
6821               <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6822 resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6823 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
6824 the algorithm states to INACTIVE.<wbr/></p>
6825 <p>The camera device can do several state transitions between two results,<wbr/> if it is
6826 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6827 seen in a result.<wbr/></p>
6828 <p>The state in the result is the state for this image (in sync with this image): if
6829 AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6830 be good to use.<wbr/></p>
6831 <p>Below are state transition tables for different AE modes.<wbr/></p>
6832 <table>
6833 <thead>
6834 <tr>
6835 <th align="center">State</th>
6836 <th align="center">Transition Cause</th>
6837 <th align="center">New State</th>
6838 <th align="center">Notes</th>
6839 </tr>
6840 </thead>
6841 <tbody>
6842 <tr>
6843 <td align="center">INACTIVE</td>
6844 <td align="center"></td>
6845 <td align="center">INACTIVE</td>
6846 <td align="center">Camera device auto exposure algorithm is disabled</td>
6847 </tr>
6848 </tbody>
6849 </table>
6850 <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON*:</p>
6851 <table>
6852 <thead>
6853 <tr>
6854 <th align="center">State</th>
6855 <th align="center">Transition Cause</th>
6856 <th align="center">New State</th>
6857 <th align="center">Notes</th>
6858 </tr>
6859 </thead>
6860 <tbody>
6861 <tr>
6862 <td align="center">INACTIVE</td>
6863 <td align="center">Camera device initiates AE scan</td>
6864 <td align="center">SEARCHING</td>
6865 <td align="center">Values changing</td>
6866 </tr>
6867 <tr>
6868 <td align="center">INACTIVE</td>
6869 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6870 <td align="center">LOCKED</td>
6871 <td align="center">Values locked</td>
6872 </tr>
6873 <tr>
6874 <td align="center">SEARCHING</td>
6875 <td align="center">Camera device finishes AE scan</td>
6876 <td align="center">CONVERGED</td>
6877 <td align="center">Good values,<wbr/> not changing</td>
6878 </tr>
6879 <tr>
6880 <td align="center">SEARCHING</td>
6881 <td align="center">Camera device finishes AE scan</td>
6882 <td align="center">FLASH_<wbr/>REQUIRED</td>
6883 <td align="center">Converged but too dark w/<wbr/>o flash</td>
6884 </tr>
6885 <tr>
6886 <td align="center">SEARCHING</td>
6887 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6888 <td align="center">LOCKED</td>
6889 <td align="center">Values locked</td>
6890 </tr>
6891 <tr>
6892 <td align="center">CONVERGED</td>
6893 <td align="center">Camera device initiates AE scan</td>
6894 <td align="center">SEARCHING</td>
6895 <td align="center">Values changing</td>
6896 </tr>
6897 <tr>
6898 <td align="center">CONVERGED</td>
6899 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6900 <td align="center">LOCKED</td>
6901 <td align="center">Values locked</td>
6902 </tr>
6903 <tr>
6904 <td align="center">FLASH_<wbr/>REQUIRED</td>
6905 <td align="center">Camera device initiates AE scan</td>
6906 <td align="center">SEARCHING</td>
6907 <td align="center">Values changing</td>
6908 </tr>
6909 <tr>
6910 <td align="center">FLASH_<wbr/>REQUIRED</td>
6911 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6912 <td align="center">LOCKED</td>
6913 <td align="center">Values locked</td>
6914 </tr>
6915 <tr>
6916 <td align="center">LOCKED</td>
6917 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6918 <td align="center">SEARCHING</td>
6919 <td align="center">Values not good after unlock</td>
6920 </tr>
6921 <tr>
6922 <td align="center">LOCKED</td>
6923 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6924 <td align="center">CONVERGED</td>
6925 <td align="center">Values good after unlock</td>
6926 </tr>
6927 <tr>
6928 <td align="center">LOCKED</td>
6929 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6930 <td align="center">FLASH_<wbr/>REQUIRED</td>
6931 <td align="center">Exposure good,<wbr/> but too dark</td>
6932 </tr>
6933 <tr>
6934 <td align="center">PRECAPTURE</td>
6935 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6936 <td align="center">CONVERGED</td>
6937 <td align="center">Ready for high-quality capture</td>
6938 </tr>
6939 <tr>
6940 <td align="center">PRECAPTURE</td>
6941 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6942 <td align="center">LOCKED</td>
6943 <td align="center">Ready for high-quality capture</td>
6944 </tr>
6945 <tr>
6946 <td align="center">LOCKED</td>
6947 <td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6948 <td align="center">LOCKED</td>
6949 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6950 </tr>
6951 <tr>
6952 <td align="center">LOCKED</td>
6953 <td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6954 <td align="center">LOCKED</td>
6955 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6956 </tr>
6957 <tr>
6958 <td align="center">Any state (excluding LOCKED)</td>
6959 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6960 <td align="center">PRECAPTURE</td>
6961 <td align="center">Start AE precapture metering sequence</td>
6962 </tr>
6963 <tr>
6964 <td align="center">Any state (excluding LOCKED)</td>
6965 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
6966 <td align="center">INACTIVE</td>
6967 <td align="center">Currently active precapture metering sequence is canceled</td>
6968 </tr>
6969 </tbody>
6970 </table>
6971 <p>If the camera device supports AE external flash mode (ON_<wbr/>EXTERNAL_<wbr/>FLASH is included in
6972 <a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a>),<wbr/> aeState must be FLASH_<wbr/>REQUIRED after the camera device
6973 finishes AE scan and it's too dark without flash.<wbr/></p>
6974 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6975 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6976 can be skipped in that manner is called a transient state.<wbr/></p>
6977 <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON*),<wbr/> in addition to the state transitions
6978 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6979 transient states between two results.<wbr/> See below table for examples:</p>
6980 <table>
6981 <thead>
6982 <tr>
6983 <th align="center">State</th>
6984 <th align="center">Transition Cause</th>
6985 <th align="center">New State</th>
6986 <th align="center">Notes</th>
6987 </tr>
6988 </thead>
6989 <tbody>
6990 <tr>
6991 <td align="center">INACTIVE</td>
6992 <td align="center">Camera device finished AE scan</td>
6993 <td align="center">CONVERGED</td>
6994 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6995 </tr>
6996 <tr>
6997 <td align="center">Any state (excluding LOCKED)</td>
6998 <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>
6999 <td align="center">FLASH_<wbr/>REQUIRED</td>
7000 <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>
7001 </tr>
7002 <tr>
7003 <td align="center">Any state (excluding LOCKED)</td>
7004 <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>
7005 <td align="center">CONVERGED</td>
7006 <td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
7007 </tr>
7008 <tr>
7009 <td align="center">Any state (excluding LOCKED)</td>
7010 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
7011 <td align="center">FLASH_<wbr/>REQUIRED</td>
7012 <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>
7013 </tr>
7014 <tr>
7015 <td align="center">Any state (excluding LOCKED)</td>
7016 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
7017 <td align="center">CONVERGED</td>
7018 <td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
7019 </tr>
7020 <tr>
7021 <td align="center">CONVERGED</td>
7022 <td align="center">Camera device finished AE scan</td>
7023 <td align="center">FLASH_<wbr/>REQUIRED</td>
7024 <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>
7025 </tr>
7026 <tr>
7027 <td align="center">FLASH_<wbr/>REQUIRED</td>
7028 <td align="center">Camera device finished AE scan</td>
7029 <td align="center">CONVERGED</td>
7030 <td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
7031 </tr>
7032 </tbody>
7033 </table>
7034             </td>
7035           </tr>
7036
7037
7038           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7039            <!-- end of entry -->
7040         
7041                 
7042           <tr class="entry" id="dynamic_android.control.afMode">
7043             <td class="entry_name
7044              " rowspan="5">
7045               android.<wbr/>control.<wbr/>af<wbr/>Mode
7046             </td>
7047             <td class="entry_type">
7048                 <span class="entry_type_name entry_type_name_enum">byte</span>
7049
7050               <span class="entry_type_visibility"> [public]</span>
7051
7052
7053               <span class="entry_type_hwlevel">[legacy] </span>
7054
7055
7056
7057                 <ul class="entry_type_enum">
7058                   <li>
7059                     <span class="entry_type_enum_name">OFF (v3.2)</span>
7060                     <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
7061 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
7062 application.<wbr/></p></span>
7063                   </li>
7064                   <li>
7065                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
7066                     <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
7067 <p>In this mode,<wbr/> the lens does not move unless
7068 the autofocus trigger action is called.<wbr/> When that trigger
7069 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7070 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
7071 <p>Always supported if lens is not fixed focus.<wbr/></p>
7072 <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
7073 is fixed-focus.<wbr/></p>
7074 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
7075 and sets the AF state to INACTIVE.<wbr/></p></span>
7076                   </li>
7077                   <li>
7078                     <span class="entry_type_enum_name">MACRO (v3.2)</span>
7079                     <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
7080 <p>In this mode,<wbr/> the lens does not move unless the
7081 autofocus trigger action is called.<wbr/> When that trigger is
7082 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7083 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
7084 mode is optimized for focusing on objects very close to
7085 the camera.<wbr/></p>
7086 <p>When that trigger is activated,<wbr/> AF will transition to
7087 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
7088 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
7089 position to default,<wbr/> and sets the AF state to
7090 INACTIVE.<wbr/></p></span>
7091                   </li>
7092                   <li>
7093                     <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
7094                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7095 position continually to attempt to provide a
7096 constantly-in-focus image stream.<wbr/></p>
7097 <p>The focusing behavior should be suitable for good quality
7098 video recording; typically this means slower focus
7099 movement and no overshoots.<wbr/> When the AF trigger is not
7100 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
7101 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
7102 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
7103 the algorithm should immediately transition into
7104 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7105 lens position until a cancel AF trigger is received.<wbr/></p>
7106 <p>Once cancel is received,<wbr/> the algorithm should transition
7107 back to INACTIVE and resume passive scan.<wbr/> Note that this
7108 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
7109 ongoing PASSIVE_<wbr/>SCAN must immediately be
7110 canceled.<wbr/></p></span>
7111                   </li>
7112                   <li>
7113                     <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
7114                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7115 position continually to attempt to provide a
7116 constantly-in-focus image stream.<wbr/></p>
7117 <p>The focusing behavior should be suitable for still image
7118 capture; typically this means focusing as fast as
7119 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
7120 algorithm should start in INACTIVE state,<wbr/> and then
7121 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
7122 appropriate as it attempts to maintain focus.<wbr/> When the AF
7123 trigger is activated,<wbr/> the algorithm should finish its
7124 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
7125 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7126 lens position until a cancel AF trigger is received.<wbr/></p>
7127 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
7128 should transition back to INACTIVE and then act as if it
7129 has just been started.<wbr/></p></span>
7130                   </li>
7131                   <li>
7132                     <span class="entry_type_enum_name">EDOF (v3.2)</span>
7133                     <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
7134 <p>The camera device will produce images with an extended
7135 depth of field automatically; no special focusing
7136 operations need to be done before taking a picture.<wbr/></p>
7137 <p>AF triggers are ignored,<wbr/> and the AF state will always be
7138 INACTIVE.<wbr/></p></span>
7139                   </li>
7140                 </ul>
7141
7142             </td> <!-- entry_type -->
7143
7144             <td class="entry_description">
7145               <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
7146 mode it is set to.<wbr/></p>
7147             </td>
7148
7149             <td class="entry_units">
7150             </td>
7151
7152             <td class="entry_range">
7153               <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
7154             </td>
7155
7156             <td class="entry_hal_version">
7157               <p>3.<wbr/>2</p>
7158             </td>
7159
7160             <td class="entry_tags">
7161               <ul class="entry_tags">
7162                   <li><a href="#tag_BC">BC</a></li>
7163               </ul>
7164             </td>
7165
7166           </tr>
7167           <tr class="entries_header">
7168             <th class="th_details" colspan="6">Details</th>
7169           </tr>
7170           <tr class="entry_cont">
7171             <td class="entry_details" colspan="6">
7172               <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
7173 (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
7174 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
7175 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
7176 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>
7177 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
7178 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
7179 in result metadata.<wbr/></p>
7180             </td>
7181           </tr>
7182
7183           <tr class="entries_header">
7184             <th class="th_details" colspan="6">HAL Implementation Details</th>
7185           </tr>
7186           <tr class="entry_cont">
7187             <td class="entry_details" colspan="6">
7188               <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
7189 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
7190 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
7191 <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
7192 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
7193 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
7194 the same focal plane remains in focus.<wbr/></p>
7195 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
7196 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
7197 (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
7198 same lock behavior as above.<wbr/></p>
7199 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
7200 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/>
7201 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
7202 manual control.<wbr/></p>
7203 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
7204 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
7205 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
7206 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
7207 that will arise on camera modules with open-loop VCMs.<wbr/></p>
7208             </td>
7209           </tr>
7210
7211           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7212            <!-- end of entry -->
7213         
7214                 
7215           <tr class="entry" id="dynamic_android.control.afRegions">
7216             <td class="entry_name
7217              " rowspan="5">
7218               android.<wbr/>control.<wbr/>af<wbr/>Regions
7219             </td>
7220             <td class="entry_type">
7221                 <span class="entry_type_name">int32</span>
7222                 <span class="entry_type_container">x</span>
7223
7224                 <span class="entry_type_array">
7225                   5 x area_count
7226                 </span>
7227               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7228
7229
7230
7231
7232
7233
7234             </td> <!-- entry_type -->
7235
7236             <td class="entry_description">
7237               <p>List of metering areas to use for auto-focus.<wbr/></p>
7238             </td>
7239
7240             <td class="entry_units">
7241               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7242             </td>
7243
7244             <td class="entry_range">
7245               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7246 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7247             </td>
7248
7249             <td class="entry_hal_version">
7250               <p>3.<wbr/>2</p>
7251             </td>
7252
7253             <td class="entry_tags">
7254               <ul class="entry_tags">
7255                   <li><a href="#tag_BC">BC</a></li>
7256               </ul>
7257             </td>
7258
7259           </tr>
7260           <tr class="entries_header">
7261             <th class="th_details" colspan="6">Details</th>
7262           </tr>
7263           <tr class="entry_cont">
7264             <td class="entry_details" colspan="6">
7265               <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
7266 Otherwise will always be present.<wbr/></p>
7267 <p>The maximum number of focus areas supported by the device is determined by the value
7268 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
7269 <p>The coordinate system is based on the active pixel array,<wbr/>
7270 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7271 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7272 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7273 bottom-right pixel in the active pixel array.<wbr/></p>
7274 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
7275 for every pixel in the area.<wbr/> This means that a large metering area
7276 with the same weight as a smaller area will have more effect in
7277 the metering result.<wbr/> Metering areas can partially overlap and the
7278 camera device will add the weights in the overlap region.<wbr/></p>
7279 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
7280 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
7281 ignored.<wbr/></p>
7282 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7283 camera device.<wbr/></p>
7284 <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
7285 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7286 region and output only the intersection rectangle as the metering region in the result
7287 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
7288 not reported in the result metadata.<wbr/></p>
7289             </td>
7290           </tr>
7291
7292           <tr class="entries_header">
7293             <th class="th_details" colspan="6">HAL Implementation Details</th>
7294           </tr>
7295           <tr class="entry_cont">
7296             <td class="entry_details" colspan="6">
7297               <p>The HAL level representation of MeteringRectangle[] is a
7298 int[5 * area_<wbr/>count].<wbr/>
7299 Every five elements represent a metering region of
7300 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7301 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7302 exclusive on xmax and ymax.<wbr/></p>
7303             </td>
7304           </tr>
7305
7306           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7307            <!-- end of entry -->
7308         
7309                 
7310           <tr class="entry" id="dynamic_android.control.afTrigger">
7311             <td class="entry_name
7312              " rowspan="5">
7313               android.<wbr/>control.<wbr/>af<wbr/>Trigger
7314             </td>
7315             <td class="entry_type">
7316                 <span class="entry_type_name entry_type_name_enum">byte</span>
7317
7318               <span class="entry_type_visibility"> [public]</span>
7319
7320
7321               <span class="entry_type_hwlevel">[legacy] </span>
7322
7323
7324
7325                 <ul class="entry_type_enum">
7326                   <li>
7327                     <span class="entry_type_enum_name">IDLE (v3.2)</span>
7328                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
7329                   </li>
7330                   <li>
7331                     <span class="entry_type_enum_name">START (v3.2)</span>
7332                     <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
7333                   </li>
7334                   <li>
7335                     <span class="entry_type_enum_name">CANCEL (v3.2)</span>
7336                     <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
7337 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
7338                   </li>
7339                 </ul>
7340
7341             </td> <!-- entry_type -->
7342
7343             <td class="entry_description">
7344               <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
7345             </td>
7346
7347             <td class="entry_units">
7348             </td>
7349
7350             <td class="entry_range">
7351             </td>
7352
7353             <td class="entry_hal_version">
7354               <p>3.<wbr/>2</p>
7355             </td>
7356
7357             <td class="entry_tags">
7358               <ul class="entry_tags">
7359                   <li><a href="#tag_BC">BC</a></li>
7360               </ul>
7361             </td>
7362
7363           </tr>
7364           <tr class="entries_header">
7365             <th class="th_details" colspan="6">Details</th>
7366           </tr>
7367           <tr class="entry_cont">
7368             <td class="entry_details" colspan="6">
7369               <p>This entry is normally set to IDLE,<wbr/> or is not
7370 included at all in the request settings.<wbr/></p>
7371 <p>When included and set to START,<wbr/> the camera device will trigger the
7372 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
7373 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
7374 and return to its initial AF state.<wbr/></p>
7375 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
7376 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
7377 START for multiple captures in a row means restarting the AF operation over
7378 and over again.<wbr/></p>
7379 <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>
7380 <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>
7381 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
7382 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
7383 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
7384 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
7385 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
7386             </td>
7387           </tr>
7388
7389           <tr class="entries_header">
7390             <th class="th_details" colspan="6">HAL Implementation Details</th>
7391           </tr>
7392           <tr class="entry_cont">
7393             <td class="entry_details" colspan="6">
7394               <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
7395 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
7396 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
7397 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
7398 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
7399             </td>
7400           </tr>
7401
7402           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7403            <!-- end of entry -->
7404         
7405                 
7406           <tr class="entry" id="dynamic_android.control.afState">
7407             <td class="entry_name
7408              " rowspan="3">
7409               android.<wbr/>control.<wbr/>af<wbr/>State
7410             </td>
7411             <td class="entry_type">
7412                 <span class="entry_type_name entry_type_name_enum">byte</span>
7413
7414               <span class="entry_type_visibility"> [public]</span>
7415
7416
7417               <span class="entry_type_hwlevel">[legacy] </span>
7418
7419
7420
7421                 <ul class="entry_type_enum">
7422                   <li>
7423                     <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
7424                     <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
7425 to scan.<wbr/></p>
7426 <p>When a camera device is opened,<wbr/> it starts in this
7427 state.<wbr/> This is a transient state,<wbr/> the camera device may
7428 skip reporting this state in capture
7429 result.<wbr/></p></span>
7430                   </li>
7431                   <li>
7432                     <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span>
7433                     <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
7434 camera device in a continuous autofocus mode.<wbr/></p>
7435 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7436 state,<wbr/> the camera device may skip reporting this state in
7437 capture result.<wbr/></p></span>
7438                   </li>
7439                   <li>
7440                     <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span>
7441                     <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
7442 restart scanning at any time.<wbr/></p>
7443 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7444 state,<wbr/> the camera device may skip reporting this state in
7445 capture result.<wbr/></p></span>
7446                   </li>
7447                   <li>
7448                     <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span>
7449                     <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
7450 triggered by AF trigger.<wbr/></p>
7451 <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
7452 state,<wbr/> the camera device may skip reporting this state in
7453 capture result.<wbr/></p></span>
7454                   </li>
7455                   <li>
7456                     <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span>
7457                     <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
7458 focus.<wbr/></p>
7459 <p>This state is reached only after an explicit START AF trigger has been
7460 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
7461 <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
7462 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>
7463                   </li>
7464                   <li>
7465                     <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span>
7466                     <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
7467 focus.<wbr/></p>
7468 <p>This state is reached only after an explicit START AF trigger has been
7469 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
7470 <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
7471 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>
7472                   </li>
7473                   <li>
7474                     <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span>
7475                     <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
7476 and may restart scanning at any time.<wbr/></p>
7477 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
7478 device may skip reporting this state in capture result.<wbr/></p>
7479 <p>LEGACY camera devices do not support this state.<wbr/> When a passive
7480 scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
7481                   </li>
7482                 </ul>
7483
7484             </td> <!-- entry_type -->
7485
7486             <td class="entry_description">
7487               <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
7488             </td>
7489
7490             <td class="entry_units">
7491             </td>
7492
7493             <td class="entry_range">
7494             </td>
7495
7496             <td class="entry_hal_version">
7497               <p>3.<wbr/>2</p>
7498             </td>
7499
7500             <td class="entry_tags">
7501             </td>
7502
7503           </tr>
7504           <tr class="entries_header">
7505             <th class="th_details" colspan="6">Details</th>
7506           </tr>
7507           <tr class="entry_cont">
7508             <td class="entry_details" colspan="6">
7509               <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
7510 resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7511 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
7512 the algorithm states to INACTIVE.<wbr/></p>
7513 <p>The camera device can do several state transitions between two results,<wbr/> if it is
7514 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
7515 seen in a result.<wbr/></p>
7516 <p>The state in the result is the state for this image (in sync with this image): if
7517 AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
7518 be sharp.<wbr/></p>
7519 <p>Below are state transition tables for different AF modes.<wbr/></p>
7520 <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>
7521 <table>
7522 <thead>
7523 <tr>
7524 <th align="center">State</th>
7525 <th align="center">Transition Cause</th>
7526 <th align="center">New State</th>
7527 <th align="center">Notes</th>
7528 </tr>
7529 </thead>
7530 <tbody>
7531 <tr>
7532 <td align="center">INACTIVE</td>
7533 <td align="center"></td>
7534 <td align="center">INACTIVE</td>
7535 <td align="center">Never changes</td>
7536 </tr>
7537 </tbody>
7538 </table>
7539 <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>
7540 <table>
7541 <thead>
7542 <tr>
7543 <th align="center">State</th>
7544 <th align="center">Transition Cause</th>
7545 <th align="center">New State</th>
7546 <th align="center">Notes</th>
7547 </tr>
7548 </thead>
7549 <tbody>
7550 <tr>
7551 <td align="center">INACTIVE</td>
7552 <td align="center">AF_<wbr/>TRIGGER</td>
7553 <td align="center">ACTIVE_<wbr/>SCAN</td>
7554 <td align="center">Start AF sweep,<wbr/> Lens now moving</td>
7555 </tr>
7556 <tr>
7557 <td align="center">ACTIVE_<wbr/>SCAN</td>
7558 <td align="center">AF sweep done</td>
7559 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7560 <td align="center">Focused,<wbr/> Lens now locked</td>
7561 </tr>
7562 <tr>
7563 <td align="center">ACTIVE_<wbr/>SCAN</td>
7564 <td align="center">AF sweep done</td>
7565 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7566 <td align="center">Not focused,<wbr/> Lens now locked</td>
7567 </tr>
7568 <tr>
7569 <td align="center">ACTIVE_<wbr/>SCAN</td>
7570 <td align="center">AF_<wbr/>CANCEL</td>
7571 <td align="center">INACTIVE</td>
7572 <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
7573 </tr>
7574 <tr>
7575 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7576 <td align="center">AF_<wbr/>CANCEL</td>
7577 <td align="center">INACTIVE</td>
7578 <td align="center">Cancel/<wbr/>reset AF</td>
7579 </tr>
7580 <tr>
7581 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7582 <td align="center">AF_<wbr/>TRIGGER</td>
7583 <td align="center">ACTIVE_<wbr/>SCAN</td>
7584 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7585 </tr>
7586 <tr>
7587 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7588 <td align="center">AF_<wbr/>CANCEL</td>
7589 <td align="center">INACTIVE</td>
7590 <td align="center">Cancel/<wbr/>reset AF</td>
7591 </tr>
7592 <tr>
7593 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7594 <td align="center">AF_<wbr/>TRIGGER</td>
7595 <td align="center">ACTIVE_<wbr/>SCAN</td>
7596 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7597 </tr>
7598 <tr>
7599 <td align="center">Any state</td>
7600 <td align="center">Mode change</td>
7601 <td align="center">INACTIVE</td>
7602 <td align="center"></td>
7603 </tr>
7604 </tbody>
7605 </table>
7606 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7607 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7608 can be skipped in that manner is called a transient state.<wbr/></p>
7609 <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7610 state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7611 one or more transient states between two results.<wbr/> See below table for examples:</p>
7612 <table>
7613 <thead>
7614 <tr>
7615 <th align="center">State</th>
7616 <th align="center">Transition Cause</th>
7617 <th align="center">New State</th>
7618 <th align="center">Notes</th>
7619 </tr>
7620 </thead>
7621 <tbody>
7622 <tr>
7623 <td align="center">INACTIVE</td>
7624 <td align="center">AF_<wbr/>TRIGGER</td>
7625 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7626 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7627 </tr>
7628 <tr>
7629 <td align="center">INACTIVE</td>
7630 <td align="center">AF_<wbr/>TRIGGER</td>
7631 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7632 <td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7633 </tr>
7634 <tr>
7635 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7636 <td align="center">AF_<wbr/>TRIGGER</td>
7637 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7638 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7639 </tr>
7640 <tr>
7641 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7642 <td align="center">AF_<wbr/>TRIGGER</td>
7643 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7644 <td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7645 </tr>
7646 </tbody>
7647 </table>
7648 <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>
7649 <table>
7650 <thead>
7651 <tr>
7652 <th align="center">State</th>
7653 <th align="center">Transition Cause</th>
7654 <th align="center">New State</th>
7655 <th align="center">Notes</th>
7656 </tr>
7657 </thead>
7658 <tbody>
7659 <tr>
7660 <td align="center">INACTIVE</td>
7661 <td align="center">Camera device initiates new scan</td>
7662 <td align="center">PASSIVE_<wbr/>SCAN</td>
7663 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7664 </tr>
7665 <tr>
7666 <td align="center">INACTIVE</td>
7667 <td align="center">AF_<wbr/>TRIGGER</td>
7668 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7669 <td align="center">AF state query,<wbr/> Lens now locked</td>
7670 </tr>
7671 <tr>
7672 <td align="center">PASSIVE_<wbr/>SCAN</td>
7673 <td align="center">Camera device completes current scan</td>
7674 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7675 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7676 </tr>
7677 <tr>
7678 <td align="center">PASSIVE_<wbr/>SCAN</td>
7679 <td align="center">Camera device fails current scan</td>
7680 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7681 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7682 </tr>
7683 <tr>
7684 <td align="center">PASSIVE_<wbr/>SCAN</td>
7685 <td align="center">AF_<wbr/>TRIGGER</td>
7686 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7687 <td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7688 </tr>
7689 <tr>
7690 <td align="center">PASSIVE_<wbr/>SCAN</td>
7691 <td align="center">AF_<wbr/>TRIGGER</td>
7692 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7693 <td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7694 </tr>
7695 <tr>
7696 <td align="center">PASSIVE_<wbr/>SCAN</td>
7697 <td align="center">AF_<wbr/>CANCEL</td>
7698 <td align="center">INACTIVE</td>
7699 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7700 </tr>
7701 <tr>
7702 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7703 <td align="center">Camera device initiates new scan</td>
7704 <td align="center">PASSIVE_<wbr/>SCAN</td>
7705 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7706 </tr>
7707 <tr>
7708 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7709 <td align="center">Camera device initiates new scan</td>
7710 <td align="center">PASSIVE_<wbr/>SCAN</td>
7711 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7712 </tr>
7713 <tr>
7714 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7715 <td align="center">AF_<wbr/>TRIGGER</td>
7716 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7717 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7718 </tr>
7719 <tr>
7720 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7721 <td align="center">AF_<wbr/>TRIGGER</td>
7722 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7723 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7724 </tr>
7725 <tr>
7726 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7727 <td align="center">AF_<wbr/>TRIGGER</td>
7728 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7729 <td align="center">No effect</td>
7730 </tr>
7731 <tr>
7732 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7733 <td align="center">AF_<wbr/>CANCEL</td>
7734 <td align="center">INACTIVE</td>
7735 <td align="center">Restart AF scan</td>
7736 </tr>
7737 <tr>
7738 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7739 <td align="center">AF_<wbr/>TRIGGER</td>
7740 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7741 <td align="center">No effect</td>
7742 </tr>
7743 <tr>
7744 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7745 <td align="center">AF_<wbr/>CANCEL</td>
7746 <td align="center">INACTIVE</td>
7747 <td align="center">Restart AF scan</td>
7748 </tr>
7749 </tbody>
7750 </table>
7751 <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>
7752 <table>
7753 <thead>
7754 <tr>
7755 <th align="center">State</th>
7756 <th align="center">Transition Cause</th>
7757 <th align="center">New State</th>
7758 <th align="center">Notes</th>
7759 </tr>
7760 </thead>
7761 <tbody>
7762 <tr>
7763 <td align="center">INACTIVE</td>
7764 <td align="center">Camera device initiates new scan</td>
7765 <td align="center">PASSIVE_<wbr/>SCAN</td>
7766 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7767 </tr>
7768 <tr>
7769 <td align="center">INACTIVE</td>
7770 <td align="center">AF_<wbr/>TRIGGER</td>
7771 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7772 <td align="center">AF state query,<wbr/> Lens now locked</td>
7773 </tr>
7774 <tr>
7775 <td align="center">PASSIVE_<wbr/>SCAN</td>
7776 <td align="center">Camera device completes current scan</td>
7777 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7778 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7779 </tr>
7780 <tr>
7781 <td align="center">PASSIVE_<wbr/>SCAN</td>
7782 <td align="center">Camera device fails current scan</td>
7783 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7784 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7785 </tr>
7786 <tr>
7787 <td align="center">PASSIVE_<wbr/>SCAN</td>
7788 <td align="center">AF_<wbr/>TRIGGER</td>
7789 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7790 <td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7791 </tr>
7792 <tr>
7793 <td align="center">PASSIVE_<wbr/>SCAN</td>
7794 <td align="center">AF_<wbr/>TRIGGER</td>
7795 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7796 <td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7797 </tr>
7798 <tr>
7799 <td align="center">PASSIVE_<wbr/>SCAN</td>
7800 <td align="center">AF_<wbr/>CANCEL</td>
7801 <td align="center">INACTIVE</td>
7802 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7803 </tr>
7804 <tr>
7805 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7806 <td align="center">Camera device initiates new scan</td>
7807 <td align="center">PASSIVE_<wbr/>SCAN</td>
7808 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7809 </tr>
7810 <tr>
7811 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7812 <td align="center">Camera device initiates new scan</td>
7813 <td align="center">PASSIVE_<wbr/>SCAN</td>
7814 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7815 </tr>
7816 <tr>
7817 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7818 <td align="center">AF_<wbr/>TRIGGER</td>
7819 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7820 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7821 </tr>
7822 <tr>
7823 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7824 <td align="center">AF_<wbr/>TRIGGER</td>
7825 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7826 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7827 </tr>
7828 <tr>
7829 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7830 <td align="center">AF_<wbr/>TRIGGER</td>
7831 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7832 <td align="center">No effect</td>
7833 </tr>
7834 <tr>
7835 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7836 <td align="center">AF_<wbr/>CANCEL</td>
7837 <td align="center">INACTIVE</td>
7838 <td align="center">Restart AF scan</td>
7839 </tr>
7840 <tr>
7841 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7842 <td align="center">AF_<wbr/>TRIGGER</td>
7843 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7844 <td align="center">No effect</td>
7845 </tr>
7846 <tr>
7847 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7848 <td align="center">AF_<wbr/>CANCEL</td>
7849 <td align="center">INACTIVE</td>
7850 <td align="center">Restart AF scan</td>
7851 </tr>
7852 </tbody>
7853 </table>
7854 <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7855 (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7856 camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7857 will be evaluated in the context of the new mode in the request.<wbr/>
7858 See below table for examples:</p>
7859 <table>
7860 <thead>
7861 <tr>
7862 <th align="center">State</th>
7863 <th align="center">Transition Cause</th>
7864 <th align="center">New State</th>
7865 <th align="center">Notes</th>
7866 </tr>
7867 </thead>
7868 <tbody>
7869 <tr>
7870 <td align="center">any state</td>
7871 <td align="center">CAF--&gt;AUTO mode switch</td>
7872 <td align="center">INACTIVE</td>
7873 <td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7874 </tr>
7875 <tr>
7876 <td align="center">any state</td>
7877 <td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
7878 <td align="center">trigger-reachable states from INACTIVE</td>
7879 <td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7880 </tr>
7881 <tr>
7882 <td align="center">any state</td>
7883 <td align="center">AUTO--&gt;CAF mode switch</td>
7884 <td align="center">passively reachable states from INACTIVE</td>
7885 <td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7886 </tr>
7887 </tbody>
7888 </table>
7889             </td>
7890           </tr>
7891
7892
7893           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7894            <!-- end of entry -->
7895         
7896                 
7897           <tr class="entry" id="dynamic_android.control.afTriggerId">
7898             <td class="entry_name
7899                 entry_name_deprecated
7900              " rowspan="3">
7901               android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7902             </td>
7903             <td class="entry_type">
7904                 <span class="entry_type_name">int32</span>
7905
7906               <span class="entry_type_visibility"> [system]</span>
7907
7908
7909
7910               <span class="entry_type_deprecated">[deprecated] </span>
7911
7912
7913
7914             </td> <!-- entry_type -->
7915
7916             <td class="entry_description">
7917               <p>The ID sent with the latest
7918 CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7919             </td>
7920
7921             <td class="entry_units">
7922             </td>
7923
7924             <td class="entry_range">
7925               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7926             </td>
7927
7928             <td class="entry_hal_version">
7929               <p>3.<wbr/>2</p>
7930             </td>
7931
7932             <td class="entry_tags">
7933             </td>
7934
7935           </tr>
7936           <tr class="entries_header">
7937             <th class="th_details" colspan="6">Details</th>
7938           </tr>
7939           <tr class="entry_cont">
7940             <td class="entry_details" colspan="6">
7941               <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7942 received yet by HAL.<wbr/> Always updated even if AF algorithm
7943 ignores the trigger</p>
7944             </td>
7945           </tr>
7946
7947
7948           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7949            <!-- end of entry -->
7950         
7951                 
7952           <tr class="entry" id="dynamic_android.control.awbLock">
7953             <td class="entry_name
7954              " rowspan="3">
7955               android.<wbr/>control.<wbr/>awb<wbr/>Lock
7956             </td>
7957             <td class="entry_type">
7958                 <span class="entry_type_name entry_type_name_enum">byte</span>
7959
7960               <span class="entry_type_visibility"> [public as boolean]</span>
7961
7962
7963               <span class="entry_type_hwlevel">[legacy] </span>
7964
7965
7966
7967                 <ul class="entry_type_enum">
7968                   <li>
7969                     <span class="entry_type_enum_name">OFF (v3.2)</span>
7970                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
7971 algorithm is free to update its parameters if in AUTO
7972 mode.<wbr/></p></span>
7973                   </li>
7974                   <li>
7975                     <span class="entry_type_enum_name">ON (v3.2)</span>
7976                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
7977 algorithm will not update its parameters while the lock
7978 is active.<wbr/></p></span>
7979                   </li>
7980                 </ul>
7981
7982             </td> <!-- entry_type -->
7983
7984             <td class="entry_description">
7985               <p>Whether auto-white balance (AWB) is currently locked to its
7986 latest calculated values.<wbr/></p>
7987             </td>
7988
7989             <td class="entry_units">
7990             </td>
7991
7992             <td class="entry_range">
7993             </td>
7994
7995             <td class="entry_hal_version">
7996               <p>3.<wbr/>2</p>
7997             </td>
7998
7999             <td class="entry_tags">
8000               <ul class="entry_tags">
8001                   <li><a href="#tag_BC">BC</a></li>
8002               </ul>
8003             </td>
8004
8005           </tr>
8006           <tr class="entries_header">
8007             <th class="th_details" colspan="6">Details</th>
8008           </tr>
8009           <tr class="entry_cont">
8010             <td class="entry_details" colspan="6">
8011               <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
8012 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
8013 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
8014 get locked do not necessarily correspond to the settings that were present in the
8015 latest capture result received from the camera device,<wbr/> since additional captures
8016 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
8017 application is switching between automatic and manual control and wishes to eliminate
8018 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
8019 <ol>
8020 <li>Starting in auto-AWB mode:</li>
8021 <li>Lock AWB</li>
8022 <li>Wait for the first result to be output that has the AWB locked</li>
8023 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
8024 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
8025 </ol>
8026 <p>Note that AWB lock is only meaningful when
8027 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
8028 AWB is already fixed to a specific setting.<wbr/></p>
8029 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
8030             </td>
8031           </tr>
8032
8033
8034           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8035            <!-- end of entry -->
8036         
8037                 
8038           <tr class="entry" id="dynamic_android.control.awbMode">
8039             <td class="entry_name
8040              " rowspan="3">
8041               android.<wbr/>control.<wbr/>awb<wbr/>Mode
8042             </td>
8043             <td class="entry_type">
8044                 <span class="entry_type_name entry_type_name_enum">byte</span>
8045
8046               <span class="entry_type_visibility"> [public]</span>
8047
8048
8049               <span class="entry_type_hwlevel">[legacy] </span>
8050
8051
8052
8053                 <ul class="entry_type_enum">
8054                   <li>
8055                     <span class="entry_type_enum_name">OFF (v3.2)</span>
8056                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
8057 <p>The application-selected color transform matrix
8058 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
8059 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
8060 device for manual white balance control.<wbr/></p></span>
8061                   </li>
8062                   <li>
8063                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
8064                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
8065 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8066 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8067 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8068 values used by the camera device for the transform and gains
8069 will be available in the capture result for this request.<wbr/></p></span>
8070                   </li>
8071                   <li>
8072                     <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
8073                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8074 the camera device uses incandescent light as the assumed scene
8075 illumination for white balance.<wbr/></p>
8076 <p>While the exact white balance transforms are up to the
8077 camera device,<wbr/> they will approximately match the CIE
8078 standard illuminant A.<wbr/></p>
8079 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8080 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8081 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8082 values used by the camera device for the transform and gains
8083 will be available in the capture result for this request.<wbr/></p></span>
8084                   </li>
8085                   <li>
8086                     <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
8087                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8088 the camera device uses fluorescent light as the assumed scene
8089 illumination for white balance.<wbr/></p>
8090 <p>While the exact white balance transforms are up to the
8091 camera device,<wbr/> they will approximately match the CIE
8092 standard illuminant F2.<wbr/></p>
8093 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8094 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8095 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8096 values used by the camera device for the transform and gains
8097 will be available in the capture result for this request.<wbr/></p></span>
8098                   </li>
8099                   <li>
8100                     <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
8101                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8102 the camera device uses warm fluorescent light as the assumed scene
8103 illumination for white balance.<wbr/></p>
8104 <p>While the exact white balance transforms are up to the
8105 camera device,<wbr/> they will approximately match the CIE
8106 standard illuminant F4.<wbr/></p>
8107 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8108 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8109 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8110 values used by the camera device for the transform and gains
8111 will be available in the capture result for this request.<wbr/></p></span>
8112                   </li>
8113                   <li>
8114                     <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
8115                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8116 the camera device uses daylight light as the assumed scene
8117 illumination for white balance.<wbr/></p>
8118 <p>While the exact white balance transforms are up to the
8119 camera device,<wbr/> they will approximately match the CIE
8120 standard illuminant D65.<wbr/></p>
8121 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8122 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8123 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8124 values used by the camera device for the transform and gains
8125 will be available in the capture result for this request.<wbr/></p></span>
8126                   </li>
8127                   <li>
8128                     <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
8129                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8130 the camera device uses cloudy daylight light as the assumed scene
8131 illumination for white balance.<wbr/></p>
8132 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8133 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8134 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8135 values used by the camera device for the transform and gains
8136 will be available in the capture result for this request.<wbr/></p></span>
8137                   </li>
8138                   <li>
8139                     <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
8140                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8141 the camera device uses twilight light as the assumed scene
8142 illumination for white balance.<wbr/></p>
8143 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8144 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8145 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8146 values used by the camera device for the transform and gains
8147 will be available in the capture result for this request.<wbr/></p></span>
8148                   </li>
8149                   <li>
8150                     <span class="entry_type_enum_name">SHADE (v3.2)</span>
8151                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8152 the camera device uses shade light as the assumed scene
8153 illumination for white balance.<wbr/></p>
8154 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8155 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8156 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8157 values used by the camera device for the transform and gains
8158 will be available in the capture result for this request.<wbr/></p></span>
8159                   </li>
8160                 </ul>
8161
8162             </td> <!-- entry_type -->
8163
8164             <td class="entry_description">
8165               <p>Whether auto-white balance (AWB) is currently setting the color
8166 transform fields,<wbr/> and what its illumination target
8167 is.<wbr/></p>
8168             </td>
8169
8170             <td class="entry_units">
8171             </td>
8172
8173             <td class="entry_range">
8174               <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
8175             </td>
8176
8177             <td class="entry_hal_version">
8178               <p>3.<wbr/>2</p>
8179             </td>
8180
8181             <td class="entry_tags">
8182               <ul class="entry_tags">
8183                   <li><a href="#tag_BC">BC</a></li>
8184               </ul>
8185             </td>
8186
8187           </tr>
8188           <tr class="entries_header">
8189             <th class="th_details" colspan="6">Details</th>
8190           </tr>
8191           <tr class="entry_cont">
8192             <td class="entry_details" colspan="6">
8193               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
8194 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
8195 routine is enabled,<wbr/> overriding the application's selected
8196 <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
8197 <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>
8198 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
8199 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
8200 setting AE mode to OFF.<wbr/></p>
8201 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
8202 routine is disabled.<wbr/> The application manually controls the white
8203 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>
8204 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
8205 <p>When set to any other modes,<wbr/> the camera device's auto-white
8206 balance routine is disabled.<wbr/> The camera device uses each
8207 particular illumination target for white balance
8208 adjustment.<wbr/> The application's values for
8209 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
8210 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
8211 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
8212             </td>
8213           </tr>
8214
8215
8216           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8217            <!-- end of entry -->
8218         
8219                 
8220           <tr class="entry" id="dynamic_android.control.awbRegions">
8221             <td class="entry_name
8222              " rowspan="5">
8223               android.<wbr/>control.<wbr/>awb<wbr/>Regions
8224             </td>
8225             <td class="entry_type">
8226                 <span class="entry_type_name">int32</span>
8227                 <span class="entry_type_container">x</span>
8228
8229                 <span class="entry_type_array">
8230                   5 x area_count
8231                 </span>
8232               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
8233
8234
8235
8236
8237
8238
8239             </td> <!-- entry_type -->
8240
8241             <td class="entry_description">
8242               <p>List of metering areas to use for auto-white-balance illuminant
8243 estimation.<wbr/></p>
8244             </td>
8245
8246             <td class="entry_units">
8247               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
8248             </td>
8249
8250             <td class="entry_range">
8251               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
8252 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
8253             </td>
8254
8255             <td class="entry_hal_version">
8256               <p>3.<wbr/>2</p>
8257             </td>
8258
8259             <td class="entry_tags">
8260               <ul class="entry_tags">
8261                   <li><a href="#tag_BC">BC</a></li>
8262               </ul>
8263             </td>
8264
8265           </tr>
8266           <tr class="entries_header">
8267             <th class="th_details" colspan="6">Details</th>
8268           </tr>
8269           <tr class="entry_cont">
8270             <td class="entry_details" colspan="6">
8271               <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
8272 Otherwise will always be present.<wbr/></p>
8273 <p>The maximum number of regions supported by the device is determined by the value
8274 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
8275 <p>The coordinate system is based on the active pixel array,<wbr/>
8276 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
8277 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
8278 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
8279 bottom-right pixel in the active pixel array.<wbr/></p>
8280 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
8281 for every pixel in the area.<wbr/> This means that a large metering area
8282 with the same weight as a smaller area will have more effect in
8283 the metering result.<wbr/> Metering areas can partially overlap and the
8284 camera device will add the weights in the overlap region.<wbr/></p>
8285 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
8286 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
8287 0 weight is ignored.<wbr/></p>
8288 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
8289 camera device.<wbr/></p>
8290 <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
8291 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
8292 region and output only the intersection rectangle as the metering region in the result
8293 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
8294 not reported in the result metadata.<wbr/></p>
8295             </td>
8296           </tr>
8297
8298           <tr class="entries_header">
8299             <th class="th_details" colspan="6">HAL Implementation Details</th>
8300           </tr>
8301           <tr class="entry_cont">
8302             <td class="entry_details" colspan="6">
8303               <p>The HAL level representation of MeteringRectangle[] is a
8304 int[5 * area_<wbr/>count].<wbr/>
8305 Every five elements represent a metering region of
8306 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
8307 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
8308 exclusive on xmax and ymax.<wbr/></p>
8309             </td>
8310           </tr>
8311
8312           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8313            <!-- end of entry -->
8314         
8315                 
8316           <tr class="entry" id="dynamic_android.control.captureIntent">
8317             <td class="entry_name
8318              " rowspan="3">
8319               android.<wbr/>control.<wbr/>capture<wbr/>Intent
8320             </td>
8321             <td class="entry_type">
8322                 <span class="entry_type_name entry_type_name_enum">byte</span>
8323
8324               <span class="entry_type_visibility"> [public]</span>
8325
8326
8327               <span class="entry_type_hwlevel">[legacy] </span>
8328
8329
8330
8331                 <ul class="entry_type_enum">
8332                   <li>
8333                     <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
8334                     <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
8335 categories.<wbr/> The camera device will default to preview-like
8336 behavior.<wbr/></p></span>
8337                   </li>
8338                   <li>
8339                     <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
8340                     <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
8341 <p>The precapture trigger may be used to start off a metering
8342 w/<wbr/>flash sequence.<wbr/></p></span>
8343                   </li>
8344                   <li>
8345                     <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
8346                     <span class="entry_type_enum_notes"><p>This request is for a still capture-type
8347 use case.<wbr/></p>
8348 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
8349                   </li>
8350                   <li>
8351                     <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
8352                     <span class="entry_type_enum_notes"><p>This request is for a video recording
8353 use case.<wbr/></p></span>
8354                   </li>
8355                   <li>
8356                     <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
8357                     <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
8358 image while recording video) use case.<wbr/></p>
8359 <p>The camera device should take the highest-quality image
8360 possible (given the other settings) without disrupting the
8361 frame rate of video recording.<wbr/>  </p></span>
8362                   </li>
8363                   <li>
8364                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
8365                     <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
8366 application will stream full-resolution images and
8367 reprocess one or several later for a final
8368 capture.<wbr/></p></span>
8369                   </li>
8370                   <li>
8371                     <span class="entry_type_enum_name">MANUAL (v3.2)</span>
8372                     <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
8373 the applications want to directly control the capture parameters.<wbr/></p>
8374 <p>For example,<wbr/> the application may wish to manually control
8375 <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>
8376                   </li>
8377                   <li>
8378                     <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
8379                     <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
8380 the application will use camera and inertial sensor data to
8381 locate and track objects in the world.<wbr/></p>
8382 <p>The camera device auto-exposure routine will limit the exposure time
8383 of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
8384                   </li>
8385                 </ul>
8386
8387             </td> <!-- entry_type -->
8388
8389             <td class="entry_description">
8390               <p>Information to the camera device 3A (auto-exposure,<wbr/>
8391 auto-focus,<wbr/> auto-white balance) routines about the purpose
8392 of this capture,<wbr/> to help the camera device to decide optimal 3A
8393 strategy.<wbr/></p>
8394             </td>
8395
8396             <td class="entry_units">
8397             </td>
8398
8399             <td class="entry_range">
8400             </td>
8401
8402             <td class="entry_hal_version">
8403               <p>3.<wbr/>2</p>
8404             </td>
8405
8406             <td class="entry_tags">
8407               <ul class="entry_tags">
8408                   <li><a href="#tag_BC">BC</a></li>
8409               </ul>
8410             </td>
8411
8412           </tr>
8413           <tr class="entries_header">
8414             <th class="th_details" colspan="6">Details</th>
8415           </tr>
8416           <tr class="entry_cont">
8417             <td class="entry_details" colspan="6">
8418               <p>This control (except for MANUAL) is only effective if
8419 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
8420 <p>All intents are supported by all devices,<wbr/> except that:
8421   * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8422 PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
8423   * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8424 MANUAL_<wbr/>SENSOR.<wbr/>
8425   * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8426 MOTION_<wbr/>TRACKING.<wbr/></p>
8427             </td>
8428           </tr>
8429
8430
8431           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8432            <!-- end of entry -->
8433         
8434                 
8435           <tr class="entry" id="dynamic_android.control.awbState">
8436             <td class="entry_name
8437              " rowspan="3">
8438               android.<wbr/>control.<wbr/>awb<wbr/>State
8439             </td>
8440             <td class="entry_type">
8441                 <span class="entry_type_name entry_type_name_enum">byte</span>
8442
8443               <span class="entry_type_visibility"> [public]</span>
8444
8445
8446               <span class="entry_type_hwlevel">[limited] </span>
8447
8448
8449
8450                 <ul class="entry_type_enum">
8451                   <li>
8452                     <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
8453                     <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
8454 <p>When a camera device is opened,<wbr/> it starts in this
8455 state.<wbr/> This is a transient state,<wbr/> the camera device may
8456 skip reporting this state in capture
8457 result.<wbr/></p></span>
8458                   </li>
8459                   <li>
8460                     <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
8461                     <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
8462 values for the current scene.<wbr/></p>
8463 <p>This is a transient state,<wbr/> the camera device
8464 may skip reporting this state in capture result.<wbr/></p></span>
8465                   </li>
8466                   <li>
8467                     <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
8468                     <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
8469 current scene.<wbr/></p></span>
8470                   </li>
8471                   <li>
8472                     <span class="entry_type_enum_name">LOCKED (v3.2)</span>
8473                     <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
8474                   </li>
8475                 </ul>
8476
8477             </td> <!-- entry_type -->
8478
8479             <td class="entry_description">
8480               <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
8481             </td>
8482
8483             <td class="entry_units">
8484             </td>
8485
8486             <td class="entry_range">
8487             </td>
8488
8489             <td class="entry_hal_version">
8490               <p>3.<wbr/>2</p>
8491             </td>
8492
8493             <td class="entry_tags">
8494             </td>
8495
8496           </tr>
8497           <tr class="entries_header">
8498             <th class="th_details" colspan="6">Details</th>
8499           </tr>
8500           <tr class="entry_cont">
8501             <td class="entry_details" colspan="6">
8502               <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
8503 resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8504 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
8505 the algorithm states to INACTIVE.<wbr/></p>
8506 <p>The camera device can do several state transitions between two results,<wbr/> if it is
8507 allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
8508 a result.<wbr/></p>
8509 <p>The state in the result is the state for this image (in sync with this image): if
8510 AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
8511 be good to use.<wbr/></p>
8512 <p>Below are state transition tables for different AWB modes.<wbr/></p>
8513 <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</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"></td>
8527 <td align="center">INACTIVE</td>
8528 <td align="center">Camera device auto white balance algorithm is disabled</td>
8529 </tr>
8530 </tbody>
8531 </table>
8532 <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
8533 <table>
8534 <thead>
8535 <tr>
8536 <th align="center">State</th>
8537 <th align="center">Transition Cause</th>
8538 <th align="center">New State</th>
8539 <th align="center">Notes</th>
8540 </tr>
8541 </thead>
8542 <tbody>
8543 <tr>
8544 <td align="center">INACTIVE</td>
8545 <td align="center">Camera device initiates AWB scan</td>
8546 <td align="center">SEARCHING</td>
8547 <td align="center">Values changing</td>
8548 </tr>
8549 <tr>
8550 <td align="center">INACTIVE</td>
8551 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8552 <td align="center">LOCKED</td>
8553 <td align="center">Values locked</td>
8554 </tr>
8555 <tr>
8556 <td align="center">SEARCHING</td>
8557 <td align="center">Camera device finishes AWB scan</td>
8558 <td align="center">CONVERGED</td>
8559 <td align="center">Good values,<wbr/> not changing</td>
8560 </tr>
8561 <tr>
8562 <td align="center">SEARCHING</td>
8563 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8564 <td align="center">LOCKED</td>
8565 <td align="center">Values locked</td>
8566 </tr>
8567 <tr>
8568 <td align="center">CONVERGED</td>
8569 <td align="center">Camera device initiates AWB scan</td>
8570 <td align="center">SEARCHING</td>
8571 <td align="center">Values changing</td>
8572 </tr>
8573 <tr>
8574 <td align="center">CONVERGED</td>
8575 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8576 <td align="center">LOCKED</td>
8577 <td align="center">Values locked</td>
8578 </tr>
8579 <tr>
8580 <td align="center">LOCKED</td>
8581 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8582 <td align="center">SEARCHING</td>
8583 <td align="center">Values not good after unlock</td>
8584 </tr>
8585 </tbody>
8586 </table>
8587 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8588 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8589 can be skipped in that manner is called a transient state.<wbr/></p>
8590 <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
8591 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
8592 transient states between two results.<wbr/> See below table for examples:</p>
8593 <table>
8594 <thead>
8595 <tr>
8596 <th align="center">State</th>
8597 <th align="center">Transition Cause</th>
8598 <th align="center">New State</th>
8599 <th align="center">Notes</th>
8600 </tr>
8601 </thead>
8602 <tbody>
8603 <tr>
8604 <td align="center">INACTIVE</td>
8605 <td align="center">Camera device finished AWB scan</td>
8606 <td align="center">CONVERGED</td>
8607 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
8608 </tr>
8609 <tr>
8610 <td align="center">LOCKED</td>
8611 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8612 <td align="center">CONVERGED</td>
8613 <td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
8614 </tr>
8615 </tbody>
8616 </table>
8617             </td>
8618           </tr>
8619
8620
8621           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8622            <!-- end of entry -->
8623         
8624                 
8625           <tr class="entry" id="dynamic_android.control.effectMode">
8626             <td class="entry_name
8627              " rowspan="3">
8628               android.<wbr/>control.<wbr/>effect<wbr/>Mode
8629             </td>
8630             <td class="entry_type">
8631                 <span class="entry_type_name entry_type_name_enum">byte</span>
8632
8633               <span class="entry_type_visibility"> [public]</span>
8634
8635
8636               <span class="entry_type_hwlevel">[legacy] </span>
8637
8638
8639
8640                 <ul class="entry_type_enum">
8641                   <li>
8642                     <span class="entry_type_enum_name">OFF (v3.2)</span>
8643                     <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8644                   </li>
8645                   <li>
8646                     <span class="entry_type_enum_name">MONO (v3.2)</span>
8647                     <span class="entry_type_enum_optional">[optional]</span>
8648                     <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8649 a single color.<wbr/></p>
8650 <p>This will typically be grayscale.<wbr/></p></span>
8651                   </li>
8652                   <li>
8653                     <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
8654                     <span class="entry_type_enum_optional">[optional]</span>
8655                     <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8656 are inverted.<wbr/></p></span>
8657                   </li>
8658                   <li>
8659                     <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
8660                     <span class="entry_type_enum_optional">[optional]</span>
8661                     <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8662 image is wholly or partially reversed in
8663 tone.<wbr/></p></span>
8664                   </li>
8665                   <li>
8666                     <span class="entry_type_enum_name">SEPIA (v3.2)</span>
8667                     <span class="entry_type_enum_optional">[optional]</span>
8668                     <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8669 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8670                   </li>
8671                   <li>
8672                     <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
8673                     <span class="entry_type_enum_optional">[optional]</span>
8674                     <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8675 discrete regions of tone rather than a continuous
8676 gradient of tones.<wbr/></p></span>
8677                   </li>
8678                   <li>
8679                     <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
8680                     <span class="entry_type_enum_optional">[optional]</span>
8681                     <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8682 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8683                   </li>
8684                   <li>
8685                     <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
8686                     <span class="entry_type_enum_optional">[optional]</span>
8687                     <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8688 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8689                   </li>
8690                   <li>
8691                     <span class="entry_type_enum_name">AQUA (v3.2)</span>
8692                     <span class="entry_type_enum_optional">[optional]</span>
8693                     <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8694                   </li>
8695                 </ul>
8696
8697             </td> <!-- entry_type -->
8698
8699             <td class="entry_description">
8700               <p>A special color effect to apply.<wbr/></p>
8701             </td>
8702
8703             <td class="entry_units">
8704             </td>
8705
8706             <td class="entry_range">
8707               <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8708             </td>
8709
8710             <td class="entry_hal_version">
8711               <p>3.<wbr/>2</p>
8712             </td>
8713
8714             <td class="entry_tags">
8715               <ul class="entry_tags">
8716                   <li><a href="#tag_BC">BC</a></li>
8717               </ul>
8718             </td>
8719
8720           </tr>
8721           <tr class="entries_header">
8722             <th class="th_details" colspan="6">Details</th>
8723           </tr>
8724           <tr class="entry_cont">
8725             <td class="entry_details" colspan="6">
8726               <p>When this mode is set,<wbr/> a color effect will be applied
8727 to images produced by the camera device.<wbr/> The interpretation
8728 and implementation of these color effects is left to the
8729 implementor of the camera device,<wbr/> and should not be
8730 depended on to be consistent (or present) across all
8731 devices.<wbr/></p>
8732             </td>
8733           </tr>
8734
8735
8736           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8737            <!-- end of entry -->
8738         
8739                 
8740           <tr class="entry" id="dynamic_android.control.mode">
8741             <td class="entry_name
8742              " rowspan="3">
8743               android.<wbr/>control.<wbr/>mode
8744             </td>
8745             <td class="entry_type">
8746                 <span class="entry_type_name entry_type_name_enum">byte</span>
8747
8748               <span class="entry_type_visibility"> [public]</span>
8749
8750
8751               <span class="entry_type_hwlevel">[legacy] </span>
8752
8753
8754
8755                 <ul class="entry_type_enum">
8756                   <li>
8757                     <span class="entry_type_enum_name">OFF (v3.2)</span>
8758                     <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8759 <p>All control by the device's metering and focusing (3A)
8760 routines is disabled,<wbr/> and no other settings in
8761 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8762 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8763 device to select post-processing values for processing
8764 blocks that do not allow for manual control,<wbr/> or are not
8765 exposed by the camera API.<wbr/></p>
8766 <p>However,<wbr/> the camera device's 3A routines may continue to
8767 collect statistics and update their internal state so that
8768 when control is switched to AUTO mode,<wbr/> good control values
8769 can be immediately applied.<wbr/></p></span>
8770                   </li>
8771                   <li>
8772                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
8773                     <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8774 <p>Manual control of capture parameters is disabled.<wbr/> All
8775 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8776 effect.<wbr/></p></span>
8777                   </li>
8778                   <li>
8779                     <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
8780                     <span class="entry_type_enum_optional">[optional]</span>
8781                     <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8782 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8783 control.<wbr/>afMode controls; the camera device will ignore
8784 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8785 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8786 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8787 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8788 contain some modes other than DISABLED).<wbr/></p></span>
8789                   </li>
8790                   <li>
8791                     <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
8792                     <span class="entry_type_enum_optional">[optional]</span>
8793                     <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8794 used by camera device background auto-exposure,<wbr/> auto-white balance and
8795 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8796 <p>Specifically,<wbr/> the 3A routines are locked to the last
8797 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8798 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8799 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8800 discarded by the camera device.<wbr/></p></span>
8801                   </li>
8802                 </ul>
8803
8804             </td> <!-- entry_type -->
8805
8806             <td class="entry_description">
8807               <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8808 routines.<wbr/></p>
8809             </td>
8810
8811             <td class="entry_units">
8812             </td>
8813
8814             <td class="entry_range">
8815               <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8816             </td>
8817
8818             <td class="entry_hal_version">
8819               <p>3.<wbr/>2</p>
8820             </td>
8821
8822             <td class="entry_tags">
8823               <ul class="entry_tags">
8824                   <li><a href="#tag_BC">BC</a></li>
8825               </ul>
8826             </td>
8827
8828           </tr>
8829           <tr class="entries_header">
8830             <th class="th_details" colspan="6">Details</th>
8831           </tr>
8832           <tr class="entry_cont">
8833             <td class="entry_details" colspan="6">
8834               <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8835 by the camera device is disabled.<wbr/> The application must set the fields for
8836 capture parameters itself.<wbr/></p>
8837 <p>When set to AUTO,<wbr/> the individual algorithm controls in
8838 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>
8839 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8840 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
8841 implements one of the scene mode settings (such as ACTION,<wbr/>
8842 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
8843 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8844 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8845 is that this frame will not be used by camera device background 3A statistics
8846 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8847 where the application doesn't want a 3A manual control capture to affect
8848 the subsequent auto 3A capture results.<wbr/></p>
8849             </td>
8850           </tr>
8851
8852
8853           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8854            <!-- end of entry -->
8855         
8856                 
8857           <tr class="entry" id="dynamic_android.control.sceneMode">
8858             <td class="entry_name
8859              " rowspan="5">
8860               android.<wbr/>control.<wbr/>scene<wbr/>Mode
8861             </td>
8862             <td class="entry_type">
8863                 <span class="entry_type_name entry_type_name_enum">byte</span>
8864
8865               <span class="entry_type_visibility"> [public]</span>
8866
8867
8868               <span class="entry_type_hwlevel">[legacy] </span>
8869
8870
8871
8872                 <ul class="entry_type_enum">
8873                   <li>
8874                     <span class="entry_type_enum_name">DISABLED (v3.2)</span>
8875                     <span class="entry_type_enum_value">0</span>
8876                     <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8877                   </li>
8878                   <li>
8879                     <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
8880                     <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8881 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8882 auto-exposure routines.<wbr/></p>
8883 <p>If face detection statistics are disabled
8884 (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/>
8885 this should still operate correctly (but will not return
8886 face detection statistics to the framework).<wbr/></p>
8887 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8888 <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>
8889 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8890                   </li>
8891                   <li>
8892                     <span class="entry_type_enum_name">ACTION (v3.2)</span>
8893                     <span class="entry_type_enum_optional">[optional]</span>
8894                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8895 <p>Similar to SPORTS.<wbr/></p></span>
8896                   </li>
8897                   <li>
8898                     <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
8899                     <span class="entry_type_enum_optional">[optional]</span>
8900                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8901                   </li>
8902                   <li>
8903                     <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
8904                     <span class="entry_type_enum_optional">[optional]</span>
8905                     <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8906                   </li>
8907                   <li>
8908                     <span class="entry_type_enum_name">NIGHT (v3.2)</span>
8909                     <span class="entry_type_enum_optional">[optional]</span>
8910                     <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8911                   </li>
8912                   <li>
8913                     <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
8914                     <span class="entry_type_enum_optional">[optional]</span>
8915                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8916 settings.<wbr/></p></span>
8917                   </li>
8918                   <li>
8919                     <span class="entry_type_enum_name">THEATRE (v3.2)</span>
8920                     <span class="entry_type_enum_optional">[optional]</span>
8921                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8922 remain off.<wbr/></p></span>
8923                   </li>
8924                   <li>
8925                     <span class="entry_type_enum_name">BEACH (v3.2)</span>
8926                     <span class="entry_type_enum_optional">[optional]</span>
8927                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8928                   </li>
8929                   <li>
8930                     <span class="entry_type_enum_name">SNOW (v3.2)</span>
8931                     <span class="entry_type_enum_optional">[optional]</span>
8932                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8933                   </li>
8934                   <li>
8935                     <span class="entry_type_enum_name">SUNSET (v3.2)</span>
8936                     <span class="entry_type_enum_optional">[optional]</span>
8937                     <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8938                   </li>
8939                   <li>
8940                     <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
8941                     <span class="entry_type_enum_optional">[optional]</span>
8942                     <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8943 device motion (for example: due to hand shake).<wbr/></p></span>
8944                   </li>
8945                   <li>
8946                     <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
8947                     <span class="entry_type_enum_optional">[optional]</span>
8948                     <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8949                   </li>
8950                   <li>
8951                     <span class="entry_type_enum_name">SPORTS (v3.2)</span>
8952                     <span class="entry_type_enum_optional">[optional]</span>
8953                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8954 <p>Similar to ACTION.<wbr/></p></span>
8955                   </li>
8956                   <li>
8957                     <span class="entry_type_enum_name">PARTY (v3.2)</span>
8958                     <span class="entry_type_enum_optional">[optional]</span>
8959                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8960 people.<wbr/></p></span>
8961                   </li>
8962                   <li>
8963                     <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
8964                     <span class="entry_type_enum_optional">[optional]</span>
8965                     <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
8966 is a flame.<wbr/></p></span>
8967                   </li>
8968                   <li>
8969                     <span class="entry_type_enum_name">BARCODE (v3.2)</span>
8970                     <span class="entry_type_enum_optional">[optional]</span>
8971                     <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
8972 for use by camera applications that wish to read the
8973 barcode value.<wbr/></p></span>
8974                   </li>
8975                   <li>
8976                     <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
8977                     <span class="entry_type_enum_deprecated">[deprecated]</span>
8978                     <span class="entry_type_enum_optional">[optional]</span>
8979                     <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>
8980 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
8981 for high speed video recording.<wbr/></p>
8982 <p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
8983 <p>The supported high speed video sizes and fps ranges are specified in
8984 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
8985 output frame rates,<wbr/> the application is only allowed to select video size
8986 and fps range combinations listed in this static metadata.<wbr/> The fps range
8987 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
8988 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
8989 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
8990 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
8991 and post-processing parameters is possible.<wbr/> All other controls operate the
8992 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
8993 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
8994 <ul>
8995 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
8996 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
8997 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
8998 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
8999 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
9000 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
9001 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
9002 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
9003 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
9004 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
9005 </ul>
9006 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
9007 <ul>
9008 <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>
9009 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
9010 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
9011 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
9012 </ul>
9013 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
9014 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
9015 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
9016 the application need check if the video encoder is capable of supporting the
9017 high frame rate for a given video size,<wbr/> or it will end up with lower recording
9018 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
9019 rate will be bounded by the screen refresh rate.<wbr/></p>
9020 <p>The camera device will only support up to 2 output high speed streams
9021 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
9022 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
9023 <ul>
9024 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
9025 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
9026 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>
9027 <li>The stream sizes are selected from the sizes reported by
9028 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
9029 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
9030 </ul>
9031 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
9032 <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/>
9033 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
9034 and the returned capture result metadata will give the fps range choosen
9035 by the camera device.<wbr/></p>
9036 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
9037 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
9038 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
9039                   </li>
9040                   <li>
9041                     <span class="entry_type_enum_name">HDR (v3.2)</span>
9042                     <span class="entry_type_enum_optional">[optional]</span>
9043                     <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
9044 <p>In this scene mode,<wbr/> the camera device captures images
9045 that keep a larger range of scene illumination levels
9046 visible in the final image.<wbr/> For example,<wbr/> when taking a
9047 picture of a object in front of a bright window,<wbr/> both
9048 the object and the scene through the window may be
9049 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
9050 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
9051 HDR mode generally takes much longer to capture a single
9052 image,<wbr/> has no user control,<wbr/> and may have other artifacts
9053 depending on the HDR method used.<wbr/></p>
9054 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
9055 than regular captures.<wbr/></p>
9056 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
9057 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
9058 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
9059 using a high dynamic range capture technique.<wbr/>  On LEGACY
9060 devices,<wbr/> captures that target a JPEG-format output will
9061 be captured with HDR,<wbr/> and the capture intent is not
9062 relevant.<wbr/></p>
9063 <p>The HDR capture may involve the device capturing a burst
9064 of images internally and combining them into one,<wbr/> or it
9065 may involve the device using specialized high dynamic
9066 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
9067 produced in response to a capture request submitted
9068 while in HDR mode.<wbr/></p>
9069 <p>Since substantial post-processing is generally needed to
9070 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
9071 outputs are supported for LIMITED/<wbr/>FULL device HDR
9072 captures,<wbr/> and only JPEG outputs are supported for LEGACY
9073 HDR captures.<wbr/> Using a RAW output for HDR capture is not
9074 supported.<wbr/></p>
9075 <p>Some devices may also support always-on HDR,<wbr/> which
9076 applies HDR processing at full frame rate.<wbr/>  For these
9077 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
9078 produce an HDR output with no frame rate impact compared
9079 to normal operation,<wbr/> though the quality may be lower
9080 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
9081 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
9082 or capture intents,<wbr/> the images captured will be as if
9083 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
9084                   </li>
9085                   <li>
9086                     <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
9087                     <span class="entry_type_enum_optional">[optional]</span>
9088                     <span class="entry_type_enum_hidden">[hidden]</span>
9089                     <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
9090 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
9091 under low light conditions.<wbr/></p>
9092 <p>The camera device may be tuned to expose the images in a reduced
9093 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
9094 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/>
9095 the camera device auto-exposure routine tuning process may limit the actual
9096 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
9097 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
9098 low light may be under-exposed when the sensor max exposure time (bounded by the
9099 <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
9100 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
9101 camera device auto-exposure routine to increase the sensitivity up to the max
9102 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
9103 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
9104 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
9105 recommended that the application only use this scene mode when it is capable of
9106 reducing the noise level of the captured images.<wbr/></p>
9107 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9108 <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>
9109 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
9110                   </li>
9111                   <li>
9112                     <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
9113                     <span class="entry_type_enum_optional">[optional]</span>
9114                     <span class="entry_type_enum_hidden">[hidden]</span>
9115                     <span class="entry_type_enum_value">100</span>
9116                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9117 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9118 customized scene modes.<wbr/></p></span>
9119                   </li>
9120                   <li>
9121                     <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
9122                     <span class="entry_type_enum_optional">[optional]</span>
9123                     <span class="entry_type_enum_hidden">[hidden]</span>
9124                     <span class="entry_type_enum_value">127</span>
9125                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9126 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9127 customized scene modes.<wbr/></p></span>
9128                   </li>
9129                 </ul>
9130
9131             </td> <!-- entry_type -->
9132
9133             <td class="entry_description">
9134               <p>Control for which scene mode is currently active.<wbr/></p>
9135             </td>
9136
9137             <td class="entry_units">
9138             </td>
9139
9140             <td class="entry_range">
9141               <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
9142             </td>
9143
9144             <td class="entry_hal_version">
9145               <p>3.<wbr/>2</p>
9146             </td>
9147
9148             <td class="entry_tags">
9149               <ul class="entry_tags">
9150                   <li><a href="#tag_BC">BC</a></li>
9151               </ul>
9152             </td>
9153
9154           </tr>
9155           <tr class="entries_header">
9156             <th class="th_details" colspan="6">Details</th>
9157           </tr>
9158           <tr class="entry_cont">
9159             <td class="entry_details" colspan="6">
9160               <p>Scene modes are custom camera modes optimized for a certain set of conditions and
9161 capture settings.<wbr/></p>
9162 <p>This is the mode that that is active when
9163 <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
9164 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>
9165 while in use.<wbr/></p>
9166 <p>The interpretation and implementation of these scene modes is left
9167 to the implementor of the camera device.<wbr/> Their behavior will not be
9168 consistent across all devices,<wbr/> and any given device may only implement
9169 a subset of these modes.<wbr/></p>
9170             </td>
9171           </tr>
9172
9173           <tr class="entries_header">
9174             <th class="th_details" colspan="6">HAL Implementation Details</th>
9175           </tr>
9176           <tr class="entry_cont">
9177             <td class="entry_details" colspan="6">
9178               <p>HAL implementations that include scene modes are expected to provide
9179 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9180 <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
9181 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
9182 <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
9183 HAL must list supported video size and fps range in
9184 <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/>
9185 if the HAL has two different sensor configurations for normal streaming mode and high
9186 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
9187 HAL may have to switch between different sensor modes.<wbr/>  This mode is deprecated in legacy
9188 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
9189 <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
9190 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
9191             </td>
9192           </tr>
9193
9194           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9195            <!-- end of entry -->
9196         
9197                 
9198           <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
9199             <td class="entry_name
9200              " rowspan="3">
9201               android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
9202             </td>
9203             <td class="entry_type">
9204                 <span class="entry_type_name entry_type_name_enum">byte</span>
9205
9206               <span class="entry_type_visibility"> [public]</span>
9207
9208
9209               <span class="entry_type_hwlevel">[legacy] </span>
9210
9211
9212
9213                 <ul class="entry_type_enum">
9214                   <li>
9215                     <span class="entry_type_enum_name">OFF (v3.2)</span>
9216                     <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
9217                   </li>
9218                   <li>
9219                     <span class="entry_type_enum_name">ON (v3.2)</span>
9220                     <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
9221                   </li>
9222                 </ul>
9223
9224             </td> <!-- entry_type -->
9225
9226             <td class="entry_description">
9227               <p>Whether video stabilization is
9228 active.<wbr/></p>
9229             </td>
9230
9231             <td class="entry_units">
9232             </td>
9233
9234             <td class="entry_range">
9235             </td>
9236
9237             <td class="entry_hal_version">
9238               <p>3.<wbr/>2</p>
9239             </td>
9240
9241             <td class="entry_tags">
9242               <ul class="entry_tags">
9243                   <li><a href="#tag_BC">BC</a></li>
9244               </ul>
9245             </td>
9246
9247           </tr>
9248           <tr class="entries_header">
9249             <th class="th_details" colspan="6">Details</th>
9250           </tr>
9251           <tr class="entry_cont">
9252             <td class="entry_details" colspan="6">
9253               <p>Video stabilization automatically warps images from
9254 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
9255 <p>If enabled,<wbr/> video stabilization can modify the
9256 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
9257 <p>Switching between different video stabilization modes may take several
9258 frames to initialize,<wbr/> the camera device will report the current mode
9259 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
9260 the video stabilization modes in the first several capture results may
9261 still be "OFF",<wbr/> and it will become "ON" when the initialization is
9262 done.<wbr/></p>
9263 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
9264 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
9265 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
9266 the recording resolution is less than or equal to 1920 x 1080 (width less than
9267 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
9268 frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
9269 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
9270 OFF if the recording output is not stabilized,<wbr/> or if there are no output
9271 Surface types that can be stabilized.<wbr/></p>
9272 <p>If a camera device supports both this mode and OIS
9273 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
9274 produce undesirable interaction,<wbr/> so it is recommended not to enable
9275 both at the same time.<wbr/></p>
9276             </td>
9277           </tr>
9278
9279
9280           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9281            <!-- end of entry -->
9282         
9283                 
9284           <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
9285             <td class="entry_name
9286              " rowspan="3">
9287               android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
9288             </td>
9289             <td class="entry_type">
9290                 <span class="entry_type_name">int32</span>
9291
9292               <span class="entry_type_visibility"> [public]</span>
9293
9294
9295
9296
9297
9298
9299             </td> <!-- entry_type -->
9300
9301             <td class="entry_description">
9302               <p>The amount of additional sensitivity boost applied to output images
9303 after RAW sensor data is captured.<wbr/></p>
9304             </td>
9305
9306             <td class="entry_units">
9307               ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
9308             </td>
9309
9310             <td class="entry_range">
9311               <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
9312             </td>
9313
9314             <td class="entry_hal_version">
9315               <p>3.<wbr/>2</p>
9316             </td>
9317
9318             <td class="entry_tags">
9319             </td>
9320
9321           </tr>
9322           <tr class="entries_header">
9323             <th class="th_details" colspan="6">Details</th>
9324           </tr>
9325           <tr class="entry_cont">
9326             <td class="entry_details" colspan="6">
9327               <p>Some camera devices support additional digital sensitivity boosting in the
9328 camera processing pipeline after sensor RAW image is captured.<wbr/>
9329 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
9330 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
9331 <p>This key will be <code>null</code> for devices that do not support any RAW format
9332 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
9333 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
9334 list <code>100</code> in this key.<wbr/></p>
9335 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
9336 boost to the nearest supported value.<wbr/>
9337 The final boost value used will be available in the output capture result.<wbr/></p>
9338 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
9339 of such device will have the total sensitivity of
9340 <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>
9341 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
9342 <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
9343 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
9344             </td>
9345           </tr>
9346
9347
9348           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9349            <!-- end of entry -->
9350         
9351                 
9352           <tr class="entry" id="dynamic_android.control.enableZsl">
9353             <td class="entry_name
9354              " rowspan="5">
9355               android.<wbr/>control.<wbr/>enable<wbr/>Zsl
9356             </td>
9357             <td class="entry_type">
9358                 <span class="entry_type_name entry_type_name_enum">byte</span>
9359
9360               <span class="entry_type_visibility"> [public as boolean]</span>
9361
9362
9363
9364
9365
9366                 <ul class="entry_type_enum">
9367                   <li>
9368                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
9369                     <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
9370 after previous requests.<wbr/></p></span>
9371                   </li>
9372                   <li>
9373                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
9374                     <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
9375 captured before previous requests.<wbr/></p></span>
9376                   </li>
9377                 </ul>
9378
9379             </td> <!-- entry_type -->
9380
9381             <td class="entry_description">
9382               <p>Allow camera device to enable zero-shutter-lag mode for requests with
9383 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
9384             </td>
9385
9386             <td class="entry_units">
9387             </td>
9388
9389             <td class="entry_range">
9390             </td>
9391
9392             <td class="entry_hal_version">
9393               <p>3.<wbr/>2</p>
9394             </td>
9395
9396             <td class="entry_tags">
9397             </td>
9398
9399           </tr>
9400           <tr class="entries_header">
9401             <th class="th_details" colspan="6">Details</th>
9402           </tr>
9403           <tr class="entry_cont">
9404             <td class="entry_details" colspan="6">
9405               <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
9406 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
9407 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
9408 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
9409 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
9410 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
9411 capture intents.<wbr/></p>
9412 <p>For example,<wbr/> when requests are submitted in the following order:
9413   Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
9414   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>
9415 <p>The output images for request B may have contents captured before the output images for
9416 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
9417 request A.<wbr/></p>
9418 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
9419 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
9420 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
9421 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
9422 <code>false</code> if present.<wbr/></p>
9423 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
9424 capture templates is always <code>false</code> if present.<wbr/></p>
9425 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
9426             </td>
9427           </tr>
9428
9429           <tr class="entries_header">
9430             <th class="th_details" colspan="6">HAL Implementation Details</th>
9431           </tr>
9432           <tr class="entry_cont">
9433             <td class="entry_details" colspan="6">
9434               <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
9435 capture intent.<wbr/></p>
9436             </td>
9437           </tr>
9438
9439           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9440            <!-- end of entry -->
9441         
9442                 
9443           <tr class="entry" id="dynamic_android.control.afSceneChange">
9444             <td class="entry_name
9445              " rowspan="3">
9446               android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change
9447             </td>
9448             <td class="entry_type">
9449                 <span class="entry_type_name entry_type_name_enum">byte</span>
9450
9451               <span class="entry_type_visibility"> [public]</span>
9452
9453
9454
9455
9456
9457                 <ul class="entry_type_enum">
9458                   <li>
9459                     <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span>
9460                     <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span>
9461                   </li>
9462                   <li>
9463                     <span class="entry_type_enum_name">DETECTED (v3.3)</span>
9464                     <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span>
9465                   </li>
9466                 </ul>
9467
9468             </td> <!-- entry_type -->
9469
9470             <td class="entry_description">
9471               <p>Whether a significant scene change is detected within the currently-set AF
9472 region(s).<wbr/></p>
9473             </td>
9474
9475             <td class="entry_units">
9476             </td>
9477
9478             <td class="entry_range">
9479             </td>
9480
9481             <td class="entry_hal_version">
9482               <p>3.<wbr/>3</p>
9483             </td>
9484
9485             <td class="entry_tags">
9486             </td>
9487
9488           </tr>
9489           <tr class="entries_header">
9490             <th class="th_details" colspan="6">Details</th>
9491           </tr>
9492           <tr class="entry_cont">
9493             <td class="entry_details" colspan="6">
9494               <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/>
9495 such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a
9496 significant illumination change,<wbr/> this value will be set to DETECTED for a single capture
9497 result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar
9498 to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p>
9499 <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>
9500             </td>
9501           </tr>
9502
9503
9504           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9505            <!-- end of entry -->
9506         
9507         
9508
9509       <!-- end of kind -->
9510       </tbody>
9511
9512   <!-- end of section -->
9513   <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr>
9514
9515
9516       <tr><td colspan="7" class="kind">controls</td></tr>
9517
9518       <thead class="entries_header">
9519         <tr>
9520           <th class="th_name">Property Name</th>
9521           <th class="th_type">Type</th>
9522           <th class="th_description">Description</th>
9523           <th class="th_units">Units</th>
9524           <th class="th_range">Range</th>
9525           <th class="th_hal_version">Initial HIDL HAL version</th>
9526           <th class="th_tags">Tags</th>
9527         </tr>
9528       </thead>
9529
9530       <tbody>
9531
9532         
9533
9534         
9535
9536         
9537
9538         
9539
9540                 
9541           <tr class="entry" id="controls_android.demosaic.mode">
9542             <td class="entry_name
9543              " rowspan="1">
9544               android.<wbr/>demosaic.<wbr/>mode
9545             </td>
9546             <td class="entry_type">
9547                 <span class="entry_type_name entry_type_name_enum">byte</span>
9548
9549               <span class="entry_type_visibility"> [system]</span>
9550
9551
9552
9553
9554
9555                 <ul class="entry_type_enum">
9556                   <li>
9557                     <span class="entry_type_enum_name">FAST (v3.2)</span>
9558                     <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
9559 Bayer RAW output.<wbr/></p></span>
9560                   </li>
9561                   <li>
9562                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9563                     <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
9564 relative to raw output.<wbr/></p></span>
9565                   </li>
9566                 </ul>
9567
9568             </td> <!-- entry_type -->
9569
9570             <td class="entry_description">
9571               <p>Controls the quality of the demosaicing
9572 processing.<wbr/></p>
9573             </td>
9574
9575             <td class="entry_units">
9576             </td>
9577
9578             <td class="entry_range">
9579             </td>
9580
9581             <td class="entry_hal_version">
9582               <p>3.<wbr/>2</p>
9583             </td>
9584
9585             <td class="entry_tags">
9586               <ul class="entry_tags">
9587                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9588               </ul>
9589             </td>
9590
9591           </tr>
9592
9593
9594           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9595            <!-- end of entry -->
9596         
9597         
9598
9599       <!-- end of kind -->
9600       </tbody>
9601
9602   <!-- end of section -->
9603   <tr><td colspan="7" id="section_edge" class="section">edge</td></tr>
9604
9605
9606       <tr><td colspan="7" class="kind">controls</td></tr>
9607
9608       <thead class="entries_header">
9609         <tr>
9610           <th class="th_name">Property Name</th>
9611           <th class="th_type">Type</th>
9612           <th class="th_description">Description</th>
9613           <th class="th_units">Units</th>
9614           <th class="th_range">Range</th>
9615           <th class="th_hal_version">Initial HIDL HAL version</th>
9616           <th class="th_tags">Tags</th>
9617         </tr>
9618       </thead>
9619
9620       <tbody>
9621
9622         
9623
9624         
9625
9626         
9627
9628         
9629
9630                 
9631           <tr class="entry" id="controls_android.edge.mode">
9632             <td class="entry_name
9633              " rowspan="5">
9634               android.<wbr/>edge.<wbr/>mode
9635             </td>
9636             <td class="entry_type">
9637                 <span class="entry_type_name entry_type_name_enum">byte</span>
9638
9639               <span class="entry_type_visibility"> [public]</span>
9640
9641
9642               <span class="entry_type_hwlevel">[full] </span>
9643
9644
9645
9646                 <ul class="entry_type_enum">
9647                   <li>
9648                     <span class="entry_type_enum_name">OFF (v3.2)</span>
9649                     <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9650                   </li>
9651                   <li>
9652                     <span class="entry_type_enum_name">FAST (v3.2)</span>
9653                     <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9654 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9655 slow down frame rate relative to sensor.<wbr/></p></span>
9656                   </li>
9657                   <li>
9658                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9659                     <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>
9660                   </li>
9661                   <li>
9662                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9663                     <span class="entry_type_enum_optional">[optional]</span>
9664                     <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9665 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9666 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9667 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9668 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9669 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9670 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9671 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9672 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9673 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9674 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9675 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9676 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9677 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9678 reasonable preview quality.<wbr/></p>
9679 <p>This mode is guaranteed to be supported by devices that support either the
9680 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9681 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9682 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9683                   </li>
9684                 </ul>
9685
9686             </td> <!-- entry_type -->
9687
9688             <td class="entry_description">
9689               <p>Operation mode for edge
9690 enhancement.<wbr/></p>
9691             </td>
9692
9693             <td class="entry_units">
9694             </td>
9695
9696             <td class="entry_range">
9697               <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9698             </td>
9699
9700             <td class="entry_hal_version">
9701               <p>3.<wbr/>2</p>
9702             </td>
9703
9704             <td class="entry_tags">
9705               <ul class="entry_tags">
9706                   <li><a href="#tag_V1">V1</a></li>
9707                   <li><a href="#tag_REPROC">REPROC</a></li>
9708               </ul>
9709             </td>
9710
9711           </tr>
9712           <tr class="entries_header">
9713             <th class="th_details" colspan="6">Details</th>
9714           </tr>
9715           <tr class="entry_cont">
9716             <td class="entry_details" colspan="6">
9717               <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9718 no enhancement will be applied by the camera device.<wbr/></p>
9719 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9720 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9721 camera device will use the highest-quality enhancement algorithms,<wbr/>
9722 even if it slows down capture rate.<wbr/> FAST means the camera device will
9723 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9724 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9725 amount of enhancement applied.<wbr/></p>
9726 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9727 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9728 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9729 edge enhancement to low-resolution streams (below maximum recording resolution) to
9730 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9731 since those will be reprocessed later if necessary.<wbr/></p>
9732 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9733 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9734 The camera device may adjust its internal edge enhancement parameters for best
9735 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>
9736             </td>
9737           </tr>
9738
9739           <tr class="entries_header">
9740             <th class="th_details" colspan="6">HAL Implementation Details</th>
9741           </tr>
9742           <tr class="entry_cont">
9743             <td class="entry_details" colspan="6">
9744               <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
9745 adjust the internal edge enhancement reduction parameters appropriately to get the best
9746 quality images.<wbr/></p>
9747             </td>
9748           </tr>
9749
9750           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9751            <!-- end of entry -->
9752         
9753                 
9754           <tr class="entry" id="controls_android.edge.strength">
9755             <td class="entry_name
9756              " rowspan="1">
9757               android.<wbr/>edge.<wbr/>strength
9758             </td>
9759             <td class="entry_type">
9760                 <span class="entry_type_name">byte</span>
9761
9762               <span class="entry_type_visibility"> [system]</span>
9763
9764
9765
9766
9767
9768
9769             </td> <!-- entry_type -->
9770
9771             <td class="entry_description">
9772               <p>Control the amount of edge enhancement
9773 applied to the images</p>
9774             </td>
9775
9776             <td class="entry_units">
9777               1-10; 10 is maximum sharpening
9778             </td>
9779
9780             <td class="entry_range">
9781             </td>
9782
9783             <td class="entry_hal_version">
9784               <p>3.<wbr/>2</p>
9785             </td>
9786
9787             <td class="entry_tags">
9788               <ul class="entry_tags">
9789                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9790               </ul>
9791             </td>
9792
9793           </tr>
9794
9795
9796           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9797            <!-- end of entry -->
9798         
9799         
9800
9801       <!-- end of kind -->
9802       </tbody>
9803       <tr><td colspan="7" class="kind">static</td></tr>
9804
9805       <thead class="entries_header">
9806         <tr>
9807           <th class="th_name">Property Name</th>
9808           <th class="th_type">Type</th>
9809           <th class="th_description">Description</th>
9810           <th class="th_units">Units</th>
9811           <th class="th_range">Range</th>
9812           <th class="th_hal_version">Initial HIDL HAL version</th>
9813           <th class="th_tags">Tags</th>
9814         </tr>
9815       </thead>
9816
9817       <tbody>
9818
9819         
9820
9821         
9822
9823         
9824
9825         
9826
9827                 
9828           <tr class="entry" id="static_android.edge.availableEdgeModes">
9829             <td class="entry_name
9830              " rowspan="5">
9831               android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
9832             </td>
9833             <td class="entry_type">
9834                 <span class="entry_type_name">byte</span>
9835                 <span class="entry_type_container">x</span>
9836
9837                 <span class="entry_type_array">
9838                   n
9839                 </span>
9840               <span class="entry_type_visibility"> [public as enumList]</span>
9841
9842
9843               <span class="entry_type_hwlevel">[full] </span>
9844
9845
9846                 <div class="entry_type_notes">list of enums</div>
9847
9848
9849             </td> <!-- entry_type -->
9850
9851             <td class="entry_description">
9852               <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
9853 device.<wbr/></p>
9854             </td>
9855
9856             <td class="entry_units">
9857             </td>
9858
9859             <td class="entry_range">
9860               <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
9861             </td>
9862
9863             <td class="entry_hal_version">
9864               <p>3.<wbr/>2</p>
9865             </td>
9866
9867             <td class="entry_tags">
9868               <ul class="entry_tags">
9869                   <li><a href="#tag_V1">V1</a></li>
9870                   <li><a href="#tag_REPROC">REPROC</a></li>
9871               </ul>
9872             </td>
9873
9874           </tr>
9875           <tr class="entries_header">
9876             <th class="th_details" colspan="6">Details</th>
9877           </tr>
9878           <tr class="entry_cont">
9879             <td class="entry_details" colspan="6">
9880               <p>Full-capability camera devices must always support OFF; camera devices that support
9881 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
9882 list FAST.<wbr/></p>
9883             </td>
9884           </tr>
9885
9886           <tr class="entries_header">
9887             <th class="th_details" colspan="6">HAL Implementation Details</th>
9888           </tr>
9889           <tr class="entry_cont">
9890             <td class="entry_details" colspan="6">
9891               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
9892 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
9893 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
9894 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
9895             </td>
9896           </tr>
9897
9898           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9899            <!-- end of entry -->
9900         
9901         
9902
9903       <!-- end of kind -->
9904       </tbody>
9905       <tr><td colspan="7" class="kind">dynamic</td></tr>
9906
9907       <thead class="entries_header">
9908         <tr>
9909           <th class="th_name">Property Name</th>
9910           <th class="th_type">Type</th>
9911           <th class="th_description">Description</th>
9912           <th class="th_units">Units</th>
9913           <th class="th_range">Range</th>
9914           <th class="th_hal_version">Initial HIDL HAL version</th>
9915           <th class="th_tags">Tags</th>
9916         </tr>
9917       </thead>
9918
9919       <tbody>
9920
9921         
9922
9923         
9924
9925         
9926
9927         
9928
9929                 
9930           <tr class="entry" id="dynamic_android.edge.mode">
9931             <td class="entry_name
9932              " rowspan="5">
9933               android.<wbr/>edge.<wbr/>mode
9934             </td>
9935             <td class="entry_type">
9936                 <span class="entry_type_name entry_type_name_enum">byte</span>
9937
9938               <span class="entry_type_visibility"> [public]</span>
9939
9940
9941               <span class="entry_type_hwlevel">[full] </span>
9942
9943
9944
9945                 <ul class="entry_type_enum">
9946                   <li>
9947                     <span class="entry_type_enum_name">OFF (v3.2)</span>
9948                     <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9949                   </li>
9950                   <li>
9951                     <span class="entry_type_enum_name">FAST (v3.2)</span>
9952                     <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9953 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9954 slow down frame rate relative to sensor.<wbr/></p></span>
9955                   </li>
9956                   <li>
9957                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9958                     <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>
9959                   </li>
9960                   <li>
9961                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9962                     <span class="entry_type_enum_optional">[optional]</span>
9963                     <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9964 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9965 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9966 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9967 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9968 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9969 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9970 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9971 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9972 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9973 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9974 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9975 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9976 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9977 reasonable preview quality.<wbr/></p>
9978 <p>This mode is guaranteed to be supported by devices that support either the
9979 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9980 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9981 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9982                   </li>
9983                 </ul>
9984
9985             </td> <!-- entry_type -->
9986
9987             <td class="entry_description">
9988               <p>Operation mode for edge
9989 enhancement.<wbr/></p>
9990             </td>
9991
9992             <td class="entry_units">
9993             </td>
9994
9995             <td class="entry_range">
9996               <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9997             </td>
9998
9999             <td class="entry_hal_version">
10000               <p>3.<wbr/>2</p>
10001             </td>
10002
10003             <td class="entry_tags">
10004               <ul class="entry_tags">
10005                   <li><a href="#tag_V1">V1</a></li>
10006                   <li><a href="#tag_REPROC">REPROC</a></li>
10007               </ul>
10008             </td>
10009
10010           </tr>
10011           <tr class="entries_header">
10012             <th class="th_details" colspan="6">Details</th>
10013           </tr>
10014           <tr class="entry_cont">
10015             <td class="entry_details" colspan="6">
10016               <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
10017 no enhancement will be applied by the camera device.<wbr/></p>
10018 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
10019 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
10020 camera device will use the highest-quality enhancement algorithms,<wbr/>
10021 even if it slows down capture rate.<wbr/> FAST means the camera device will
10022 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
10023 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
10024 amount of enhancement applied.<wbr/></p>
10025 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
10026 buffer of high-resolution images during preview and reprocess image(s) from that buffer
10027 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
10028 edge enhancement to low-resolution streams (below maximum recording resolution) to
10029 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
10030 since those will be reprocessed later if necessary.<wbr/></p>
10031 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
10032 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
10033 The camera device may adjust its internal edge enhancement parameters for best
10034 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>
10035             </td>
10036           </tr>
10037
10038           <tr class="entries_header">
10039             <th class="th_details" colspan="6">HAL Implementation Details</th>
10040           </tr>
10041           <tr class="entry_cont">
10042             <td class="entry_details" colspan="6">
10043               <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
10044 adjust the internal edge enhancement reduction parameters appropriately to get the best
10045 quality images.<wbr/></p>
10046             </td>
10047           </tr>
10048
10049           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10050            <!-- end of entry -->
10051         
10052         
10053
10054       <!-- end of kind -->
10055       </tbody>
10056
10057   <!-- end of section -->
10058   <tr><td colspan="7" id="section_flash" class="section">flash</td></tr>
10059
10060
10061       <tr><td colspan="7" class="kind">controls</td></tr>
10062
10063       <thead class="entries_header">
10064         <tr>
10065           <th class="th_name">Property Name</th>
10066           <th class="th_type">Type</th>
10067           <th class="th_description">Description</th>
10068           <th class="th_units">Units</th>
10069           <th class="th_range">Range</th>
10070           <th class="th_hal_version">Initial HIDL HAL version</th>
10071           <th class="th_tags">Tags</th>
10072         </tr>
10073       </thead>
10074
10075       <tbody>
10076
10077         
10078
10079         
10080
10081         
10082
10083         
10084
10085                 
10086           <tr class="entry" id="controls_android.flash.firingPower">
10087             <td class="entry_name
10088              " rowspan="3">
10089               android.<wbr/>flash.<wbr/>firing<wbr/>Power
10090             </td>
10091             <td class="entry_type">
10092                 <span class="entry_type_name">byte</span>
10093
10094               <span class="entry_type_visibility"> [system]</span>
10095
10096
10097
10098
10099
10100
10101             </td> <!-- entry_type -->
10102
10103             <td class="entry_description">
10104               <p>Power for flash firing/<wbr/>torch</p>
10105             </td>
10106
10107             <td class="entry_units">
10108               10 is max power; 0 is no flash.<wbr/> Linear
10109             </td>
10110
10111             <td class="entry_range">
10112               <p>0 - 10</p>
10113             </td>
10114
10115             <td class="entry_hal_version">
10116               <p>3.<wbr/>2</p>
10117             </td>
10118
10119             <td class="entry_tags">
10120               <ul class="entry_tags">
10121                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10122               </ul>
10123             </td>
10124
10125           </tr>
10126           <tr class="entries_header">
10127             <th class="th_details" colspan="6">Details</th>
10128           </tr>
10129           <tr class="entry_cont">
10130             <td class="entry_details" colspan="6">
10131               <p>Power for snapshot may use a different scale than
10132 for torch mode.<wbr/> Only one entry for torch mode will be
10133 used</p>
10134             </td>
10135           </tr>
10136
10137
10138           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10139            <!-- end of entry -->
10140         
10141                 
10142           <tr class="entry" id="controls_android.flash.firingTime">
10143             <td class="entry_name
10144              " rowspan="3">
10145               android.<wbr/>flash.<wbr/>firing<wbr/>Time
10146             </td>
10147             <td class="entry_type">
10148                 <span class="entry_type_name">int64</span>
10149
10150               <span class="entry_type_visibility"> [system]</span>
10151
10152
10153
10154
10155
10156
10157             </td> <!-- entry_type -->
10158
10159             <td class="entry_description">
10160               <p>Firing time of flash relative to start of
10161 exposure</p>
10162             </td>
10163
10164             <td class="entry_units">
10165               nanoseconds
10166             </td>
10167
10168             <td class="entry_range">
10169               <p>0-(exposure time-flash duration)</p>
10170             </td>
10171
10172             <td class="entry_hal_version">
10173               <p>3.<wbr/>2</p>
10174             </td>
10175
10176             <td class="entry_tags">
10177               <ul class="entry_tags">
10178                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10179               </ul>
10180             </td>
10181
10182           </tr>
10183           <tr class="entries_header">
10184             <th class="th_details" colspan="6">Details</th>
10185           </tr>
10186           <tr class="entry_cont">
10187             <td class="entry_details" colspan="6">
10188               <p>Clamped to (0,<wbr/> exposure time - flash
10189 duration).<wbr/></p>
10190             </td>
10191           </tr>
10192
10193
10194           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10195            <!-- end of entry -->
10196         
10197                 
10198           <tr class="entry" id="controls_android.flash.mode">
10199             <td class="entry_name
10200              " rowspan="3">
10201               android.<wbr/>flash.<wbr/>mode
10202             </td>
10203             <td class="entry_type">
10204                 <span class="entry_type_name entry_type_name_enum">byte</span>
10205
10206               <span class="entry_type_visibility"> [public]</span>
10207
10208
10209               <span class="entry_type_hwlevel">[legacy] </span>
10210
10211
10212
10213                 <ul class="entry_type_enum">
10214                   <li>
10215                     <span class="entry_type_enum_name">OFF (v3.2)</span>
10216                     <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10217                   </li>
10218                   <li>
10219                     <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10220                     <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10221 for this capture.<wbr/></p></span>
10222                   </li>
10223                   <li>
10224                     <span class="entry_type_enum_name">TORCH (v3.2)</span>
10225                     <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10226                   </li>
10227                 </ul>
10228
10229             </td> <!-- entry_type -->
10230
10231             <td class="entry_description">
10232               <p>The desired mode for for the camera device's flash control.<wbr/></p>
10233             </td>
10234
10235             <td class="entry_units">
10236             </td>
10237
10238             <td class="entry_range">
10239             </td>
10240
10241             <td class="entry_hal_version">
10242               <p>3.<wbr/>2</p>
10243             </td>
10244
10245             <td class="entry_tags">
10246               <ul class="entry_tags">
10247                   <li><a href="#tag_BC">BC</a></li>
10248               </ul>
10249             </td>
10250
10251           </tr>
10252           <tr class="entries_header">
10253             <th class="th_details" colspan="6">Details</th>
10254           </tr>
10255           <tr class="entry_cont">
10256             <td class="entry_details" colspan="6">
10257               <p>This control is only effective when flash unit is available
10258 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10259 <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/>
10260 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10261 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10262 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10263 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10264 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10265 control should be used along with auto-exposure (AE) precapture metering sequence
10266 (<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>
10267 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10268 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10269 <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>
10270             </td>
10271           </tr>
10272
10273
10274           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10275            <!-- end of entry -->
10276         
10277         
10278
10279       <!-- end of kind -->
10280       </tbody>
10281       <tr><td colspan="7" class="kind">static</td></tr>
10282
10283       <thead class="entries_header">
10284         <tr>
10285           <th class="th_name">Property Name</th>
10286           <th class="th_type">Type</th>
10287           <th class="th_description">Description</th>
10288           <th class="th_units">Units</th>
10289           <th class="th_range">Range</th>
10290           <th class="th_hal_version">Initial HIDL HAL version</th>
10291           <th class="th_tags">Tags</th>
10292         </tr>
10293       </thead>
10294
10295       <tbody>
10296
10297         
10298
10299         
10300
10301         
10302
10303         
10304                 
10305             
10306
10307                 
10308           <tr class="entry" id="static_android.flash.info.available">
10309             <td class="entry_name
10310              " rowspan="3">
10311               android.<wbr/>flash.<wbr/>info.<wbr/>available
10312             </td>
10313             <td class="entry_type">
10314                 <span class="entry_type_name entry_type_name_enum">byte</span>
10315
10316               <span class="entry_type_visibility"> [public as boolean]</span>
10317
10318
10319               <span class="entry_type_hwlevel">[legacy] </span>
10320
10321
10322
10323                 <ul class="entry_type_enum">
10324                   <li>
10325                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
10326                   </li>
10327                   <li>
10328                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
10329                   </li>
10330                 </ul>
10331
10332             </td> <!-- entry_type -->
10333
10334             <td class="entry_description">
10335               <p>Whether this camera device has a
10336 flash unit.<wbr/></p>
10337             </td>
10338
10339             <td class="entry_units">
10340             </td>
10341
10342             <td class="entry_range">
10343             </td>
10344
10345             <td class="entry_hal_version">
10346               <p>3.<wbr/>2</p>
10347             </td>
10348
10349             <td class="entry_tags">
10350               <ul class="entry_tags">
10351                   <li><a href="#tag_BC">BC</a></li>
10352               </ul>
10353             </td>
10354
10355           </tr>
10356           <tr class="entries_header">
10357             <th class="th_details" colspan="6">Details</th>
10358           </tr>
10359           <tr class="entry_cont">
10360             <td class="entry_details" colspan="6">
10361               <p>Will be <code>false</code> if no flash is available.<wbr/></p>
10362 <p>If there is no flash unit,<wbr/> none of the flash controls do
10363 anything.<wbr/></p>
10364             </td>
10365           </tr>
10366
10367
10368           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10369            <!-- end of entry -->
10370         
10371                 
10372           <tr class="entry" id="static_android.flash.info.chargeDuration">
10373             <td class="entry_name
10374              " rowspan="3">
10375               android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
10376             </td>
10377             <td class="entry_type">
10378                 <span class="entry_type_name">int64</span>
10379
10380               <span class="entry_type_visibility"> [system]</span>
10381
10382
10383
10384
10385
10386
10387             </td> <!-- entry_type -->
10388
10389             <td class="entry_description">
10390               <p>Time taken before flash can fire
10391 again</p>
10392             </td>
10393
10394             <td class="entry_units">
10395               nanoseconds
10396             </td>
10397
10398             <td class="entry_range">
10399               <p>0-1e9</p>
10400             </td>
10401
10402             <td class="entry_hal_version">
10403               <p>3.<wbr/>2</p>
10404             </td>
10405
10406             <td class="entry_tags">
10407               <ul class="entry_tags">
10408                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10409               </ul>
10410             </td>
10411
10412           </tr>
10413           <tr class="entries_header">
10414             <th class="th_details" colspan="6">Details</th>
10415           </tr>
10416           <tr class="entry_cont">
10417             <td class="entry_details" colspan="6">
10418               <p>1 second too long/<wbr/>too short for recharge? Should
10419 this be power-dependent?</p>
10420             </td>
10421           </tr>
10422
10423
10424           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10425            <!-- end of entry -->
10426         
10427         
10428         
10429
10430                 
10431           <tr class="entry" id="static_android.flash.colorTemperature">
10432             <td class="entry_name
10433              " rowspan="1">
10434               android.<wbr/>flash.<wbr/>color<wbr/>Temperature
10435             </td>
10436             <td class="entry_type">
10437                 <span class="entry_type_name">byte</span>
10438
10439               <span class="entry_type_visibility"> [system]</span>
10440
10441
10442
10443
10444
10445
10446             </td> <!-- entry_type -->
10447
10448             <td class="entry_description">
10449               <p>The x,<wbr/>y whitepoint of the
10450 flash</p>
10451             </td>
10452
10453             <td class="entry_units">
10454               pair of floats
10455             </td>
10456
10457             <td class="entry_range">
10458               <p>0-1 for both</p>
10459             </td>
10460
10461             <td class="entry_hal_version">
10462               <p>3.<wbr/>2</p>
10463             </td>
10464
10465             <td class="entry_tags">
10466               <ul class="entry_tags">
10467                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10468               </ul>
10469             </td>
10470
10471           </tr>
10472
10473
10474           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10475            <!-- end of entry -->
10476         
10477                 
10478           <tr class="entry" id="static_android.flash.maxEnergy">
10479             <td class="entry_name
10480              " rowspan="1">
10481               android.<wbr/>flash.<wbr/>max<wbr/>Energy
10482             </td>
10483             <td class="entry_type">
10484                 <span class="entry_type_name">byte</span>
10485
10486               <span class="entry_type_visibility"> [system]</span>
10487
10488
10489
10490
10491
10492
10493             </td> <!-- entry_type -->
10494
10495             <td class="entry_description">
10496               <p>Max energy output of the flash for a full
10497 power single flash</p>
10498             </td>
10499
10500             <td class="entry_units">
10501               lumen-seconds
10502             </td>
10503
10504             <td class="entry_range">
10505               <p>&gt;= 0</p>
10506             </td>
10507
10508             <td class="entry_hal_version">
10509               <p>3.<wbr/>2</p>
10510             </td>
10511
10512             <td class="entry_tags">
10513               <ul class="entry_tags">
10514                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10515               </ul>
10516             </td>
10517
10518           </tr>
10519
10520
10521           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10522            <!-- end of entry -->
10523         
10524         
10525
10526       <!-- end of kind -->
10527       </tbody>
10528       <tr><td colspan="7" class="kind">dynamic</td></tr>
10529
10530       <thead class="entries_header">
10531         <tr>
10532           <th class="th_name">Property Name</th>
10533           <th class="th_type">Type</th>
10534           <th class="th_description">Description</th>
10535           <th class="th_units">Units</th>
10536           <th class="th_range">Range</th>
10537           <th class="th_hal_version">Initial HIDL HAL version</th>
10538           <th class="th_tags">Tags</th>
10539         </tr>
10540       </thead>
10541
10542       <tbody>
10543
10544         
10545
10546         
10547
10548         
10549
10550         
10551
10552                 
10553           <tr class="entry" id="dynamic_android.flash.firingPower">
10554             <td class="entry_name
10555              " rowspan="3">
10556               android.<wbr/>flash.<wbr/>firing<wbr/>Power
10557             </td>
10558             <td class="entry_type">
10559                 <span class="entry_type_name">byte</span>
10560
10561               <span class="entry_type_visibility"> [system]</span>
10562
10563
10564
10565
10566
10567
10568             </td> <!-- entry_type -->
10569
10570             <td class="entry_description">
10571               <p>Power for flash firing/<wbr/>torch</p>
10572             </td>
10573
10574             <td class="entry_units">
10575               10 is max power; 0 is no flash.<wbr/> Linear
10576             </td>
10577
10578             <td class="entry_range">
10579               <p>0 - 10</p>
10580             </td>
10581
10582             <td class="entry_hal_version">
10583               <p>3.<wbr/>2</p>
10584             </td>
10585
10586             <td class="entry_tags">
10587               <ul class="entry_tags">
10588                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10589               </ul>
10590             </td>
10591
10592           </tr>
10593           <tr class="entries_header">
10594             <th class="th_details" colspan="6">Details</th>
10595           </tr>
10596           <tr class="entry_cont">
10597             <td class="entry_details" colspan="6">
10598               <p>Power for snapshot may use a different scale than
10599 for torch mode.<wbr/> Only one entry for torch mode will be
10600 used</p>
10601             </td>
10602           </tr>
10603
10604
10605           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10606            <!-- end of entry -->
10607         
10608                 
10609           <tr class="entry" id="dynamic_android.flash.firingTime">
10610             <td class="entry_name
10611              " rowspan="3">
10612               android.<wbr/>flash.<wbr/>firing<wbr/>Time
10613             </td>
10614             <td class="entry_type">
10615                 <span class="entry_type_name">int64</span>
10616
10617               <span class="entry_type_visibility"> [system]</span>
10618
10619
10620
10621
10622
10623
10624             </td> <!-- entry_type -->
10625
10626             <td class="entry_description">
10627               <p>Firing time of flash relative to start of
10628 exposure</p>
10629             </td>
10630
10631             <td class="entry_units">
10632               nanoseconds
10633             </td>
10634
10635             <td class="entry_range">
10636               <p>0-(exposure time-flash duration)</p>
10637             </td>
10638
10639             <td class="entry_hal_version">
10640               <p>3.<wbr/>2</p>
10641             </td>
10642
10643             <td class="entry_tags">
10644               <ul class="entry_tags">
10645                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10646               </ul>
10647             </td>
10648
10649           </tr>
10650           <tr class="entries_header">
10651             <th class="th_details" colspan="6">Details</th>
10652           </tr>
10653           <tr class="entry_cont">
10654             <td class="entry_details" colspan="6">
10655               <p>Clamped to (0,<wbr/> exposure time - flash
10656 duration).<wbr/></p>
10657             </td>
10658           </tr>
10659
10660
10661           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10662            <!-- end of entry -->
10663         
10664                 
10665           <tr class="entry" id="dynamic_android.flash.mode">
10666             <td class="entry_name
10667              " rowspan="3">
10668               android.<wbr/>flash.<wbr/>mode
10669             </td>
10670             <td class="entry_type">
10671                 <span class="entry_type_name entry_type_name_enum">byte</span>
10672
10673               <span class="entry_type_visibility"> [public]</span>
10674
10675
10676               <span class="entry_type_hwlevel">[legacy] </span>
10677
10678
10679
10680                 <ul class="entry_type_enum">
10681                   <li>
10682                     <span class="entry_type_enum_name">OFF (v3.2)</span>
10683                     <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10684                   </li>
10685                   <li>
10686                     <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10687                     <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10688 for this capture.<wbr/></p></span>
10689                   </li>
10690                   <li>
10691                     <span class="entry_type_enum_name">TORCH (v3.2)</span>
10692                     <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10693                   </li>
10694                 </ul>
10695
10696             </td> <!-- entry_type -->
10697
10698             <td class="entry_description">
10699               <p>The desired mode for for the camera device's flash control.<wbr/></p>
10700             </td>
10701
10702             <td class="entry_units">
10703             </td>
10704
10705             <td class="entry_range">
10706             </td>
10707
10708             <td class="entry_hal_version">
10709               <p>3.<wbr/>2</p>
10710             </td>
10711
10712             <td class="entry_tags">
10713               <ul class="entry_tags">
10714                   <li><a href="#tag_BC">BC</a></li>
10715               </ul>
10716             </td>
10717
10718           </tr>
10719           <tr class="entries_header">
10720             <th class="th_details" colspan="6">Details</th>
10721           </tr>
10722           <tr class="entry_cont">
10723             <td class="entry_details" colspan="6">
10724               <p>This control is only effective when flash unit is available
10725 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10726 <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/>
10727 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10728 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10729 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10730 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10731 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10732 control should be used along with auto-exposure (AE) precapture metering sequence
10733 (<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>
10734 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10735 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10736 <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>
10737             </td>
10738           </tr>
10739
10740
10741           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10742            <!-- end of entry -->
10743         
10744                 
10745           <tr class="entry" id="dynamic_android.flash.state">
10746             <td class="entry_name
10747              " rowspan="3">
10748               android.<wbr/>flash.<wbr/>state
10749             </td>
10750             <td class="entry_type">
10751                 <span class="entry_type_name entry_type_name_enum">byte</span>
10752
10753               <span class="entry_type_visibility"> [public]</span>
10754
10755
10756               <span class="entry_type_hwlevel">[limited] </span>
10757
10758
10759
10760                 <ul class="entry_type_enum">
10761                   <li>
10762                     <span class="entry_type_enum_name">UNAVAILABLE (v3.2)</span>
10763                     <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
10764                   </li>
10765                   <li>
10766                     <span class="entry_type_enum_name">CHARGING (v3.2)</span>
10767                     <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
10768                   </li>
10769                   <li>
10770                     <span class="entry_type_enum_name">READY (v3.2)</span>
10771                     <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
10772                   </li>
10773                   <li>
10774                     <span class="entry_type_enum_name">FIRED (v3.2)</span>
10775                     <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
10776                   </li>
10777                   <li>
10778                     <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
10779                     <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
10780 <p>This is usually due to the next or previous frame having
10781 the flash fire,<wbr/> and the flash spilling into this capture
10782 due to hardware limitations.<wbr/></p></span>
10783                   </li>
10784                 </ul>
10785
10786             </td> <!-- entry_type -->
10787
10788             <td class="entry_description">
10789               <p>Current state of the flash
10790 unit.<wbr/></p>
10791             </td>
10792
10793             <td class="entry_units">
10794             </td>
10795
10796             <td class="entry_range">
10797             </td>
10798
10799             <td class="entry_hal_version">
10800               <p>3.<wbr/>2</p>
10801             </td>
10802
10803             <td class="entry_tags">
10804             </td>
10805
10806           </tr>
10807           <tr class="entries_header">
10808             <th class="th_details" colspan="6">Details</th>
10809           </tr>
10810           <tr class="entry_cont">
10811             <td class="entry_details" colspan="6">
10812               <p>When the camera device doesn't have flash unit
10813 (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/>
10814 Other states indicate the current flash status.<wbr/></p>
10815 <p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
10816 <ul>
10817 <li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
10818 <li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
10819    will always return FIRED.<wbr/></li>
10820 <li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
10821    will always return FIRED.<wbr/></li>
10822 </ul>
10823 <p>In all other conditions the state will not be available on
10824 LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
10825             </td>
10826           </tr>
10827
10828
10829           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10830            <!-- end of entry -->
10831         
10832         
10833
10834       <!-- end of kind -->
10835       </tbody>
10836
10837   <!-- end of section -->
10838   <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr>
10839
10840
10841       <tr><td colspan="7" class="kind">controls</td></tr>
10842
10843       <thead class="entries_header">
10844         <tr>
10845           <th class="th_name">Property Name</th>
10846           <th class="th_type">Type</th>
10847           <th class="th_description">Description</th>
10848           <th class="th_units">Units</th>
10849           <th class="th_range">Range</th>
10850           <th class="th_hal_version">Initial HIDL HAL version</th>
10851           <th class="th_tags">Tags</th>
10852         </tr>
10853       </thead>
10854
10855       <tbody>
10856
10857         
10858
10859         
10860
10861         
10862
10863         
10864
10865                 
10866           <tr class="entry" id="controls_android.hotPixel.mode">
10867             <td class="entry_name
10868              " rowspan="3">
10869               android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10870             </td>
10871             <td class="entry_type">
10872                 <span class="entry_type_name entry_type_name_enum">byte</span>
10873
10874               <span class="entry_type_visibility"> [public]</span>
10875
10876
10877
10878
10879
10880                 <ul class="entry_type_enum">
10881                   <li>
10882                     <span class="entry_type_enum_name">OFF (v3.2)</span>
10883                     <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10884 <p>The frame rate must not be reduced relative to sensor raw output
10885 for this option.<wbr/></p>
10886 <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>
10887                   </li>
10888                   <li>
10889                     <span class="entry_type_enum_name">FAST (v3.2)</span>
10890                     <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10891 rate relative to sensor raw output.<wbr/></p>
10892 <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>
10893                   </li>
10894                   <li>
10895                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
10896                     <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10897 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10898 <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>
10899                   </li>
10900                 </ul>
10901
10902             </td> <!-- entry_type -->
10903
10904             <td class="entry_description">
10905               <p>Operational mode for hot pixel correction.<wbr/></p>
10906             </td>
10907
10908             <td class="entry_units">
10909             </td>
10910
10911             <td class="entry_range">
10912               <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10913             </td>
10914
10915             <td class="entry_hal_version">
10916               <p>3.<wbr/>2</p>
10917             </td>
10918
10919             <td class="entry_tags">
10920               <ul class="entry_tags">
10921                   <li><a href="#tag_V1">V1</a></li>
10922                   <li><a href="#tag_RAW">RAW</a></li>
10923               </ul>
10924             </td>
10925
10926           </tr>
10927           <tr class="entries_header">
10928             <th class="th_details" colspan="6">Details</th>
10929           </tr>
10930           <tr class="entry_cont">
10931             <td class="entry_details" colspan="6">
10932               <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10933 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10934 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10935             </td>
10936           </tr>
10937
10938
10939           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10940            <!-- end of entry -->
10941         
10942         
10943
10944       <!-- end of kind -->
10945       </tbody>
10946       <tr><td colspan="7" class="kind">static</td></tr>
10947
10948       <thead class="entries_header">
10949         <tr>
10950           <th class="th_name">Property Name</th>
10951           <th class="th_type">Type</th>
10952           <th class="th_description">Description</th>
10953           <th class="th_units">Units</th>
10954           <th class="th_range">Range</th>
10955           <th class="th_hal_version">Initial HIDL HAL version</th>
10956           <th class="th_tags">Tags</th>
10957         </tr>
10958       </thead>
10959
10960       <tbody>
10961
10962         
10963
10964         
10965
10966         
10967
10968         
10969
10970                 
10971           <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
10972             <td class="entry_name
10973              " rowspan="5">
10974               android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
10975             </td>
10976             <td class="entry_type">
10977                 <span class="entry_type_name">byte</span>
10978                 <span class="entry_type_container">x</span>
10979
10980                 <span class="entry_type_array">
10981                   n
10982                 </span>
10983               <span class="entry_type_visibility"> [public as enumList]</span>
10984
10985
10986
10987
10988                 <div class="entry_type_notes">list of enums</div>
10989
10990
10991             </td> <!-- entry_type -->
10992
10993             <td class="entry_description">
10994               <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
10995 camera device.<wbr/></p>
10996             </td>
10997
10998             <td class="entry_units">
10999             </td>
11000
11001             <td class="entry_range">
11002               <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
11003             </td>
11004
11005             <td class="entry_hal_version">
11006               <p>3.<wbr/>2</p>
11007             </td>
11008
11009             <td class="entry_tags">
11010               <ul class="entry_tags">
11011                   <li><a href="#tag_V1">V1</a></li>
11012                   <li><a href="#tag_RAW">RAW</a></li>
11013               </ul>
11014             </td>
11015
11016           </tr>
11017           <tr class="entries_header">
11018             <th class="th_details" colspan="6">Details</th>
11019           </tr>
11020           <tr class="entry_cont">
11021             <td class="entry_details" colspan="6">
11022               <p>FULL mode camera devices will always support FAST.<wbr/></p>
11023             </td>
11024           </tr>
11025
11026           <tr class="entries_header">
11027             <th class="th_details" colspan="6">HAL Implementation Details</th>
11028           </tr>
11029           <tr class="entry_cont">
11030             <td class="entry_details" colspan="6">
11031               <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
11032 pixels than actual pixels on the camera sensor.<wbr/>
11033 HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
11034 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
11035 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
11036 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
11037             </td>
11038           </tr>
11039
11040           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11041            <!-- end of entry -->
11042         
11043         
11044
11045       <!-- end of kind -->
11046       </tbody>
11047       <tr><td colspan="7" class="kind">dynamic</td></tr>
11048
11049       <thead class="entries_header">
11050         <tr>
11051           <th class="th_name">Property Name</th>
11052           <th class="th_type">Type</th>
11053           <th class="th_description">Description</th>
11054           <th class="th_units">Units</th>
11055           <th class="th_range">Range</th>
11056           <th class="th_hal_version">Initial HIDL HAL version</th>
11057           <th class="th_tags">Tags</th>
11058         </tr>
11059       </thead>
11060
11061       <tbody>
11062
11063         
11064
11065         
11066
11067         
11068
11069         
11070
11071                 
11072           <tr class="entry" id="dynamic_android.hotPixel.mode">
11073             <td class="entry_name
11074              " rowspan="3">
11075               android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
11076             </td>
11077             <td class="entry_type">
11078                 <span class="entry_type_name entry_type_name_enum">byte</span>
11079
11080               <span class="entry_type_visibility"> [public]</span>
11081
11082
11083
11084
11085
11086                 <ul class="entry_type_enum">
11087                   <li>
11088                     <span class="entry_type_enum_name">OFF (v3.2)</span>
11089                     <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
11090 <p>The frame rate must not be reduced relative to sensor raw output
11091 for this option.<wbr/></p>
11092 <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>
11093                   </li>
11094                   <li>
11095                     <span class="entry_type_enum_name">FAST (v3.2)</span>
11096                     <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
11097 rate relative to sensor raw output.<wbr/></p>
11098 <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>
11099                   </li>
11100                   <li>
11101                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
11102                     <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
11103 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
11104 <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>
11105                   </li>
11106                 </ul>
11107
11108             </td> <!-- entry_type -->
11109
11110             <td class="entry_description">
11111               <p>Operational mode for hot pixel correction.<wbr/></p>
11112             </td>
11113
11114             <td class="entry_units">
11115             </td>
11116
11117             <td class="entry_range">
11118               <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
11119             </td>
11120
11121             <td class="entry_hal_version">
11122               <p>3.<wbr/>2</p>
11123             </td>
11124
11125             <td class="entry_tags">
11126               <ul class="entry_tags">
11127                   <li><a href="#tag_V1">V1</a></li>
11128                   <li><a href="#tag_RAW">RAW</a></li>
11129               </ul>
11130             </td>
11131
11132           </tr>
11133           <tr class="entries_header">
11134             <th class="th_details" colspan="6">Details</th>
11135           </tr>
11136           <tr class="entry_cont">
11137             <td class="entry_details" colspan="6">
11138               <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
11139 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
11140 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
11141             </td>
11142           </tr>
11143
11144
11145           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11146            <!-- end of entry -->
11147         
11148         
11149
11150       <!-- end of kind -->
11151       </tbody>
11152
11153   <!-- end of section -->
11154   <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr>
11155
11156
11157       <tr><td colspan="7" class="kind">controls</td></tr>
11158
11159       <thead class="entries_header">
11160         <tr>
11161           <th class="th_name">Property Name</th>
11162           <th class="th_type">Type</th>
11163           <th class="th_description">Description</th>
11164           <th class="th_units">Units</th>
11165           <th class="th_range">Range</th>
11166           <th class="th_hal_version">Initial HIDL HAL version</th>
11167           <th class="th_tags">Tags</th>
11168         </tr>
11169       </thead>
11170
11171       <tbody>
11172
11173         
11174
11175         
11176
11177         
11178
11179         
11180
11181                 
11182           <tr class="entry" id="controls_android.jpeg.gpsLocation">
11183             <td class="entry_name
11184              " rowspan="3">
11185               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11186             </td>
11187             <td class="entry_type">
11188                 <span class="entry_type_name">byte</span>
11189
11190               <span class="entry_type_visibility"> [java_public as location]</span>
11191
11192               <span class="entry_type_synthetic">[synthetic] </span>
11193
11194               <span class="entry_type_hwlevel">[legacy] </span>
11195
11196
11197
11198
11199             </td> <!-- entry_type -->
11200
11201             <td class="entry_description">
11202               <p>A location object to use when generating image GPS metadata.<wbr/></p>
11203             </td>
11204
11205             <td class="entry_units">
11206             </td>
11207
11208             <td class="entry_range">
11209             </td>
11210
11211             <td class="entry_hal_version">
11212               <p>3.<wbr/>2</p>
11213             </td>
11214
11215             <td class="entry_tags">
11216             </td>
11217
11218           </tr>
11219           <tr class="entries_header">
11220             <th class="th_details" colspan="6">Details</th>
11221           </tr>
11222           <tr class="entry_cont">
11223             <td class="entry_details" colspan="6">
11224               <p>Setting a location object in a request will include the GPS coordinates of the location
11225 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11226 viewed by anyone who receives the JPEG image.<wbr/></p>
11227             </td>
11228           </tr>
11229
11230
11231           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11232            <!-- end of entry -->
11233         
11234                 
11235           <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
11236             <td class="entry_name
11237              " rowspan="1">
11238               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11239             </td>
11240             <td class="entry_type">
11241                 <span class="entry_type_name">double</span>
11242                 <span class="entry_type_container">x</span>
11243
11244                 <span class="entry_type_array">
11245                   3
11246                 </span>
11247               <span class="entry_type_visibility"> [ndk_public]</span>
11248
11249
11250               <span class="entry_type_hwlevel">[legacy] </span>
11251
11252
11253                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11254
11255
11256             </td> <!-- entry_type -->
11257
11258             <td class="entry_description">
11259               <p>GPS coordinates to include in output JPEG
11260 EXIF.<wbr/></p>
11261             </td>
11262
11263             <td class="entry_units">
11264             </td>
11265
11266             <td class="entry_range">
11267               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11268             </td>
11269
11270             <td class="entry_hal_version">
11271               <p>3.<wbr/>2</p>
11272             </td>
11273
11274             <td class="entry_tags">
11275               <ul class="entry_tags">
11276                   <li><a href="#tag_BC">BC</a></li>
11277               </ul>
11278             </td>
11279
11280           </tr>
11281
11282
11283           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11284            <!-- end of entry -->
11285         
11286                 
11287           <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
11288             <td class="entry_name
11289              " rowspan="1">
11290               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11291             </td>
11292             <td class="entry_type">
11293                 <span class="entry_type_name">byte</span>
11294
11295               <span class="entry_type_visibility"> [ndk_public as string]</span>
11296
11297
11298               <span class="entry_type_hwlevel">[legacy] </span>
11299
11300
11301
11302
11303             </td> <!-- entry_type -->
11304
11305             <td class="entry_description">
11306               <p>32 characters describing GPS algorithm to
11307 include in EXIF.<wbr/></p>
11308             </td>
11309
11310             <td class="entry_units">
11311               UTF-8 null-terminated string
11312             </td>
11313
11314             <td class="entry_range">
11315             </td>
11316
11317             <td class="entry_hal_version">
11318               <p>3.<wbr/>2</p>
11319             </td>
11320
11321             <td class="entry_tags">
11322               <ul class="entry_tags">
11323                   <li><a href="#tag_BC">BC</a></li>
11324               </ul>
11325             </td>
11326
11327           </tr>
11328
11329
11330           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11331            <!-- end of entry -->
11332         
11333                 
11334           <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
11335             <td class="entry_name
11336              " rowspan="1">
11337               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11338             </td>
11339             <td class="entry_type">
11340                 <span class="entry_type_name">int64</span>
11341
11342               <span class="entry_type_visibility"> [ndk_public]</span>
11343
11344
11345               <span class="entry_type_hwlevel">[legacy] </span>
11346
11347
11348
11349
11350             </td> <!-- entry_type -->
11351
11352             <td class="entry_description">
11353               <p>Time GPS fix was made to include in
11354 EXIF.<wbr/></p>
11355             </td>
11356
11357             <td class="entry_units">
11358               UTC in seconds since January 1,<wbr/> 1970
11359             </td>
11360
11361             <td class="entry_range">
11362             </td>
11363
11364             <td class="entry_hal_version">
11365               <p>3.<wbr/>2</p>
11366             </td>
11367
11368             <td class="entry_tags">
11369               <ul class="entry_tags">
11370                   <li><a href="#tag_BC">BC</a></li>
11371               </ul>
11372             </td>
11373
11374           </tr>
11375
11376
11377           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11378            <!-- end of entry -->
11379         
11380                 
11381           <tr class="entry" id="controls_android.jpeg.orientation">
11382             <td class="entry_name
11383              " rowspan="3">
11384               android.<wbr/>jpeg.<wbr/>orientation
11385             </td>
11386             <td class="entry_type">
11387                 <span class="entry_type_name">int32</span>
11388
11389               <span class="entry_type_visibility"> [public]</span>
11390
11391
11392               <span class="entry_type_hwlevel">[legacy] </span>
11393
11394
11395
11396
11397             </td> <!-- entry_type -->
11398
11399             <td class="entry_description">
11400               <p>The orientation for a JPEG image.<wbr/></p>
11401             </td>
11402
11403             <td class="entry_units">
11404               Degrees in multiples of 90
11405             </td>
11406
11407             <td class="entry_range">
11408               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11409             </td>
11410
11411             <td class="entry_hal_version">
11412               <p>3.<wbr/>2</p>
11413             </td>
11414
11415             <td class="entry_tags">
11416               <ul class="entry_tags">
11417                   <li><a href="#tag_BC">BC</a></li>
11418               </ul>
11419             </td>
11420
11421           </tr>
11422           <tr class="entries_header">
11423             <th class="th_details" colspan="6">Details</th>
11424           </tr>
11425           <tr class="entry_cont">
11426             <td class="entry_details" colspan="6">
11427               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11428 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11429 upright.<wbr/></p>
11430 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11431 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11432 the thumbnail data will also be rotated.<wbr/></p>
11433 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11434 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11435 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
11436 sample code may be used:</p>
11437 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11438     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11439     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11440
11441     //<wbr/> Round device orientation to a multiple of 90
11442     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11443
11444     //<wbr/> Reverse device orientation for front-facing cameras
11445     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11446     if (facingFront) deviceOrientation = -deviceOrientation;
11447
11448     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11449     //<wbr/> the image upright relative to the device orientation
11450     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11451
11452     return jpegOrientation;
11453 }
11454 </code></pre>
11455             </td>
11456           </tr>
11457
11458
11459           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11460            <!-- end of entry -->
11461         
11462                 
11463           <tr class="entry" id="controls_android.jpeg.quality">
11464             <td class="entry_name
11465              " rowspan="3">
11466               android.<wbr/>jpeg.<wbr/>quality
11467             </td>
11468             <td class="entry_type">
11469                 <span class="entry_type_name">byte</span>
11470
11471               <span class="entry_type_visibility"> [public]</span>
11472
11473
11474               <span class="entry_type_hwlevel">[legacy] </span>
11475
11476
11477
11478
11479             </td> <!-- entry_type -->
11480
11481             <td class="entry_description">
11482               <p>Compression quality of the final JPEG
11483 image.<wbr/></p>
11484             </td>
11485
11486             <td class="entry_units">
11487             </td>
11488
11489             <td class="entry_range">
11490               <p>1-100; larger is higher quality</p>
11491             </td>
11492
11493             <td class="entry_hal_version">
11494               <p>3.<wbr/>2</p>
11495             </td>
11496
11497             <td class="entry_tags">
11498               <ul class="entry_tags">
11499                   <li><a href="#tag_BC">BC</a></li>
11500               </ul>
11501             </td>
11502
11503           </tr>
11504           <tr class="entries_header">
11505             <th class="th_details" colspan="6">Details</th>
11506           </tr>
11507           <tr class="entry_cont">
11508             <td class="entry_details" colspan="6">
11509               <p>85-95 is typical usage range.<wbr/></p>
11510             </td>
11511           </tr>
11512
11513
11514           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11515            <!-- end of entry -->
11516         
11517                 
11518           <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
11519             <td class="entry_name
11520              " rowspan="1">
11521               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11522             </td>
11523             <td class="entry_type">
11524                 <span class="entry_type_name">byte</span>
11525
11526               <span class="entry_type_visibility"> [public]</span>
11527
11528
11529               <span class="entry_type_hwlevel">[legacy] </span>
11530
11531
11532
11533
11534             </td> <!-- entry_type -->
11535
11536             <td class="entry_description">
11537               <p>Compression quality of JPEG
11538 thumbnail.<wbr/></p>
11539             </td>
11540
11541             <td class="entry_units">
11542             </td>
11543
11544             <td class="entry_range">
11545               <p>1-100; larger is higher quality</p>
11546             </td>
11547
11548             <td class="entry_hal_version">
11549               <p>3.<wbr/>2</p>
11550             </td>
11551
11552             <td class="entry_tags">
11553               <ul class="entry_tags">
11554                   <li><a href="#tag_BC">BC</a></li>
11555               </ul>
11556             </td>
11557
11558           </tr>
11559
11560
11561           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11562            <!-- end of entry -->
11563         
11564                 
11565           <tr class="entry" id="controls_android.jpeg.thumbnailSize">
11566             <td class="entry_name
11567              " rowspan="5">
11568               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11569             </td>
11570             <td class="entry_type">
11571                 <span class="entry_type_name">int32</span>
11572                 <span class="entry_type_container">x</span>
11573
11574                 <span class="entry_type_array">
11575                   2
11576                 </span>
11577               <span class="entry_type_visibility"> [public as size]</span>
11578
11579
11580               <span class="entry_type_hwlevel">[legacy] </span>
11581
11582
11583
11584
11585             </td> <!-- entry_type -->
11586
11587             <td class="entry_description">
11588               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11589             </td>
11590
11591             <td class="entry_units">
11592             </td>
11593
11594             <td class="entry_range">
11595               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11596             </td>
11597
11598             <td class="entry_hal_version">
11599               <p>3.<wbr/>2</p>
11600             </td>
11601
11602             <td class="entry_tags">
11603               <ul class="entry_tags">
11604                   <li><a href="#tag_BC">BC</a></li>
11605               </ul>
11606             </td>
11607
11608           </tr>
11609           <tr class="entries_header">
11610             <th class="th_details" colspan="6">Details</th>
11611           </tr>
11612           <tr class="entry_cont">
11613             <td class="entry_details" colspan="6">
11614               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11615 but the captured JPEG will still be a valid image.<wbr/></p>
11616 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11617 should have the same aspect ratio as the main JPEG output.<wbr/></p>
11618 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11619 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11620 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
11621 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11622 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11623 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11624 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11625 the camera device will handle thumbnail rotation in one of the following ways:</p>
11626 <ul>
11627 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11628   and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11629 <li>Rotate the jpeg and thumbnail image data and not set
11630   <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11631   case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11632   capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11633   orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11634   size.<wbr/></li>
11635 </ul>
11636             </td>
11637           </tr>
11638
11639           <tr class="entries_header">
11640             <th class="th_details" colspan="6">HAL Implementation Details</th>
11641           </tr>
11642           <tr class="entry_cont">
11643             <td class="entry_details" colspan="6">
11644               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11645 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11646 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11647 thumbnail image cropping.<wbr/></p>
11648             </td>
11649           </tr>
11650
11651           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11652            <!-- end of entry -->
11653         
11654         
11655
11656       <!-- end of kind -->
11657       </tbody>
11658       <tr><td colspan="7" class="kind">static</td></tr>
11659
11660       <thead class="entries_header">
11661         <tr>
11662           <th class="th_name">Property Name</th>
11663           <th class="th_type">Type</th>
11664           <th class="th_description">Description</th>
11665           <th class="th_units">Units</th>
11666           <th class="th_range">Range</th>
11667           <th class="th_hal_version">Initial HIDL HAL version</th>
11668           <th class="th_tags">Tags</th>
11669         </tr>
11670       </thead>
11671
11672       <tbody>
11673
11674         
11675
11676         
11677
11678         
11679
11680         
11681
11682                 
11683           <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
11684             <td class="entry_name
11685              " rowspan="3">
11686               android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
11687             </td>
11688             <td class="entry_type">
11689                 <span class="entry_type_name">int32</span>
11690                 <span class="entry_type_container">x</span>
11691
11692                 <span class="entry_type_array">
11693                   2 x n
11694                 </span>
11695               <span class="entry_type_visibility"> [public as size]</span>
11696
11697
11698               <span class="entry_type_hwlevel">[legacy] </span>
11699
11700
11701
11702
11703             </td> <!-- entry_type -->
11704
11705             <td class="entry_description">
11706               <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
11707 camera device.<wbr/></p>
11708             </td>
11709
11710             <td class="entry_units">
11711             </td>
11712
11713             <td class="entry_range">
11714             </td>
11715
11716             <td class="entry_hal_version">
11717               <p>3.<wbr/>2</p>
11718             </td>
11719
11720             <td class="entry_tags">
11721               <ul class="entry_tags">
11722                   <li><a href="#tag_BC">BC</a></li>
11723               </ul>
11724             </td>
11725
11726           </tr>
11727           <tr class="entries_header">
11728             <th class="th_details" colspan="6">Details</th>
11729           </tr>
11730           <tr class="entry_cont">
11731             <td class="entry_details" colspan="6">
11732               <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
11733 thumbnail should be generated.<wbr/></p>
11734 <p>Below condiditions will be satisfied for this size list:</p>
11735 <ul>
11736 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
11737 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
11738 <li>The aspect ratio of the largest thumbnail size will be same as the
11739 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/>
11740 The largest size is defined as the size that has the largest pixel area
11741 in a given size list.<wbr/></li>
11742 <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
11743 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
11744 and vice versa.<wbr/></li>
11745 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
11746 </ul>
11747             </td>
11748           </tr>
11749
11750
11751           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11752            <!-- end of entry -->
11753         
11754                 
11755           <tr class="entry" id="static_android.jpeg.maxSize">
11756             <td class="entry_name
11757              " rowspan="3">
11758               android.<wbr/>jpeg.<wbr/>max<wbr/>Size
11759             </td>
11760             <td class="entry_type">
11761                 <span class="entry_type_name">int32</span>
11762
11763               <span class="entry_type_visibility"> [system]</span>
11764
11765
11766
11767
11768
11769
11770             </td> <!-- entry_type -->
11771
11772             <td class="entry_description">
11773               <p>Maximum size in bytes for the compressed
11774 JPEG buffer</p>
11775             </td>
11776
11777             <td class="entry_units">
11778             </td>
11779
11780             <td class="entry_range">
11781               <p>Must be large enough to fit any JPEG produced by
11782 the camera</p>
11783             </td>
11784
11785             <td class="entry_hal_version">
11786               <p>3.<wbr/>2</p>
11787             </td>
11788
11789             <td class="entry_tags">
11790             </td>
11791
11792           </tr>
11793           <tr class="entries_header">
11794             <th class="th_details" colspan="6">Details</th>
11795           </tr>
11796           <tr class="entry_cont">
11797             <td class="entry_details" colspan="6">
11798               <p>This is used for sizing the gralloc buffers for
11799 JPEG</p>
11800             </td>
11801           </tr>
11802
11803
11804           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11805            <!-- end of entry -->
11806         
11807         
11808
11809       <!-- end of kind -->
11810       </tbody>
11811       <tr><td colspan="7" class="kind">dynamic</td></tr>
11812
11813       <thead class="entries_header">
11814         <tr>
11815           <th class="th_name">Property Name</th>
11816           <th class="th_type">Type</th>
11817           <th class="th_description">Description</th>
11818           <th class="th_units">Units</th>
11819           <th class="th_range">Range</th>
11820           <th class="th_hal_version">Initial HIDL HAL version</th>
11821           <th class="th_tags">Tags</th>
11822         </tr>
11823       </thead>
11824
11825       <tbody>
11826
11827         
11828
11829         
11830
11831         
11832
11833         
11834
11835                 
11836           <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
11837             <td class="entry_name
11838              " rowspan="3">
11839               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11840             </td>
11841             <td class="entry_type">
11842                 <span class="entry_type_name">byte</span>
11843
11844               <span class="entry_type_visibility"> [java_public as location]</span>
11845
11846               <span class="entry_type_synthetic">[synthetic] </span>
11847
11848               <span class="entry_type_hwlevel">[legacy] </span>
11849
11850
11851
11852
11853             </td> <!-- entry_type -->
11854
11855             <td class="entry_description">
11856               <p>A location object to use when generating image GPS metadata.<wbr/></p>
11857             </td>
11858
11859             <td class="entry_units">
11860             </td>
11861
11862             <td class="entry_range">
11863             </td>
11864
11865             <td class="entry_hal_version">
11866               <p>3.<wbr/>2</p>
11867             </td>
11868
11869             <td class="entry_tags">
11870             </td>
11871
11872           </tr>
11873           <tr class="entries_header">
11874             <th class="th_details" colspan="6">Details</th>
11875           </tr>
11876           <tr class="entry_cont">
11877             <td class="entry_details" colspan="6">
11878               <p>Setting a location object in a request will include the GPS coordinates of the location
11879 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11880 viewed by anyone who receives the JPEG image.<wbr/></p>
11881             </td>
11882           </tr>
11883
11884
11885           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11886            <!-- end of entry -->
11887         
11888                 
11889           <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
11890             <td class="entry_name
11891              " rowspan="1">
11892               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11893             </td>
11894             <td class="entry_type">
11895                 <span class="entry_type_name">double</span>
11896                 <span class="entry_type_container">x</span>
11897
11898                 <span class="entry_type_array">
11899                   3
11900                 </span>
11901               <span class="entry_type_visibility"> [ndk_public]</span>
11902
11903
11904               <span class="entry_type_hwlevel">[legacy] </span>
11905
11906
11907                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11908
11909
11910             </td> <!-- entry_type -->
11911
11912             <td class="entry_description">
11913               <p>GPS coordinates to include in output JPEG
11914 EXIF.<wbr/></p>
11915             </td>
11916
11917             <td class="entry_units">
11918             </td>
11919
11920             <td class="entry_range">
11921               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11922             </td>
11923
11924             <td class="entry_hal_version">
11925               <p>3.<wbr/>2</p>
11926             </td>
11927
11928             <td class="entry_tags">
11929               <ul class="entry_tags">
11930                   <li><a href="#tag_BC">BC</a></li>
11931               </ul>
11932             </td>
11933
11934           </tr>
11935
11936
11937           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11938            <!-- end of entry -->
11939         
11940                 
11941           <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
11942             <td class="entry_name
11943              " rowspan="1">
11944               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11945             </td>
11946             <td class="entry_type">
11947                 <span class="entry_type_name">byte</span>
11948
11949               <span class="entry_type_visibility"> [ndk_public as string]</span>
11950
11951
11952               <span class="entry_type_hwlevel">[legacy] </span>
11953
11954
11955
11956
11957             </td> <!-- entry_type -->
11958
11959             <td class="entry_description">
11960               <p>32 characters describing GPS algorithm to
11961 include in EXIF.<wbr/></p>
11962             </td>
11963
11964             <td class="entry_units">
11965               UTF-8 null-terminated string
11966             </td>
11967
11968             <td class="entry_range">
11969             </td>
11970
11971             <td class="entry_hal_version">
11972               <p>3.<wbr/>2</p>
11973             </td>
11974
11975             <td class="entry_tags">
11976               <ul class="entry_tags">
11977                   <li><a href="#tag_BC">BC</a></li>
11978               </ul>
11979             </td>
11980
11981           </tr>
11982
11983
11984           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11985            <!-- end of entry -->
11986         
11987                 
11988           <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
11989             <td class="entry_name
11990              " rowspan="1">
11991               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11992             </td>
11993             <td class="entry_type">
11994                 <span class="entry_type_name">int64</span>
11995
11996               <span class="entry_type_visibility"> [ndk_public]</span>
11997
11998
11999               <span class="entry_type_hwlevel">[legacy] </span>
12000
12001
12002
12003
12004             </td> <!-- entry_type -->
12005
12006             <td class="entry_description">
12007               <p>Time GPS fix was made to include in
12008 EXIF.<wbr/></p>
12009             </td>
12010
12011             <td class="entry_units">
12012               UTC in seconds since January 1,<wbr/> 1970
12013             </td>
12014
12015             <td class="entry_range">
12016             </td>
12017
12018             <td class="entry_hal_version">
12019               <p>3.<wbr/>2</p>
12020             </td>
12021
12022             <td class="entry_tags">
12023               <ul class="entry_tags">
12024                   <li><a href="#tag_BC">BC</a></li>
12025               </ul>
12026             </td>
12027
12028           </tr>
12029
12030
12031           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12032            <!-- end of entry -->
12033         
12034                 
12035           <tr class="entry" id="dynamic_android.jpeg.orientation">
12036             <td class="entry_name
12037              " rowspan="3">
12038               android.<wbr/>jpeg.<wbr/>orientation
12039             </td>
12040             <td class="entry_type">
12041                 <span class="entry_type_name">int32</span>
12042
12043               <span class="entry_type_visibility"> [public]</span>
12044
12045
12046               <span class="entry_type_hwlevel">[legacy] </span>
12047
12048
12049
12050
12051             </td> <!-- entry_type -->
12052
12053             <td class="entry_description">
12054               <p>The orientation for a JPEG image.<wbr/></p>
12055             </td>
12056
12057             <td class="entry_units">
12058               Degrees in multiples of 90
12059             </td>
12060
12061             <td class="entry_range">
12062               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
12063             </td>
12064
12065             <td class="entry_hal_version">
12066               <p>3.<wbr/>2</p>
12067             </td>
12068
12069             <td class="entry_tags">
12070               <ul class="entry_tags">
12071                   <li><a href="#tag_BC">BC</a></li>
12072               </ul>
12073             </td>
12074
12075           </tr>
12076           <tr class="entries_header">
12077             <th class="th_details" colspan="6">Details</th>
12078           </tr>
12079           <tr class="entry_cont">
12080             <td class="entry_details" colspan="6">
12081               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
12082 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
12083 upright.<wbr/></p>
12084 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
12085 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
12086 the thumbnail data will also be rotated.<wbr/></p>
12087 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
12088 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
12089 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
12090 sample code may be used:</p>
12091 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
12092     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
12093     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
12094
12095     //<wbr/> Round device orientation to a multiple of 90
12096     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
12097
12098     //<wbr/> Reverse device orientation for front-facing cameras
12099     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
12100     if (facingFront) deviceOrientation = -deviceOrientation;
12101
12102     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
12103     //<wbr/> the image upright relative to the device orientation
12104     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
12105
12106     return jpegOrientation;
12107 }
12108 </code></pre>
12109             </td>
12110           </tr>
12111
12112
12113           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12114            <!-- end of entry -->
12115         
12116                 
12117           <tr class="entry" id="dynamic_android.jpeg.quality">
12118             <td class="entry_name
12119              " rowspan="3">
12120               android.<wbr/>jpeg.<wbr/>quality
12121             </td>
12122             <td class="entry_type">
12123                 <span class="entry_type_name">byte</span>
12124
12125               <span class="entry_type_visibility"> [public]</span>
12126
12127
12128               <span class="entry_type_hwlevel">[legacy] </span>
12129
12130
12131
12132
12133             </td> <!-- entry_type -->
12134
12135             <td class="entry_description">
12136               <p>Compression quality of the final JPEG
12137 image.<wbr/></p>
12138             </td>
12139
12140             <td class="entry_units">
12141             </td>
12142
12143             <td class="entry_range">
12144               <p>1-100; larger is higher quality</p>
12145             </td>
12146
12147             <td class="entry_hal_version">
12148               <p>3.<wbr/>2</p>
12149             </td>
12150
12151             <td class="entry_tags">
12152               <ul class="entry_tags">
12153                   <li><a href="#tag_BC">BC</a></li>
12154               </ul>
12155             </td>
12156
12157           </tr>
12158           <tr class="entries_header">
12159             <th class="th_details" colspan="6">Details</th>
12160           </tr>
12161           <tr class="entry_cont">
12162             <td class="entry_details" colspan="6">
12163               <p>85-95 is typical usage range.<wbr/></p>
12164             </td>
12165           </tr>
12166
12167
12168           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12169            <!-- end of entry -->
12170         
12171                 
12172           <tr class="entry" id="dynamic_android.jpeg.size">
12173             <td class="entry_name
12174              " rowspan="3">
12175               android.<wbr/>jpeg.<wbr/>size
12176             </td>
12177             <td class="entry_type">
12178                 <span class="entry_type_name">int32</span>
12179
12180               <span class="entry_type_visibility"> [system]</span>
12181
12182
12183
12184
12185
12186
12187             </td> <!-- entry_type -->
12188
12189             <td class="entry_description">
12190               <p>The size of the compressed JPEG image,<wbr/> in
12191 bytes</p>
12192             </td>
12193
12194             <td class="entry_units">
12195             </td>
12196
12197             <td class="entry_range">
12198               <p>&gt;= 0</p>
12199             </td>
12200
12201             <td class="entry_hal_version">
12202               <p>3.<wbr/>2</p>
12203             </td>
12204
12205             <td class="entry_tags">
12206               <ul class="entry_tags">
12207                   <li><a href="#tag_FUTURE">FUTURE</a></li>
12208               </ul>
12209             </td>
12210
12211           </tr>
12212           <tr class="entries_header">
12213             <th class="th_details" colspan="6">Details</th>
12214           </tr>
12215           <tr class="entry_cont">
12216             <td class="entry_details" colspan="6">
12217               <p>If no JPEG output is produced for the request,<wbr/>
12218 this must be 0.<wbr/></p>
12219 <p>Otherwise,<wbr/> this describes the real size of the compressed
12220 JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
12221 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
12222 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
12223 the JPEG stream will be 1000000 bytes,<wbr/> of which the first
12224 500000 make up the real data.<wbr/></p>
12225             </td>
12226           </tr>
12227
12228
12229           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12230            <!-- end of entry -->
12231         
12232                 
12233           <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
12234             <td class="entry_name
12235              " rowspan="1">
12236               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
12237             </td>
12238             <td class="entry_type">
12239                 <span class="entry_type_name">byte</span>
12240
12241               <span class="entry_type_visibility"> [public]</span>
12242
12243
12244               <span class="entry_type_hwlevel">[legacy] </span>
12245
12246
12247
12248
12249             </td> <!-- entry_type -->
12250
12251             <td class="entry_description">
12252               <p>Compression quality of JPEG
12253 thumbnail.<wbr/></p>
12254             </td>
12255
12256             <td class="entry_units">
12257             </td>
12258
12259             <td class="entry_range">
12260               <p>1-100; larger is higher quality</p>
12261             </td>
12262
12263             <td class="entry_hal_version">
12264               <p>3.<wbr/>2</p>
12265             </td>
12266
12267             <td class="entry_tags">
12268               <ul class="entry_tags">
12269                   <li><a href="#tag_BC">BC</a></li>
12270               </ul>
12271             </td>
12272
12273           </tr>
12274
12275
12276           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12277            <!-- end of entry -->
12278         
12279                 
12280           <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
12281             <td class="entry_name
12282              " rowspan="5">
12283               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
12284             </td>
12285             <td class="entry_type">
12286                 <span class="entry_type_name">int32</span>
12287                 <span class="entry_type_container">x</span>
12288
12289                 <span class="entry_type_array">
12290                   2
12291                 </span>
12292               <span class="entry_type_visibility"> [public as size]</span>
12293
12294
12295               <span class="entry_type_hwlevel">[legacy] </span>
12296
12297
12298
12299
12300             </td> <!-- entry_type -->
12301
12302             <td class="entry_description">
12303               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
12304             </td>
12305
12306             <td class="entry_units">
12307             </td>
12308
12309             <td class="entry_range">
12310               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
12311             </td>
12312
12313             <td class="entry_hal_version">
12314               <p>3.<wbr/>2</p>
12315             </td>
12316
12317             <td class="entry_tags">
12318               <ul class="entry_tags">
12319                   <li><a href="#tag_BC">BC</a></li>
12320               </ul>
12321             </td>
12322
12323           </tr>
12324           <tr class="entries_header">
12325             <th class="th_details" colspan="6">Details</th>
12326           </tr>
12327           <tr class="entry_cont">
12328             <td class="entry_details" colspan="6">
12329               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
12330 but the captured JPEG will still be a valid image.<wbr/></p>
12331 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
12332 should have the same aspect ratio as the main JPEG output.<wbr/></p>
12333 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
12334 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
12335 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
12336 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
12337 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
12338 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
12339 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
12340 the camera device will handle thumbnail rotation in one of the following ways:</p>
12341 <ul>
12342 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
12343   and keep jpeg and thumbnail image data unrotated.<wbr/></li>
12344 <li>Rotate the jpeg and thumbnail image data and not set
12345   <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
12346   case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
12347   capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
12348   orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
12349   size.<wbr/></li>
12350 </ul>
12351             </td>
12352           </tr>
12353
12354           <tr class="entries_header">
12355             <th class="th_details" colspan="6">HAL Implementation Details</th>
12356           </tr>
12357           <tr class="entry_cont">
12358             <td class="entry_details" colspan="6">
12359               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
12360 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
12361 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
12362 thumbnail image cropping.<wbr/></p>
12363             </td>
12364           </tr>
12365
12366           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12367            <!-- end of entry -->
12368         
12369         
12370
12371       <!-- end of kind -->
12372       </tbody>
12373
12374   <!-- end of section -->
12375   <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
12376
12377
12378       <tr><td colspan="7" class="kind">controls</td></tr>
12379
12380       <thead class="entries_header">
12381         <tr>
12382           <th class="th_name">Property Name</th>
12383           <th class="th_type">Type</th>
12384           <th class="th_description">Description</th>
12385           <th class="th_units">Units</th>
12386           <th class="th_range">Range</th>
12387           <th class="th_hal_version">Initial HIDL HAL version</th>
12388           <th class="th_tags">Tags</th>
12389         </tr>
12390       </thead>
12391
12392       <tbody>
12393
12394         
12395
12396         
12397
12398         
12399
12400         
12401
12402                 
12403           <tr class="entry" id="controls_android.lens.aperture">
12404             <td class="entry_name
12405              " rowspan="3">
12406               android.<wbr/>lens.<wbr/>aperture
12407             </td>
12408             <td class="entry_type">
12409                 <span class="entry_type_name">float</span>
12410
12411               <span class="entry_type_visibility"> [public]</span>
12412
12413
12414               <span class="entry_type_hwlevel">[full] </span>
12415
12416
12417
12418
12419             </td> <!-- entry_type -->
12420
12421             <td class="entry_description">
12422               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12423 effective aperture diameter.<wbr/></p>
12424             </td>
12425
12426             <td class="entry_units">
12427               The f-number (f/<wbr/>N)
12428             </td>
12429
12430             <td class="entry_range">
12431               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12432             </td>
12433
12434             <td class="entry_hal_version">
12435               <p>3.<wbr/>2</p>
12436             </td>
12437
12438             <td class="entry_tags">
12439               <ul class="entry_tags">
12440                   <li><a href="#tag_V1">V1</a></li>
12441               </ul>
12442             </td>
12443
12444           </tr>
12445           <tr class="entries_header">
12446             <th class="th_details" colspan="6">Details</th>
12447           </tr>
12448           <tr class="entry_cont">
12449             <td class="entry_details" colspan="6">
12450               <p>Setting this value is only supported on the camera devices that have a variable
12451 aperture lens.<wbr/></p>
12452 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12453 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12454 <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>
12455 to achieve manual exposure control.<wbr/></p>
12456 <p>The requested aperture value may take several frames to reach the
12457 requested value; the camera device will report the current (intermediate)
12458 aperture size in capture result metadata while the aperture is changing.<wbr/>
12459 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>
12460 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12461 the ON modes,<wbr/> this will be overridden by the camera device
12462 auto-exposure algorithm,<wbr/> the overridden values are then provided
12463 back to the user in the corresponding result.<wbr/></p>
12464             </td>
12465           </tr>
12466
12467
12468           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12469            <!-- end of entry -->
12470         
12471                 
12472           <tr class="entry" id="controls_android.lens.filterDensity">
12473             <td class="entry_name
12474              " rowspan="3">
12475               android.<wbr/>lens.<wbr/>filter<wbr/>Density
12476             </td>
12477             <td class="entry_type">
12478                 <span class="entry_type_name">float</span>
12479
12480               <span class="entry_type_visibility"> [public]</span>
12481
12482
12483               <span class="entry_type_hwlevel">[full] </span>
12484
12485
12486
12487
12488             </td> <!-- entry_type -->
12489
12490             <td class="entry_description">
12491               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12492             </td>
12493
12494             <td class="entry_units">
12495               Exposure Value (EV)
12496             </td>
12497
12498             <td class="entry_range">
12499               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12500             </td>
12501
12502             <td class="entry_hal_version">
12503               <p>3.<wbr/>2</p>
12504             </td>
12505
12506             <td class="entry_tags">
12507               <ul class="entry_tags">
12508                   <li><a href="#tag_V1">V1</a></li>
12509               </ul>
12510             </td>
12511
12512           </tr>
12513           <tr class="entries_header">
12514             <th class="th_details" colspan="6">Details</th>
12515           </tr>
12516           <tr class="entry_cont">
12517             <td class="entry_details" colspan="6">
12518               <p>This control will not be supported on most camera devices.<wbr/></p>
12519 <p>Lens filters are typically used to lower the amount of light the
12520 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12521 step is the standard logarithmic representation,<wbr/> which are
12522 non-negative,<wbr/> and inversely proportional to the amount of light
12523 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
12524 in no reduction of the incoming light,<wbr/> and setting this to 2 would
12525 mean that the filter is set to reduce incoming light by two stops
12526 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12527 <p>It may take several frames before the lens filter density changes
12528 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12529 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12530             </td>
12531           </tr>
12532
12533
12534           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12535            <!-- end of entry -->
12536         
12537                 
12538           <tr class="entry" id="controls_android.lens.focalLength">
12539             <td class="entry_name
12540              " rowspan="3">
12541               android.<wbr/>lens.<wbr/>focal<wbr/>Length
12542             </td>
12543             <td class="entry_type">
12544                 <span class="entry_type_name">float</span>
12545
12546               <span class="entry_type_visibility"> [public]</span>
12547
12548
12549               <span class="entry_type_hwlevel">[legacy] </span>
12550
12551
12552
12553
12554             </td> <!-- entry_type -->
12555
12556             <td class="entry_description">
12557               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12558             </td>
12559
12560             <td class="entry_units">
12561               Millimeters
12562             </td>
12563
12564             <td class="entry_range">
12565               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12566             </td>
12567
12568             <td class="entry_hal_version">
12569               <p>3.<wbr/>2</p>
12570             </td>
12571
12572             <td class="entry_tags">
12573               <ul class="entry_tags">
12574                   <li><a href="#tag_V1">V1</a></li>
12575               </ul>
12576             </td>
12577
12578           </tr>
12579           <tr class="entries_header">
12580             <th class="th_details" colspan="6">Details</th>
12581           </tr>
12582           <tr class="entry_cont">
12583             <td class="entry_details" colspan="6">
12584               <p>This setting controls the physical focal length of the camera
12585 device's lens.<wbr/> Changing the focal length changes the field of
12586 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12587 <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
12588 setting won't be applied instantaneously,<wbr/> and it may take several
12589 frames before the lens can change to the requested focal length.<wbr/>
12590 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12591 be set to MOVING.<wbr/></p>
12592 <p>Optical zoom will not be supported on most devices.<wbr/></p>
12593             </td>
12594           </tr>
12595
12596
12597           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12598            <!-- end of entry -->
12599         
12600                 
12601           <tr class="entry" id="controls_android.lens.focusDistance">
12602             <td class="entry_name
12603              " rowspan="3">
12604               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
12605             </td>
12606             <td class="entry_type">
12607                 <span class="entry_type_name">float</span>
12608
12609               <span class="entry_type_visibility"> [public]</span>
12610
12611
12612               <span class="entry_type_hwlevel">[full] </span>
12613
12614
12615
12616
12617             </td> <!-- entry_type -->
12618
12619             <td class="entry_description">
12620               <p>Desired distance to plane of sharpest focus,<wbr/>
12621 measured from frontmost surface of the lens.<wbr/></p>
12622             </td>
12623
12624             <td class="entry_units">
12625               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12626             </td>
12627
12628             <td class="entry_range">
12629               <p>&gt;= 0</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_BC">BC</a></li>
12639                   <li><a href="#tag_V1">V1</a></li>
12640               </ul>
12641             </td>
12642
12643           </tr>
12644           <tr class="entries_header">
12645             <th class="th_details" colspan="6">Details</th>
12646           </tr>
12647           <tr class="entry_cont">
12648             <td class="entry_details" colspan="6">
12649               <p>This control can be used for setting manual focus,<wbr/> on devices that support
12650 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
12651 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
12652 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
12653 <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>
12654 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
12655 instantaneously,<wbr/> and it may take several frames before the lens
12656 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
12657 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12658 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
12659 for infinity focus.<wbr/></p>
12660             </td>
12661           </tr>
12662
12663
12664           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12665            <!-- end of entry -->
12666         
12667                 
12668           <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
12669             <td class="entry_name
12670              " rowspan="3">
12671               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12672             </td>
12673             <td class="entry_type">
12674                 <span class="entry_type_name entry_type_name_enum">byte</span>
12675
12676               <span class="entry_type_visibility"> [public]</span>
12677
12678
12679               <span class="entry_type_hwlevel">[limited] </span>
12680
12681
12682
12683                 <ul class="entry_type_enum">
12684                   <li>
12685                     <span class="entry_type_enum_name">OFF (v3.2)</span>
12686                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12687                   </li>
12688                   <li>
12689                     <span class="entry_type_enum_name">ON (v3.2)</span>
12690                     <span class="entry_type_enum_optional">[optional]</span>
12691                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12692                   </li>
12693                 </ul>
12694
12695             </td> <!-- entry_type -->
12696
12697             <td class="entry_description">
12698               <p>Sets whether the camera device uses optical image stabilization (OIS)
12699 when capturing images.<wbr/></p>
12700             </td>
12701
12702             <td class="entry_units">
12703             </td>
12704
12705             <td class="entry_range">
12706               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12707             </td>
12708
12709             <td class="entry_hal_version">
12710               <p>3.<wbr/>2</p>
12711             </td>
12712
12713             <td class="entry_tags">
12714               <ul class="entry_tags">
12715                   <li><a href="#tag_V1">V1</a></li>
12716               </ul>
12717             </td>
12718
12719           </tr>
12720           <tr class="entries_header">
12721             <th class="th_details" colspan="6">Details</th>
12722           </tr>
12723           <tr class="entry_cont">
12724             <td class="entry_details" colspan="6">
12725               <p>OIS is used to compensate for motion blur due to small
12726 movements of the camera during capture.<wbr/> Unlike digital image
12727 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12728 makes use of mechanical elements to stabilize the camera
12729 sensor,<wbr/> and thus allows for longer exposure times before
12730 camera shake becomes apparent.<wbr/></p>
12731 <p>Switching between different optical stabilization modes may take several
12732 frames to initialize,<wbr/> the camera device will report the current mode in
12733 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12734 optical stabilization modes in the first several capture results may still
12735 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12736 <p>If a camera device supports both OIS and digital image stabilization
12737 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12738 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12739 <p>Not all devices will support OIS; see
12740 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12741 available controls.<wbr/></p>
12742             </td>
12743           </tr>
12744
12745
12746           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12747            <!-- end of entry -->
12748         
12749         
12750
12751       <!-- end of kind -->
12752       </tbody>
12753       <tr><td colspan="7" class="kind">static</td></tr>
12754
12755       <thead class="entries_header">
12756         <tr>
12757           <th class="th_name">Property Name</th>
12758           <th class="th_type">Type</th>
12759           <th class="th_description">Description</th>
12760           <th class="th_units">Units</th>
12761           <th class="th_range">Range</th>
12762           <th class="th_hal_version">Initial HIDL HAL version</th>
12763           <th class="th_tags">Tags</th>
12764         </tr>
12765       </thead>
12766
12767       <tbody>
12768
12769         
12770
12771         
12772
12773         
12774
12775         
12776                 
12777             
12778
12779                 
12780           <tr class="entry" id="static_android.lens.info.availableApertures">
12781             <td class="entry_name
12782              " rowspan="3">
12783               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
12784             </td>
12785             <td class="entry_type">
12786                 <span class="entry_type_name">float</span>
12787                 <span class="entry_type_container">x</span>
12788
12789                 <span class="entry_type_array">
12790                   n
12791                 </span>
12792               <span class="entry_type_visibility"> [public]</span>
12793
12794
12795               <span class="entry_type_hwlevel">[full] </span>
12796
12797
12798
12799
12800             </td> <!-- entry_type -->
12801
12802             <td class="entry_description">
12803               <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
12804 supported by this camera device.<wbr/></p>
12805             </td>
12806
12807             <td class="entry_units">
12808               The aperture f-number
12809             </td>
12810
12811             <td class="entry_range">
12812             </td>
12813
12814             <td class="entry_hal_version">
12815               <p>3.<wbr/>2</p>
12816             </td>
12817
12818             <td class="entry_tags">
12819               <ul class="entry_tags">
12820                   <li><a href="#tag_V1">V1</a></li>
12821               </ul>
12822             </td>
12823
12824           </tr>
12825           <tr class="entries_header">
12826             <th class="th_details" colspan="6">Details</th>
12827           </tr>
12828           <tr class="entry_cont">
12829             <td class="entry_details" colspan="6">
12830               <p>If the camera device doesn't support a variable lens aperture,<wbr/>
12831 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
12832 <p>If the camera device supports a variable aperture,<wbr/> the aperture values
12833 in this list will be sorted in ascending order.<wbr/></p>
12834             </td>
12835           </tr>
12836
12837
12838           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12839            <!-- end of entry -->
12840         
12841                 
12842           <tr class="entry" id="static_android.lens.info.availableFilterDensities">
12843             <td class="entry_name
12844              " rowspan="3">
12845               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
12846             </td>
12847             <td class="entry_type">
12848                 <span class="entry_type_name">float</span>
12849                 <span class="entry_type_container">x</span>
12850
12851                 <span class="entry_type_array">
12852                   n
12853                 </span>
12854               <span class="entry_type_visibility"> [public]</span>
12855
12856
12857               <span class="entry_type_hwlevel">[full] </span>
12858
12859
12860
12861
12862             </td> <!-- entry_type -->
12863
12864             <td class="entry_description">
12865               <p>List of neutral density filter values for
12866 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
12867             </td>
12868
12869             <td class="entry_units">
12870               Exposure value (EV)
12871             </td>
12872
12873             <td class="entry_range">
12874               <p>Values are &gt;= 0</p>
12875             </td>
12876
12877             <td class="entry_hal_version">
12878               <p>3.<wbr/>2</p>
12879             </td>
12880
12881             <td class="entry_tags">
12882               <ul class="entry_tags">
12883                   <li><a href="#tag_V1">V1</a></li>
12884               </ul>
12885             </td>
12886
12887           </tr>
12888           <tr class="entries_header">
12889             <th class="th_details" colspan="6">Details</th>
12890           </tr>
12891           <tr class="entry_cont">
12892             <td class="entry_details" colspan="6">
12893               <p>If a neutral density filter is not supported by this camera device,<wbr/>
12894 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
12895 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
12896             </td>
12897           </tr>
12898
12899
12900           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12901            <!-- end of entry -->
12902         
12903                 
12904           <tr class="entry" id="static_android.lens.info.availableFocalLengths">
12905             <td class="entry_name
12906              " rowspan="3">
12907               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
12908             </td>
12909             <td class="entry_type">
12910                 <span class="entry_type_name">float</span>
12911                 <span class="entry_type_container">x</span>
12912
12913                 <span class="entry_type_array">
12914                   n
12915                 </span>
12916               <span class="entry_type_visibility"> [public]</span>
12917
12918
12919               <span class="entry_type_hwlevel">[legacy] </span>
12920
12921
12922                 <div class="entry_type_notes">The list of available focal lengths</div>
12923
12924
12925             </td> <!-- entry_type -->
12926
12927             <td class="entry_description">
12928               <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
12929 device.<wbr/></p>
12930             </td>
12931
12932             <td class="entry_units">
12933               Millimeters
12934             </td>
12935
12936             <td class="entry_range">
12937               <p>Values are &gt; 0</p>
12938             </td>
12939
12940             <td class="entry_hal_version">
12941               <p>3.<wbr/>2</p>
12942             </td>
12943
12944             <td class="entry_tags">
12945               <ul class="entry_tags">
12946                   <li><a href="#tag_BC">BC</a></li>
12947                   <li><a href="#tag_V1">V1</a></li>
12948               </ul>
12949             </td>
12950
12951           </tr>
12952           <tr class="entries_header">
12953             <th class="th_details" colspan="6">Details</th>
12954           </tr>
12955           <tr class="entry_cont">
12956             <td class="entry_details" colspan="6">
12957               <p>If optical zoom is not supported,<wbr/> this list will only contain
12958 a single value corresponding to the fixed focal length of the
12959 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
12960 by the camera device,<wbr/> in ascending order.<wbr/></p>
12961             </td>
12962           </tr>
12963
12964
12965           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12966            <!-- end of entry -->
12967         
12968                 
12969           <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
12970             <td class="entry_name
12971              " rowspan="3">
12972               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
12973             </td>
12974             <td class="entry_type">
12975                 <span class="entry_type_name">byte</span>
12976                 <span class="entry_type_container">x</span>
12977
12978                 <span class="entry_type_array">
12979                   n
12980                 </span>
12981               <span class="entry_type_visibility"> [public as enumList]</span>
12982
12983
12984               <span class="entry_type_hwlevel">[limited] </span>
12985
12986
12987                 <div class="entry_type_notes">list of enums</div>
12988
12989
12990             </td> <!-- entry_type -->
12991
12992             <td class="entry_description">
12993               <p>List of optical image stabilization (OIS) modes for
12994 <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>
12995             </td>
12996
12997             <td class="entry_units">
12998             </td>
12999
13000             <td class="entry_range">
13001               <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
13002             </td>
13003
13004             <td class="entry_hal_version">
13005               <p>3.<wbr/>2</p>
13006             </td>
13007
13008             <td class="entry_tags">
13009               <ul class="entry_tags">
13010                   <li><a href="#tag_V1">V1</a></li>
13011               </ul>
13012             </td>
13013
13014           </tr>
13015           <tr class="entries_header">
13016             <th class="th_details" colspan="6">Details</th>
13017           </tr>
13018           <tr class="entry_cont">
13019             <td class="entry_details" colspan="6">
13020               <p>If OIS is not supported by a given camera device,<wbr/> this list will
13021 contain only OFF.<wbr/></p>
13022             </td>
13023           </tr>
13024
13025
13026           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13027            <!-- end of entry -->
13028         
13029                 
13030           <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
13031             <td class="entry_name
13032              " rowspan="3">
13033               android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
13034             </td>
13035             <td class="entry_type">
13036                 <span class="entry_type_name">float</span>
13037
13038               <span class="entry_type_visibility"> [public]</span>
13039
13040
13041               <span class="entry_type_hwlevel">[limited] </span>
13042
13043
13044
13045
13046             </td> <!-- entry_type -->
13047
13048             <td class="entry_description">
13049               <p>Hyperfocal distance for this lens.<wbr/></p>
13050             </td>
13051
13052             <td class="entry_units">
13053               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13054             </td>
13055
13056             <td class="entry_range">
13057               <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
13058 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>
13059             </td>
13060
13061             <td class="entry_hal_version">
13062               <p>3.<wbr/>2</p>
13063             </td>
13064
13065             <td class="entry_tags">
13066             </td>
13067
13068           </tr>
13069           <tr class="entries_header">
13070             <th class="th_details" colspan="6">Details</th>
13071           </tr>
13072           <tr class="entry_cont">
13073             <td class="entry_details" colspan="6">
13074               <p>If the lens is not fixed focus,<wbr/> the camera device will report this
13075 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>
13076             </td>
13077           </tr>
13078
13079
13080           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13081            <!-- end of entry -->
13082         
13083                 
13084           <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
13085             <td class="entry_name
13086              " rowspan="5">
13087               android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
13088             </td>
13089             <td class="entry_type">
13090                 <span class="entry_type_name">float</span>
13091
13092               <span class="entry_type_visibility"> [public]</span>
13093
13094
13095               <span class="entry_type_hwlevel">[limited] </span>
13096
13097
13098
13099
13100             </td> <!-- entry_type -->
13101
13102             <td class="entry_description">
13103               <p>Shortest distance from frontmost surface
13104 of the lens that can be brought into sharp focus.<wbr/></p>
13105             </td>
13106
13107             <td class="entry_units">
13108               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13109             </td>
13110
13111             <td class="entry_range">
13112               <p>&gt;= 0</p>
13113             </td>
13114
13115             <td class="entry_hal_version">
13116               <p>3.<wbr/>2</p>
13117             </td>
13118
13119             <td class="entry_tags">
13120               <ul class="entry_tags">
13121                   <li><a href="#tag_V1">V1</a></li>
13122               </ul>
13123             </td>
13124
13125           </tr>
13126           <tr class="entries_header">
13127             <th class="th_details" colspan="6">Details</th>
13128           </tr>
13129           <tr class="entry_cont">
13130             <td class="entry_details" colspan="6">
13131               <p>If the lens is fixed-focus,<wbr/> this will be
13132 0.<wbr/></p>
13133             </td>
13134           </tr>
13135
13136           <tr class="entries_header">
13137             <th class="th_details" colspan="6">HAL Implementation Details</th>
13138           </tr>
13139           <tr class="entry_cont">
13140             <td class="entry_details" colspan="6">
13141               <p>Mandatory for FULL devices; LIMITED devices
13142 must always set this value to 0 for fixed-focus; and may omit
13143 the minimum focus distance otherwise.<wbr/></p>
13144 <p>This field is also mandatory for all devices advertising
13145 the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
13146             </td>
13147           </tr>
13148
13149           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13150            <!-- end of entry -->
13151         
13152                 
13153           <tr class="entry" id="static_android.lens.info.shadingMapSize">
13154             <td class="entry_name
13155              " rowspan="3">
13156               android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
13157             </td>
13158             <td class="entry_type">
13159                 <span class="entry_type_name">int32</span>
13160                 <span class="entry_type_container">x</span>
13161
13162                 <span class="entry_type_array">
13163                   2
13164                 </span>
13165               <span class="entry_type_visibility"> [ndk_public as size]</span>
13166
13167
13168               <span class="entry_type_hwlevel">[full] </span>
13169
13170
13171                 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
13172
13173
13174             </td> <!-- entry_type -->
13175
13176             <td class="entry_description">
13177               <p>Dimensions of lens shading map.<wbr/></p>
13178             </td>
13179
13180             <td class="entry_units">
13181             </td>
13182
13183             <td class="entry_range">
13184               <p>Both values &gt;= 1</p>
13185             </td>
13186
13187             <td class="entry_hal_version">
13188               <p>3.<wbr/>2</p>
13189             </td>
13190
13191             <td class="entry_tags">
13192               <ul class="entry_tags">
13193                   <li><a href="#tag_V1">V1</a></li>
13194               </ul>
13195             </td>
13196
13197           </tr>
13198           <tr class="entries_header">
13199             <th class="th_details" colspan="6">Details</th>
13200           </tr>
13201           <tr class="entry_cont">
13202             <td class="entry_details" colspan="6">
13203               <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
13204 must be smaller than 64x64.<wbr/></p>
13205             </td>
13206           </tr>
13207
13208
13209           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13210            <!-- end of entry -->
13211         
13212                 
13213           <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
13214             <td class="entry_name
13215              " rowspan="5">
13216               android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
13217             </td>
13218             <td class="entry_type">
13219                 <span class="entry_type_name entry_type_name_enum">byte</span>
13220
13221               <span class="entry_type_visibility"> [public]</span>
13222
13223
13224               <span class="entry_type_hwlevel">[limited] </span>
13225
13226
13227
13228                 <ul class="entry_type_enum">
13229                   <li>
13230                     <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span>
13231                     <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
13232 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
13233 <p>Setting the lens to the same focus distance on separate occasions may
13234 result in a different real focus distance,<wbr/> depending on factors such
13235 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
13236 and the device temperature.<wbr/> The focus distance value will still be
13237 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
13238 represents the farthest focus.<wbr/></p></span>
13239                   </li>
13240                   <li>
13241                     <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span>
13242                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
13243 <p>However,<wbr/> setting the lens to the same focus distance
13244 on separate occasions may result in a different real
13245 focus distance,<wbr/> depending on factors such as the
13246 orientation of the device,<wbr/> the age of the focusing
13247 mechanism,<wbr/> and the device temperature.<wbr/></p></span>
13248                   </li>
13249                   <li>
13250                     <span class="entry_type_enum_name">CALIBRATED (v3.2)</span>
13251                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
13252 is calibrated.<wbr/></p>
13253 <p>The lens mechanism is calibrated so that setting the
13254 same focus distance is repeatable on multiple
13255 occasions with good accuracy,<wbr/> and the focus distance
13256 corresponds to the real physical distance to the plane
13257 of best focus.<wbr/></p></span>
13258                   </li>
13259                 </ul>
13260
13261             </td> <!-- entry_type -->
13262
13263             <td class="entry_description">
13264               <p>The lens focus distance calibration quality.<wbr/></p>
13265             </td>
13266
13267             <td class="entry_units">
13268             </td>
13269
13270             <td class="entry_range">
13271             </td>
13272
13273             <td class="entry_hal_version">
13274               <p>3.<wbr/>2</p>
13275             </td>
13276
13277             <td class="entry_tags">
13278               <ul class="entry_tags">
13279                   <li><a href="#tag_V1">V1</a></li>
13280               </ul>
13281             </td>
13282
13283           </tr>
13284           <tr class="entries_header">
13285             <th class="th_details" colspan="6">Details</th>
13286           </tr>
13287           <tr class="entry_cont">
13288             <td class="entry_details" colspan="6">
13289               <p>The lens focus distance calibration quality determines the reliability of
13290 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
13291 <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
13292 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
13293 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in
13294 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
13295 and increasing positive numbers represent focusing closer and closer
13296 to the camera device.<wbr/> The focus distance control also uses diopters
13297 on these devices.<wbr/></p>
13298 <p>UNCALIBRATED devices do not use units that are directly comparable
13299 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
13300 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
13301 nearest focus the device can achieve.<wbr/></p>
13302             </td>
13303           </tr>
13304
13305           <tr class="entries_header">
13306             <th class="th_details" colspan="6">HAL Implementation Details</th>
13307           </tr>
13308           <tr class="entry_cont">
13309             <td class="entry_details" colspan="6">
13310               <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
13311 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
13312 and the lens focus distance is set to 0 diopters
13313 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
13314 and is stably focused at infinity even if the device tilts.<wbr/> It may take the
13315 lens some time to move; during the move the lens state should be MOVING and
13316 the output diopter value should be changing toward 0.<wbr/></p>
13317             </td>
13318           </tr>
13319
13320           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13321            <!-- end of entry -->
13322         
13323         
13324         
13325
13326                 
13327           <tr class="entry" id="static_android.lens.facing">
13328             <td class="entry_name
13329              " rowspan="1">
13330               android.<wbr/>lens.<wbr/>facing
13331             </td>
13332             <td class="entry_type">
13333                 <span class="entry_type_name entry_type_name_enum">byte</span>
13334
13335               <span class="entry_type_visibility"> [public]</span>
13336
13337
13338               <span class="entry_type_hwlevel">[legacy] </span>
13339
13340
13341
13342                 <ul class="entry_type_enum">
13343                   <li>
13344                     <span class="entry_type_enum_name">FRONT (v3.2)</span>
13345                     <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
13346                   </li>
13347                   <li>
13348                     <span class="entry_type_enum_name">BACK (v3.2)</span>
13349                     <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
13350                   </li>
13351                   <li>
13352                     <span class="entry_type_enum_name">EXTERNAL (v3.2)</span>
13353                     <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
13354 device's screen.<wbr/></p></span>
13355                   </li>
13356                 </ul>
13357
13358             </td> <!-- entry_type -->
13359
13360             <td class="entry_description">
13361               <p>Direction the camera faces relative to
13362 device screen.<wbr/></p>
13363             </td>
13364
13365             <td class="entry_units">
13366             </td>
13367
13368             <td class="entry_range">
13369             </td>
13370
13371             <td class="entry_hal_version">
13372               <p>3.<wbr/>2</p>
13373             </td>
13374
13375             <td class="entry_tags">
13376             </td>
13377
13378           </tr>
13379
13380
13381           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13382            <!-- end of entry -->
13383         
13384                 
13385           <tr class="entry" id="static_android.lens.poseRotation">
13386             <td class="entry_name
13387              " rowspan="3">
13388               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13389             </td>
13390             <td class="entry_type">
13391                 <span class="entry_type_name">float</span>
13392                 <span class="entry_type_container">x</span>
13393
13394                 <span class="entry_type_array">
13395                   4
13396                 </span>
13397               <span class="entry_type_visibility"> [public]</span>
13398
13399
13400
13401
13402
13403
13404             </td> <!-- entry_type -->
13405
13406             <td class="entry_description">
13407               <p>The orientation of the camera relative to the sensor
13408 coordinate system.<wbr/></p>
13409             </td>
13410
13411             <td class="entry_units">
13412               
13413             Quaternion coefficients
13414           
13415             </td>
13416
13417             <td class="entry_range">
13418             </td>
13419
13420             <td class="entry_hal_version">
13421               <p>3.<wbr/>2</p>
13422             </td>
13423
13424             <td class="entry_tags">
13425               <ul class="entry_tags">
13426                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13427               </ul>
13428             </td>
13429
13430           </tr>
13431           <tr class="entries_header">
13432             <th class="th_details" colspan="6">Details</th>
13433           </tr>
13434           <tr class="entry_cont">
13435             <td class="entry_details" colspan="6">
13436               <p>The four coefficients that describe the quaternion
13437 rotation from the Android sensor coordinate system to a
13438 camera-aligned coordinate system where the X-axis is
13439 aligned with the long side of the image sensor,<wbr/> the Y-axis
13440 is aligned with the short side of the image sensor,<wbr/> and
13441 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13442 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13443 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13444 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13445 <pre><code> theta = 2 * acos(w)
13446 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13447 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13448 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13449 </code></pre>
13450 <p>To create a 3x3 rotation matrix that applies the rotation
13451 defined by this quaternion,<wbr/> the following matrix can be
13452 used:</p>
13453 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
13454            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
13455            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13456 </code></pre>
13457 <p>This matrix can then be used to apply the rotation to a
13458  column vector point with</p>
13459 <p><code>p' = Rp</code></p>
13460 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13461  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13462             </td>
13463           </tr>
13464
13465
13466           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13467            <!-- end of entry -->
13468         
13469                 
13470           <tr class="entry" id="static_android.lens.poseTranslation">
13471             <td class="entry_name
13472              " rowspan="3">
13473               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13474             </td>
13475             <td class="entry_type">
13476                 <span class="entry_type_name">float</span>
13477                 <span class="entry_type_container">x</span>
13478
13479                 <span class="entry_type_array">
13480                   3
13481                 </span>
13482               <span class="entry_type_visibility"> [public]</span>
13483
13484
13485
13486
13487
13488
13489             </td> <!-- entry_type -->
13490
13491             <td class="entry_description">
13492               <p>Position of the camera optical center.<wbr/></p>
13493             </td>
13494
13495             <td class="entry_units">
13496               Meters
13497             </td>
13498
13499             <td class="entry_range">
13500             </td>
13501
13502             <td class="entry_hal_version">
13503               <p>3.<wbr/>2</p>
13504             </td>
13505
13506             <td class="entry_tags">
13507               <ul class="entry_tags">
13508                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13509               </ul>
13510             </td>
13511
13512           </tr>
13513           <tr class="entries_header">
13514             <th class="th_details" colspan="6">Details</th>
13515           </tr>
13516           <tr class="entry_cont">
13517             <td class="entry_details" colspan="6">
13518               <p>The position of the camera device's lens optical center,<wbr/>
13519 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
13520 <p>Prior to Android P,<wbr/> or when <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is PRIMARY_<wbr/>CAMERA,<wbr/> this position
13521 is relative to the optical center of the largest camera device facing in the same
13522 direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
13523 coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
13524 coordinate system,<wbr/> but not the origin.<wbr/></p>
13525 <p>If this device is the largest or only camera device with a given facing,<wbr/> then this
13526 position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
13527 from the main sensor along the +X axis (to the right from the user's perspective) will
13528 report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13529 <p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
13530 the source camera <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then the source
13531 camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
13532 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the source camera,<wbr/> the translation of the source camera
13533 relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
13534 camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
13535 camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
13536 coordinates.<wbr/></p>
13537 <p>To compare this against a real image from the destination camera,<wbr/> the destination camera
13538 image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
13539 <p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is GYROSCOPE,<wbr/> then this position is relative to
13540 the center of the primary gyroscope on the device.<wbr/></p>
13541             </td>
13542           </tr>
13543
13544
13545           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13546            <!-- end of entry -->
13547         
13548                 
13549           <tr class="entry" id="static_android.lens.intrinsicCalibration">
13550             <td class="entry_name
13551              " rowspan="3">
13552               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13553             </td>
13554             <td class="entry_type">
13555                 <span class="entry_type_name">float</span>
13556                 <span class="entry_type_container">x</span>
13557
13558                 <span class="entry_type_array">
13559                   5
13560                 </span>
13561               <span class="entry_type_visibility"> [public]</span>
13562
13563
13564
13565
13566
13567
13568             </td> <!-- entry_type -->
13569
13570             <td class="entry_description">
13571               <p>The parameters for this camera device's intrinsic
13572 calibration.<wbr/></p>
13573             </td>
13574
13575             <td class="entry_units">
13576               
13577             Pixels in the
13578             android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13579             coordinate system.<wbr/>
13580           
13581             </td>
13582
13583             <td class="entry_range">
13584             </td>
13585
13586             <td class="entry_hal_version">
13587               <p>3.<wbr/>2</p>
13588             </td>
13589
13590             <td class="entry_tags">
13591               <ul class="entry_tags">
13592                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13593               </ul>
13594             </td>
13595
13596           </tr>
13597           <tr class="entries_header">
13598             <th class="th_details" colspan="6">Details</th>
13599           </tr>
13600           <tr class="entry_cont">
13601             <td class="entry_details" colspan="6">
13602               <p>The five calibration parameters that describe the
13603 transform from camera-centric 3D coordinates to sensor
13604 pixel coordinates:</p>
13605 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13606 </code></pre>
13607 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13608 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13609 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13610 being aligned with the lens plane.<wbr/></p>
13611 <p>These are typically used within a transformation matrix K:</p>
13612 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
13613        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13614        0    0,<wbr/>   1 ]
13615 </code></pre>
13616 <p>which can then be combined with the camera pose rotation
13617 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13618 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13619 complete transform from world coordinates to pixel
13620 coordinates:</p>
13621 <pre><code>P = [ K 0   * [ R t
13622      0 1 ]     0 1 ]
13623 </code></pre>
13624 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13625 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13626 coordinate system,<wbr/> and with the mapping including the
13627 homogeneous division by z:</p>
13628 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13629 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13630 </code></pre>
13631 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13632 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13633 (depth) in pixel coordinates.<wbr/></p>
13634 <p>Note that the coordinate system for this transform is the
13635 <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/>
13636 where <code>(0,<wbr/>0)</code> is the top-left of the
13637 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13638 intrinsic calibration transforms have been applied to a
13639 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
13640 transform needs to be applied,<wbr/> and the result adjusted to
13641 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13642 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13643 activeArraySize rectangle),<wbr/> to determine the final pixel
13644 coordinate of the world point for processed (non-RAW)
13645 output buffers.<wbr/></p>
13646             </td>
13647           </tr>
13648
13649
13650           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13651            <!-- end of entry -->
13652         
13653                 
13654           <tr class="entry" id="static_android.lens.radialDistortion">
13655             <td class="entry_name
13656              " rowspan="3">
13657               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13658             </td>
13659             <td class="entry_type">
13660                 <span class="entry_type_name">float</span>
13661                 <span class="entry_type_container">x</span>
13662
13663                 <span class="entry_type_array">
13664                   6
13665                 </span>
13666               <span class="entry_type_visibility"> [public]</span>
13667
13668
13669
13670
13671
13672
13673             </td> <!-- entry_type -->
13674
13675             <td class="entry_description">
13676               <p>The correction coefficients to correct for this camera device's
13677 radial and tangential lens distortion.<wbr/></p>
13678             </td>
13679
13680             <td class="entry_units">
13681               
13682             Unitless coefficients.<wbr/>
13683           
13684             </td>
13685
13686             <td class="entry_range">
13687             </td>
13688
13689             <td class="entry_hal_version">
13690               <p>3.<wbr/>2</p>
13691             </td>
13692
13693             <td class="entry_tags">
13694               <ul class="entry_tags">
13695                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13696               </ul>
13697             </td>
13698
13699           </tr>
13700           <tr class="entries_header">
13701             <th class="th_details" colspan="6">Details</th>
13702           </tr>
13703           <tr class="entry_cont">
13704             <td class="entry_details" colspan="6">
13705               <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13706 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13707 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13708 lens's geometric distortion with the mapping equations:</p>
13709 <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 ) +
13710        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13711  y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13712        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13713 </code></pre>
13714 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13715 input image that correspond to the pixel values in the
13716 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13717 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13718 </code></pre>
13719 <p>The pixel coordinates are defined in a normalized
13720 coordinate system related to the
13721 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13722 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
13723 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13724 of both x and y coordinates are normalized to be 1 at the
13725 edge further from the optical center,<wbr/> so the range
13726 for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
13727 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13728 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13729 is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
13730 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13731             </td>
13732           </tr>
13733
13734
13735           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13736            <!-- end of entry -->
13737         
13738                 
13739           <tr class="entry" id="static_android.lens.poseReference">
13740             <td class="entry_name
13741              " rowspan="3">
13742               android.<wbr/>lens.<wbr/>pose<wbr/>Reference
13743             </td>
13744             <td class="entry_type">
13745                 <span class="entry_type_name entry_type_name_enum">byte</span>
13746
13747               <span class="entry_type_visibility"> [public]</span>
13748
13749
13750
13751
13752
13753                 <ul class="entry_type_enum">
13754                   <li>
13755                     <span class="entry_type_enum_name">PRIMARY_CAMERA (v3.3)</span>
13756                     <span class="entry_type_enum_notes"><p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> is relative to the optical center of
13757 the largest camera device facing the same direction as this camera.<wbr/></p>
13758 <p>This is the default value for API levels before Android P.<wbr/></p></span>
13759                   </li>
13760                   <li>
13761                     <span class="entry_type_enum_name">GYROSCOPE (v3.3)</span>
13762                     <span class="entry_type_enum_notes"><p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> is relative to the position of the
13763 primary gyroscope of this Android device.<wbr/></p></span>
13764                   </li>
13765                 </ul>
13766
13767             </td> <!-- entry_type -->
13768
13769             <td class="entry_description">
13770               <p>The origin for <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p>
13771             </td>
13772
13773             <td class="entry_units">
13774             </td>
13775
13776             <td class="entry_range">
13777             </td>
13778
13779             <td class="entry_hal_version">
13780               <p>3.<wbr/>3</p>
13781             </td>
13782
13783             <td class="entry_tags">
13784             </td>
13785
13786           </tr>
13787           <tr class="entries_header">
13788             <th class="th_details" colspan="6">Details</th>
13789           </tr>
13790           <tr class="entry_cont">
13791             <td class="entry_details" colspan="6">
13792               <p>Different calibration methods and use cases can produce better or worse results
13793 depending on the selected coordinate origin.<wbr/></p>
13794             </td>
13795           </tr>
13796
13797
13798           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13799            <!-- end of entry -->
13800         
13801         
13802
13803       <!-- end of kind -->
13804       </tbody>
13805       <tr><td colspan="7" class="kind">dynamic</td></tr>
13806
13807       <thead class="entries_header">
13808         <tr>
13809           <th class="th_name">Property Name</th>
13810           <th class="th_type">Type</th>
13811           <th class="th_description">Description</th>
13812           <th class="th_units">Units</th>
13813           <th class="th_range">Range</th>
13814           <th class="th_hal_version">Initial HIDL HAL version</th>
13815           <th class="th_tags">Tags</th>
13816         </tr>
13817       </thead>
13818
13819       <tbody>
13820
13821         
13822
13823         
13824
13825         
13826
13827         
13828
13829                 
13830           <tr class="entry" id="dynamic_android.lens.aperture">
13831             <td class="entry_name
13832              " rowspan="3">
13833               android.<wbr/>lens.<wbr/>aperture
13834             </td>
13835             <td class="entry_type">
13836                 <span class="entry_type_name">float</span>
13837
13838               <span class="entry_type_visibility"> [public]</span>
13839
13840
13841               <span class="entry_type_hwlevel">[full] </span>
13842
13843
13844
13845
13846             </td> <!-- entry_type -->
13847
13848             <td class="entry_description">
13849               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
13850 effective aperture diameter.<wbr/></p>
13851             </td>
13852
13853             <td class="entry_units">
13854               The f-number (f/<wbr/>N)
13855             </td>
13856
13857             <td class="entry_range">
13858               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
13859             </td>
13860
13861             <td class="entry_hal_version">
13862               <p>3.<wbr/>2</p>
13863             </td>
13864
13865             <td class="entry_tags">
13866               <ul class="entry_tags">
13867                   <li><a href="#tag_V1">V1</a></li>
13868               </ul>
13869             </td>
13870
13871           </tr>
13872           <tr class="entries_header">
13873             <th class="th_details" colspan="6">Details</th>
13874           </tr>
13875           <tr class="entry_cont">
13876             <td class="entry_details" colspan="6">
13877               <p>Setting this value is only supported on the camera devices that have a variable
13878 aperture lens.<wbr/></p>
13879 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
13880 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
13881 <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>
13882 to achieve manual exposure control.<wbr/></p>
13883 <p>The requested aperture value may take several frames to reach the
13884 requested value; the camera device will report the current (intermediate)
13885 aperture size in capture result metadata while the aperture is changing.<wbr/>
13886 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>
13887 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
13888 the ON modes,<wbr/> this will be overridden by the camera device
13889 auto-exposure algorithm,<wbr/> the overridden values are then provided
13890 back to the user in the corresponding result.<wbr/></p>
13891             </td>
13892           </tr>
13893
13894
13895           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13896            <!-- end of entry -->
13897         
13898                 
13899           <tr class="entry" id="dynamic_android.lens.filterDensity">
13900             <td class="entry_name
13901              " rowspan="3">
13902               android.<wbr/>lens.<wbr/>filter<wbr/>Density
13903             </td>
13904             <td class="entry_type">
13905                 <span class="entry_type_name">float</span>
13906
13907               <span class="entry_type_visibility"> [public]</span>
13908
13909
13910               <span class="entry_type_hwlevel">[full] </span>
13911
13912
13913
13914
13915             </td> <!-- entry_type -->
13916
13917             <td class="entry_description">
13918               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
13919             </td>
13920
13921             <td class="entry_units">
13922               Exposure Value (EV)
13923             </td>
13924
13925             <td class="entry_range">
13926               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
13927             </td>
13928
13929             <td class="entry_hal_version">
13930               <p>3.<wbr/>2</p>
13931             </td>
13932
13933             <td class="entry_tags">
13934               <ul class="entry_tags">
13935                   <li><a href="#tag_V1">V1</a></li>
13936               </ul>
13937             </td>
13938
13939           </tr>
13940           <tr class="entries_header">
13941             <th class="th_details" colspan="6">Details</th>
13942           </tr>
13943           <tr class="entry_cont">
13944             <td class="entry_details" colspan="6">
13945               <p>This control will not be supported on most camera devices.<wbr/></p>
13946 <p>Lens filters are typically used to lower the amount of light the
13947 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
13948 step is the standard logarithmic representation,<wbr/> which are
13949 non-negative,<wbr/> and inversely proportional to the amount of light
13950 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
13951 in no reduction of the incoming light,<wbr/> and setting this to 2 would
13952 mean that the filter is set to reduce incoming light by two stops
13953 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
13954 <p>It may take several frames before the lens filter density changes
13955 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
13956 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
13957             </td>
13958           </tr>
13959
13960
13961           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13962            <!-- end of entry -->
13963         
13964                 
13965           <tr class="entry" id="dynamic_android.lens.focalLength">
13966             <td class="entry_name
13967              " rowspan="3">
13968               android.<wbr/>lens.<wbr/>focal<wbr/>Length
13969             </td>
13970             <td class="entry_type">
13971                 <span class="entry_type_name">float</span>
13972
13973               <span class="entry_type_visibility"> [public]</span>
13974
13975
13976               <span class="entry_type_hwlevel">[legacy] </span>
13977
13978
13979
13980
13981             </td> <!-- entry_type -->
13982
13983             <td class="entry_description">
13984               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
13985             </td>
13986
13987             <td class="entry_units">
13988               Millimeters
13989             </td>
13990
13991             <td class="entry_range">
13992               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
13993             </td>
13994
13995             <td class="entry_hal_version">
13996               <p>3.<wbr/>2</p>
13997             </td>
13998
13999             <td class="entry_tags">
14000               <ul class="entry_tags">
14001                   <li><a href="#tag_BC">BC</a></li>
14002               </ul>
14003             </td>
14004
14005           </tr>
14006           <tr class="entries_header">
14007             <th class="th_details" colspan="6">Details</th>
14008           </tr>
14009           <tr class="entry_cont">
14010             <td class="entry_details" colspan="6">
14011               <p>This setting controls the physical focal length of the camera
14012 device's lens.<wbr/> Changing the focal length changes the field of
14013 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
14014 <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
14015 setting won't be applied instantaneously,<wbr/> and it may take several
14016 frames before the lens can change to the requested focal length.<wbr/>
14017 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
14018 be set to MOVING.<wbr/></p>
14019 <p>Optical zoom will not be supported on most devices.<wbr/></p>
14020             </td>
14021           </tr>
14022
14023
14024           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14025            <!-- end of entry -->
14026         
14027                 
14028           <tr class="entry" id="dynamic_android.lens.focusDistance">
14029             <td class="entry_name
14030              " rowspan="3">
14031               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
14032             </td>
14033             <td class="entry_type">
14034                 <span class="entry_type_name">float</span>
14035
14036               <span class="entry_type_visibility"> [public]</span>
14037
14038
14039               <span class="entry_type_hwlevel">[full] </span>
14040
14041
14042
14043
14044             </td> <!-- entry_type -->
14045
14046             <td class="entry_description">
14047               <p>Desired distance to plane of sharpest focus,<wbr/>
14048 measured from frontmost surface of the lens.<wbr/></p>
14049             </td>
14050
14051             <td class="entry_units">
14052               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
14053             </td>
14054
14055             <td class="entry_range">
14056               <p>&gt;= 0</p>
14057             </td>
14058
14059             <td class="entry_hal_version">
14060               <p>3.<wbr/>2</p>
14061             </td>
14062
14063             <td class="entry_tags">
14064               <ul class="entry_tags">
14065                   <li><a href="#tag_BC">BC</a></li>
14066               </ul>
14067             </td>
14068
14069           </tr>
14070           <tr class="entries_header">
14071             <th class="th_details" colspan="6">Details</th>
14072           </tr>
14073           <tr class="entry_cont">
14074             <td class="entry_details" colspan="6">
14075               <p>Should be zero for fixed-focus cameras</p>
14076             </td>
14077           </tr>
14078
14079
14080           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14081            <!-- end of entry -->
14082         
14083                 
14084           <tr class="entry" id="dynamic_android.lens.focusRange">
14085             <td class="entry_name
14086              " rowspan="3">
14087               android.<wbr/>lens.<wbr/>focus<wbr/>Range
14088             </td>
14089             <td class="entry_type">
14090                 <span class="entry_type_name">float</span>
14091                 <span class="entry_type_container">x</span>
14092
14093                 <span class="entry_type_array">
14094                   2
14095                 </span>
14096               <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
14097
14098
14099               <span class="entry_type_hwlevel">[limited] </span>
14100
14101
14102                 <div class="entry_type_notes">Range of scene distances that are in focus</div>
14103
14104
14105             </td> <!-- entry_type -->
14106
14107             <td class="entry_description">
14108               <p>The range of scene distances that are in
14109 sharp focus (depth of field).<wbr/></p>
14110             </td>
14111
14112             <td class="entry_units">
14113               A pair of focus distances in diopters: (near,<wbr/>
14114           far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
14115             </td>
14116
14117             <td class="entry_range">
14118               <p>&gt;=0</p>
14119             </td>
14120
14121             <td class="entry_hal_version">
14122               <p>3.<wbr/>2</p>
14123             </td>
14124
14125             <td class="entry_tags">
14126               <ul class="entry_tags">
14127                   <li><a href="#tag_BC">BC</a></li>
14128               </ul>
14129             </td>
14130
14131           </tr>
14132           <tr class="entries_header">
14133             <th class="th_details" colspan="6">Details</th>
14134           </tr>
14135           <tr class="entry_cont">
14136             <td class="entry_details" colspan="6">
14137               <p>If variable focus not supported,<wbr/> can still report
14138 fixed depth of field range</p>
14139             </td>
14140           </tr>
14141
14142
14143           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14144            <!-- end of entry -->
14145         
14146                 
14147           <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
14148             <td class="entry_name
14149              " rowspan="3">
14150               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
14151             </td>
14152             <td class="entry_type">
14153                 <span class="entry_type_name entry_type_name_enum">byte</span>
14154
14155               <span class="entry_type_visibility"> [public]</span>
14156
14157
14158               <span class="entry_type_hwlevel">[limited] </span>
14159
14160
14161
14162                 <ul class="entry_type_enum">
14163                   <li>
14164                     <span class="entry_type_enum_name">OFF (v3.2)</span>
14165                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
14166                   </li>
14167                   <li>
14168                     <span class="entry_type_enum_name">ON (v3.2)</span>
14169                     <span class="entry_type_enum_optional">[optional]</span>
14170                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
14171                   </li>
14172                 </ul>
14173
14174             </td> <!-- entry_type -->
14175
14176             <td class="entry_description">
14177               <p>Sets whether the camera device uses optical image stabilization (OIS)
14178 when capturing images.<wbr/></p>
14179             </td>
14180
14181             <td class="entry_units">
14182             </td>
14183
14184             <td class="entry_range">
14185               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
14186             </td>
14187
14188             <td class="entry_hal_version">
14189               <p>3.<wbr/>2</p>
14190             </td>
14191
14192             <td class="entry_tags">
14193               <ul class="entry_tags">
14194                   <li><a href="#tag_V1">V1</a></li>
14195               </ul>
14196             </td>
14197
14198           </tr>
14199           <tr class="entries_header">
14200             <th class="th_details" colspan="6">Details</th>
14201           </tr>
14202           <tr class="entry_cont">
14203             <td class="entry_details" colspan="6">
14204               <p>OIS is used to compensate for motion blur due to small
14205 movements of the camera during capture.<wbr/> Unlike digital image
14206 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
14207 makes use of mechanical elements to stabilize the camera
14208 sensor,<wbr/> and thus allows for longer exposure times before
14209 camera shake becomes apparent.<wbr/></p>
14210 <p>Switching between different optical stabilization modes may take several
14211 frames to initialize,<wbr/> the camera device will report the current mode in
14212 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
14213 optical stabilization modes in the first several capture results may still
14214 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
14215 <p>If a camera device supports both OIS and digital image stabilization
14216 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
14217 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
14218 <p>Not all devices will support OIS; see
14219 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
14220 available controls.<wbr/></p>
14221             </td>
14222           </tr>
14223
14224
14225           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14226            <!-- end of entry -->
14227         
14228                 
14229           <tr class="entry" id="dynamic_android.lens.state">
14230             <td class="entry_name
14231              " rowspan="3">
14232               android.<wbr/>lens.<wbr/>state
14233             </td>
14234             <td class="entry_type">
14235                 <span class="entry_type_name entry_type_name_enum">byte</span>
14236
14237               <span class="entry_type_visibility"> [public]</span>
14238
14239
14240               <span class="entry_type_hwlevel">[limited] </span>
14241
14242
14243
14244                 <ul class="entry_type_enum">
14245                   <li>
14246                     <span class="entry_type_enum_name">STATIONARY (v3.2)</span>
14247                     <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/>
14248 <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>
14249                   </li>
14250                   <li>
14251                     <span class="entry_type_enum_name">MOVING (v3.2)</span>
14252                     <span class="entry_type_enum_notes"><p>One or several of the lens parameters
14253 (<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/>
14254 <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
14255 currently changing.<wbr/></p></span>
14256                   </li>
14257                 </ul>
14258
14259             </td> <!-- entry_type -->
14260
14261             <td class="entry_description">
14262               <p>Current lens status.<wbr/></p>
14263             </td>
14264
14265             <td class="entry_units">
14266             </td>
14267
14268             <td class="entry_range">
14269             </td>
14270
14271             <td class="entry_hal_version">
14272               <p>3.<wbr/>2</p>
14273             </td>
14274
14275             <td class="entry_tags">
14276               <ul class="entry_tags">
14277                   <li><a href="#tag_V1">V1</a></li>
14278               </ul>
14279             </td>
14280
14281           </tr>
14282           <tr class="entries_header">
14283             <th class="th_details" colspan="6">Details</th>
14284           </tr>
14285           <tr class="entry_cont">
14286             <td class="entry_details" colspan="6">
14287               <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/>
14288 <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/>
14289 they may take several frames to reach the requested values.<wbr/> This state indicates
14290 the current status of the lens parameters.<wbr/></p>
14291 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
14292 either because the parameters are all fixed,<wbr/> or because the lens has had enough
14293 time to reach the most recently-requested values.<wbr/>
14294 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
14295 <ul>
14296 <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
14297 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
14298 <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/>
14299 which means the optical zoom is not supported.<wbr/></li>
14300 <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>
14301 <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>
14302 </ul>
14303 <p>Then this state will always be STATIONARY.<wbr/></p>
14304 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
14305 is changing.<wbr/></p>
14306             </td>
14307           </tr>
14308
14309
14310           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14311            <!-- end of entry -->
14312         
14313                 
14314           <tr class="entry" id="dynamic_android.lens.poseRotation">
14315             <td class="entry_name
14316              " rowspan="3">
14317               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
14318             </td>
14319             <td class="entry_type">
14320                 <span class="entry_type_name">float</span>
14321                 <span class="entry_type_container">x</span>
14322
14323                 <span class="entry_type_array">
14324                   4
14325                 </span>
14326               <span class="entry_type_visibility"> [public]</span>
14327
14328
14329
14330
14331
14332
14333             </td> <!-- entry_type -->
14334
14335             <td class="entry_description">
14336               <p>The orientation of the camera relative to the sensor
14337 coordinate system.<wbr/></p>
14338             </td>
14339
14340             <td class="entry_units">
14341               
14342             Quaternion coefficients
14343           
14344             </td>
14345
14346             <td class="entry_range">
14347             </td>
14348
14349             <td class="entry_hal_version">
14350               <p>3.<wbr/>2</p>
14351             </td>
14352
14353             <td class="entry_tags">
14354               <ul class="entry_tags">
14355                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14356               </ul>
14357             </td>
14358
14359           </tr>
14360           <tr class="entries_header">
14361             <th class="th_details" colspan="6">Details</th>
14362           </tr>
14363           <tr class="entry_cont">
14364             <td class="entry_details" colspan="6">
14365               <p>The four coefficients that describe the quaternion
14366 rotation from the Android sensor coordinate system to a
14367 camera-aligned coordinate system where the X-axis is
14368 aligned with the long side of the image sensor,<wbr/> the Y-axis
14369 is aligned with the short side of the image sensor,<wbr/> and
14370 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
14371 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
14372 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
14373 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
14374 <pre><code> theta = 2 * acos(w)
14375 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
14376 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
14377 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
14378 </code></pre>
14379 <p>To create a 3x3 rotation matrix that applies the rotation
14380 defined by this quaternion,<wbr/> the following matrix can be
14381 used:</p>
14382 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
14383            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
14384            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
14385 </code></pre>
14386 <p>This matrix can then be used to apply the rotation to a
14387  column vector point with</p>
14388 <p><code>p' = Rp</code></p>
14389 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
14390  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
14391             </td>
14392           </tr>
14393
14394
14395           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14396            <!-- end of entry -->
14397         
14398                 
14399           <tr class="entry" id="dynamic_android.lens.poseTranslation">
14400             <td class="entry_name
14401              " rowspan="3">
14402               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
14403             </td>
14404             <td class="entry_type">
14405                 <span class="entry_type_name">float</span>
14406                 <span class="entry_type_container">x</span>
14407
14408                 <span class="entry_type_array">
14409                   3
14410                 </span>
14411               <span class="entry_type_visibility"> [public]</span>
14412
14413
14414
14415
14416
14417
14418             </td> <!-- entry_type -->
14419
14420             <td class="entry_description">
14421               <p>Position of the camera optical center.<wbr/></p>
14422             </td>
14423
14424             <td class="entry_units">
14425               Meters
14426             </td>
14427
14428             <td class="entry_range">
14429             </td>
14430
14431             <td class="entry_hal_version">
14432               <p>3.<wbr/>2</p>
14433             </td>
14434
14435             <td class="entry_tags">
14436               <ul class="entry_tags">
14437                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14438               </ul>
14439             </td>
14440
14441           </tr>
14442           <tr class="entries_header">
14443             <th class="th_details" colspan="6">Details</th>
14444           </tr>
14445           <tr class="entry_cont">
14446             <td class="entry_details" colspan="6">
14447               <p>The position of the camera device's lens optical center,<wbr/>
14448 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
14449 <p>Prior to Android P,<wbr/> or when <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is PRIMARY_<wbr/>CAMERA,<wbr/> this position
14450 is relative to the optical center of the largest camera device facing in the same
14451 direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
14452 coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
14453 coordinate system,<wbr/> but not the origin.<wbr/></p>
14454 <p>If this device is the largest or only camera device with a given facing,<wbr/> then this
14455 position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
14456 from the main sensor along the +X axis (to the right from the user's perspective) will
14457 report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
14458 <p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
14459 the source camera <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then the source
14460 camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
14461 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the source camera,<wbr/> the translation of the source camera
14462 relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
14463 camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
14464 camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
14465 coordinates.<wbr/></p>
14466 <p>To compare this against a real image from the destination camera,<wbr/> the destination camera
14467 image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
14468 <p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is GYROSCOPE,<wbr/> then this position is relative to
14469 the center of the primary gyroscope on the device.<wbr/></p>
14470             </td>
14471           </tr>
14472
14473
14474           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14475            <!-- end of entry -->
14476         
14477                 
14478           <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
14479             <td class="entry_name
14480              " rowspan="3">
14481               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
14482             </td>
14483             <td class="entry_type">
14484                 <span class="entry_type_name">float</span>
14485                 <span class="entry_type_container">x</span>
14486
14487                 <span class="entry_type_array">
14488                   5
14489                 </span>
14490               <span class="entry_type_visibility"> [public]</span>
14491
14492
14493
14494
14495
14496
14497             </td> <!-- entry_type -->
14498
14499             <td class="entry_description">
14500               <p>The parameters for this camera device's intrinsic
14501 calibration.<wbr/></p>
14502             </td>
14503
14504             <td class="entry_units">
14505               
14506             Pixels in the
14507             android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
14508             coordinate system.<wbr/>
14509           
14510             </td>
14511
14512             <td class="entry_range">
14513             </td>
14514
14515             <td class="entry_hal_version">
14516               <p>3.<wbr/>2</p>
14517             </td>
14518
14519             <td class="entry_tags">
14520               <ul class="entry_tags">
14521                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14522               </ul>
14523             </td>
14524
14525           </tr>
14526           <tr class="entries_header">
14527             <th class="th_details" colspan="6">Details</th>
14528           </tr>
14529           <tr class="entry_cont">
14530             <td class="entry_details" colspan="6">
14531               <p>The five calibration parameters that describe the
14532 transform from camera-centric 3D coordinates to sensor
14533 pixel coordinates:</p>
14534 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
14535 </code></pre>
14536 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
14537 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
14538 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
14539 being aligned with the lens plane.<wbr/></p>
14540 <p>These are typically used within a transformation matrix K:</p>
14541 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
14542        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
14543        0    0,<wbr/>   1 ]
14544 </code></pre>
14545 <p>which can then be combined with the camera pose rotation
14546 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
14547 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
14548 complete transform from world coordinates to pixel
14549 coordinates:</p>
14550 <pre><code>P = [ K 0   * [ R t
14551      0 1 ]     0 1 ]
14552 </code></pre>
14553 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
14554 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
14555 coordinate system,<wbr/> and with the mapping including the
14556 homogeneous division by z:</p>
14557 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
14558 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
14559 </code></pre>
14560 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
14561 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
14562 (depth) in pixel coordinates.<wbr/></p>
14563 <p>Note that the coordinate system for this transform is the
14564 <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/>
14565 where <code>(0,<wbr/>0)</code> is the top-left of the
14566 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
14567 intrinsic calibration transforms have been applied to a
14568 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
14569 transform needs to be applied,<wbr/> and the result adjusted to
14570 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
14571 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
14572 activeArraySize rectangle),<wbr/> to determine the final pixel
14573 coordinate of the world point for processed (non-RAW)
14574 output buffers.<wbr/></p>
14575             </td>
14576           </tr>
14577
14578
14579           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14580            <!-- end of entry -->
14581         
14582                 
14583           <tr class="entry" id="dynamic_android.lens.radialDistortion">
14584             <td class="entry_name
14585              " rowspan="3">
14586               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
14587             </td>
14588             <td class="entry_type">
14589                 <span class="entry_type_name">float</span>
14590                 <span class="entry_type_container">x</span>
14591
14592                 <span class="entry_type_array">
14593                   6
14594                 </span>
14595               <span class="entry_type_visibility"> [public]</span>
14596
14597
14598
14599
14600
14601
14602             </td> <!-- entry_type -->
14603
14604             <td class="entry_description">
14605               <p>The correction coefficients to correct for this camera device's
14606 radial and tangential lens distortion.<wbr/></p>
14607             </td>
14608
14609             <td class="entry_units">
14610               
14611             Unitless coefficients.<wbr/>
14612           
14613             </td>
14614
14615             <td class="entry_range">
14616             </td>
14617
14618             <td class="entry_hal_version">
14619               <p>3.<wbr/>2</p>
14620             </td>
14621
14622             <td class="entry_tags">
14623               <ul class="entry_tags">
14624                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14625               </ul>
14626             </td>
14627
14628           </tr>
14629           <tr class="entries_header">
14630             <th class="th_details" colspan="6">Details</th>
14631           </tr>
14632           <tr class="entry_cont">
14633             <td class="entry_details" colspan="6">
14634               <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14635 kappa_<wbr/>3]</code> and two tangential distortion coefficients
14636 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14637 lens's geometric distortion with the mapping equations:</p>
14638 <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 ) +
14639        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14640  y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14641        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14642 </code></pre>
14643 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14644 input image that correspond to the pixel values in the
14645 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14646 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14647 </code></pre>
14648 <p>The pixel coordinates are defined in a normalized
14649 coordinate system related to the
14650 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
14651 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
14652 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
14653 of both x and y coordinates are normalized to be 1 at the
14654 edge further from the optical center,<wbr/> so the range
14655 for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
14656 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14657 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
14658 is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
14659 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14660             </td>
14661           </tr>
14662
14663
14664           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14665            <!-- end of entry -->
14666         
14667         
14668
14669       <!-- end of kind -->
14670       </tbody>
14671
14672   <!-- end of section -->
14673   <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
14674
14675
14676       <tr><td colspan="7" class="kind">controls</td></tr>
14677
14678       <thead class="entries_header">
14679         <tr>
14680           <th class="th_name">Property Name</th>
14681           <th class="th_type">Type</th>
14682           <th class="th_description">Description</th>
14683           <th class="th_units">Units</th>
14684           <th class="th_range">Range</th>
14685           <th class="th_hal_version">Initial HIDL HAL version</th>
14686           <th class="th_tags">Tags</th>
14687         </tr>
14688       </thead>
14689
14690       <tbody>
14691
14692         
14693
14694         
14695
14696         
14697
14698         
14699
14700                 
14701           <tr class="entry" id="controls_android.noiseReduction.mode">
14702             <td class="entry_name
14703              " rowspan="5">
14704               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14705             </td>
14706             <td class="entry_type">
14707                 <span class="entry_type_name entry_type_name_enum">byte</span>
14708
14709               <span class="entry_type_visibility"> [public]</span>
14710
14711
14712               <span class="entry_type_hwlevel">[full] </span>
14713
14714
14715
14716                 <ul class="entry_type_enum">
14717                   <li>
14718                     <span class="entry_type_enum_name">OFF (v3.2)</span>
14719                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14720                   </li>
14721                   <li>
14722                     <span class="entry_type_enum_name">FAST (v3.2)</span>
14723                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14724 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14725 relative to sensor.<wbr/></p></span>
14726                   </li>
14727                   <li>
14728                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
14729                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14730 rate relative to sensor output.<wbr/></p></span>
14731                   </li>
14732                   <li>
14733                     <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
14734                     <span class="entry_type_enum_optional">[optional]</span>
14735                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14736 sensor output.<wbr/> </p></span>
14737                   </li>
14738                   <li>
14739                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
14740                     <span class="entry_type_enum_optional">[optional]</span>
14741                     <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14742 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>)
14743 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
14744 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
14745 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
14746 and the quality is equal to or better than FAST (since it is only applied to
14747 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
14748 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14749 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14750 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14751 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
14752 high-resolution buffers must not have noise reduction applied to maximize efficiency of
14753 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14754 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14755 applied for reasonable preview quality.<wbr/></p>
14756 <p>This mode is guaranteed to be supported by devices that support either the
14757 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14758 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14759 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14760                   </li>
14761                 </ul>
14762
14763             </td> <!-- entry_type -->
14764
14765             <td class="entry_description">
14766               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14767             </td>
14768
14769             <td class="entry_units">
14770             </td>
14771
14772             <td class="entry_range">
14773               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14774             </td>
14775
14776             <td class="entry_hal_version">
14777               <p>3.<wbr/>2</p>
14778             </td>
14779
14780             <td class="entry_tags">
14781               <ul class="entry_tags">
14782                   <li><a href="#tag_V1">V1</a></li>
14783                   <li><a href="#tag_REPROC">REPROC</a></li>
14784               </ul>
14785             </td>
14786
14787           </tr>
14788           <tr class="entries_header">
14789             <th class="th_details" colspan="6">Details</th>
14790           </tr>
14791           <tr class="entry_cont">
14792             <td class="entry_details" colspan="6">
14793               <p>The noise reduction algorithm attempts to improve image quality by removing
14794 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
14795 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
14796 YUV domain.<wbr/></p>
14797 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
14798 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
14799 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14800 <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>
14801 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14802 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14803 will use the highest-quality noise filtering algorithms,<wbr/>
14804 even if it slows down capture rate.<wbr/> FAST means the camera device will not
14805 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14806 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14807 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14808 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14809 buffer of high-resolution images during preview and reprocess image(s) from that buffer
14810 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14811 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14812 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14813 those will be reprocessed later if necessary.<wbr/></p>
14814 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14815 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14816 may adjust the noise reduction parameters for best image quality based on the
14817 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
14818             </td>
14819           </tr>
14820
14821           <tr class="entries_header">
14822             <th class="th_details" colspan="6">HAL Implementation Details</th>
14823           </tr>
14824           <tr class="entry_cont">
14825             <td class="entry_details" colspan="6">
14826               <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
14827 adjust the internal noise reduction parameters appropriately to get the best quality
14828 images.<wbr/></p>
14829             </td>
14830           </tr>
14831
14832           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14833            <!-- end of entry -->
14834         
14835                 
14836           <tr class="entry" id="controls_android.noiseReduction.strength">
14837             <td class="entry_name
14838              " rowspan="1">
14839               android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
14840             </td>
14841             <td class="entry_type">
14842                 <span class="entry_type_name">byte</span>
14843
14844               <span class="entry_type_visibility"> [system]</span>
14845
14846
14847
14848
14849
14850
14851             </td> <!-- entry_type -->
14852
14853             <td class="entry_description">
14854               <p>Control the amount of noise reduction
14855 applied to the images</p>
14856             </td>
14857
14858             <td class="entry_units">
14859               1-10; 10 is max noise reduction
14860             </td>
14861
14862             <td class="entry_range">
14863               <p>1 - 10</p>
14864             </td>
14865
14866             <td class="entry_hal_version">
14867               <p>3.<wbr/>2</p>
14868             </td>
14869
14870             <td class="entry_tags">
14871               <ul class="entry_tags">
14872                   <li><a href="#tag_FUTURE">FUTURE</a></li>
14873               </ul>
14874             </td>
14875
14876           </tr>
14877
14878
14879           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14880            <!-- end of entry -->
14881         
14882         
14883
14884       <!-- end of kind -->
14885       </tbody>
14886       <tr><td colspan="7" class="kind">static</td></tr>
14887
14888       <thead class="entries_header">
14889         <tr>
14890           <th class="th_name">Property Name</th>
14891           <th class="th_type">Type</th>
14892           <th class="th_description">Description</th>
14893           <th class="th_units">Units</th>
14894           <th class="th_range">Range</th>
14895           <th class="th_hal_version">Initial HIDL HAL version</th>
14896           <th class="th_tags">Tags</th>
14897         </tr>
14898       </thead>
14899
14900       <tbody>
14901
14902         
14903
14904         
14905
14906         
14907
14908         
14909
14910                 
14911           <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
14912             <td class="entry_name
14913              " rowspan="5">
14914               android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
14915             </td>
14916             <td class="entry_type">
14917                 <span class="entry_type_name">byte</span>
14918                 <span class="entry_type_container">x</span>
14919
14920                 <span class="entry_type_array">
14921                   n
14922                 </span>
14923               <span class="entry_type_visibility"> [public as enumList]</span>
14924
14925
14926               <span class="entry_type_hwlevel">[limited] </span>
14927
14928
14929                 <div class="entry_type_notes">list of enums</div>
14930
14931
14932             </td> <!-- entry_type -->
14933
14934             <td class="entry_description">
14935               <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
14936 by this camera device.<wbr/></p>
14937             </td>
14938
14939             <td class="entry_units">
14940             </td>
14941
14942             <td class="entry_range">
14943               <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
14944             </td>
14945
14946             <td class="entry_hal_version">
14947               <p>3.<wbr/>2</p>
14948             </td>
14949
14950             <td class="entry_tags">
14951               <ul class="entry_tags">
14952                   <li><a href="#tag_V1">V1</a></li>
14953                   <li><a href="#tag_REPROC">REPROC</a></li>
14954               </ul>
14955             </td>
14956
14957           </tr>
14958           <tr class="entries_header">
14959             <th class="th_details" colspan="6">Details</th>
14960           </tr>
14961           <tr class="entry_cont">
14962             <td class="entry_details" colspan="6">
14963               <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
14964 <p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
14965 ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
14966 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
14967             </td>
14968           </tr>
14969
14970           <tr class="entries_header">
14971             <th class="th_details" colspan="6">HAL Implementation Details</th>
14972           </tr>
14973           <tr class="entry_cont">
14974             <td class="entry_details" colspan="6">
14975               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
14976 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
14977 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
14978 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
14979             </td>
14980           </tr>
14981
14982           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14983            <!-- end of entry -->
14984         
14985         
14986
14987       <!-- end of kind -->
14988       </tbody>
14989       <tr><td colspan="7" class="kind">dynamic</td></tr>
14990
14991       <thead class="entries_header">
14992         <tr>
14993           <th class="th_name">Property Name</th>
14994           <th class="th_type">Type</th>
14995           <th class="th_description">Description</th>
14996           <th class="th_units">Units</th>
14997           <th class="th_range">Range</th>
14998           <th class="th_hal_version">Initial HIDL HAL version</th>
14999           <th class="th_tags">Tags</th>
15000         </tr>
15001       </thead>
15002
15003       <tbody>
15004
15005         
15006
15007         
15008
15009         
15010
15011         
15012
15013                 
15014           <tr class="entry" id="dynamic_android.noiseReduction.mode">
15015             <td class="entry_name
15016              " rowspan="5">
15017               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
15018             </td>
15019             <td class="entry_type">
15020                 <span class="entry_type_name entry_type_name_enum">byte</span>
15021
15022               <span class="entry_type_visibility"> [public]</span>
15023
15024
15025               <span class="entry_type_hwlevel">[full] </span>
15026
15027
15028
15029                 <ul class="entry_type_enum">
15030                   <li>
15031                     <span class="entry_type_enum_name">OFF (v3.2)</span>
15032                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
15033                   </li>
15034                   <li>
15035                     <span class="entry_type_enum_name">FAST (v3.2)</span>
15036                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
15037 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
15038 relative to sensor.<wbr/></p></span>
15039                   </li>
15040                   <li>
15041                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
15042                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
15043 rate relative to sensor output.<wbr/></p></span>
15044                   </li>
15045                   <li>
15046                     <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
15047                     <span class="entry_type_enum_optional">[optional]</span>
15048                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
15049 sensor output.<wbr/> </p></span>
15050                   </li>
15051                   <li>
15052                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
15053                     <span class="entry_type_enum_optional">[optional]</span>
15054                     <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
15055 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>)
15056 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
15057 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
15058 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
15059 and the quality is equal to or better than FAST (since it is only applied to
15060 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
15061 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
15062 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
15063 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
15064 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
15065 high-resolution buffers must not have noise reduction applied to maximize efficiency of
15066 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
15067 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
15068 applied for reasonable preview quality.<wbr/></p>
15069 <p>This mode is guaranteed to be supported by devices that support either the
15070 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
15071 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
15072 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
15073                   </li>
15074                 </ul>
15075
15076             </td> <!-- entry_type -->
15077
15078             <td class="entry_description">
15079               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
15080             </td>
15081
15082             <td class="entry_units">
15083             </td>
15084
15085             <td class="entry_range">
15086               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
15087             </td>
15088
15089             <td class="entry_hal_version">
15090               <p>3.<wbr/>2</p>
15091             </td>
15092
15093             <td class="entry_tags">
15094               <ul class="entry_tags">
15095                   <li><a href="#tag_V1">V1</a></li>
15096                   <li><a href="#tag_REPROC">REPROC</a></li>
15097               </ul>
15098             </td>
15099
15100           </tr>
15101           <tr class="entries_header">
15102             <th class="th_details" colspan="6">Details</th>
15103           </tr>
15104           <tr class="entry_cont">
15105             <td class="entry_details" colspan="6">
15106               <p>The noise reduction algorithm attempts to improve image quality by removing
15107 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
15108 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
15109 YUV domain.<wbr/></p>
15110 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
15111 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
15112 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
15113 <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>
15114 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
15115 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
15116 will use the highest-quality noise filtering algorithms,<wbr/>
15117 even if it slows down capture rate.<wbr/> FAST means the camera device will not
15118 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
15119 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
15120 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
15121 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
15122 buffer of high-resolution images during preview and reprocess image(s) from that buffer
15123 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
15124 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
15125 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
15126 those will be reprocessed later if necessary.<wbr/></p>
15127 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
15128 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
15129 may adjust the noise reduction parameters for best image quality based on the
15130 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
15131             </td>
15132           </tr>
15133
15134           <tr class="entries_header">
15135             <th class="th_details" colspan="6">HAL Implementation Details</th>
15136           </tr>
15137           <tr class="entry_cont">
15138             <td class="entry_details" colspan="6">
15139               <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
15140 adjust the internal noise reduction parameters appropriately to get the best quality
15141 images.<wbr/></p>
15142             </td>
15143           </tr>
15144
15145           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15146            <!-- end of entry -->
15147         
15148         
15149
15150       <!-- end of kind -->
15151       </tbody>
15152
15153   <!-- end of section -->
15154   <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
15155
15156
15157       <tr><td colspan="7" class="kind">static</td></tr>
15158
15159       <thead class="entries_header">
15160         <tr>
15161           <th class="th_name">Property Name</th>
15162           <th class="th_type">Type</th>
15163           <th class="th_description">Description</th>
15164           <th class="th_units">Units</th>
15165           <th class="th_range">Range</th>
15166           <th class="th_hal_version">Initial HIDL HAL version</th>
15167           <th class="th_tags">Tags</th>
15168         </tr>
15169       </thead>
15170
15171       <tbody>
15172
15173         
15174
15175         
15176
15177         
15178
15179         
15180
15181                 
15182           <tr class="entry" id="static_android.quirks.meteringCropRegion">
15183             <td class="entry_name
15184                 entry_name_deprecated
15185              " rowspan="3">
15186               android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
15187             </td>
15188             <td class="entry_type">
15189                 <span class="entry_type_name">byte</span>
15190
15191               <span class="entry_type_visibility"> [system]</span>
15192
15193
15194
15195               <span class="entry_type_deprecated">[deprecated] </span>
15196
15197
15198
15199             </td> <!-- entry_type -->
15200
15201             <td class="entry_description">
15202               <p>If set to 1,<wbr/> the camera service does not
15203 scale 'normalized' coordinates with respect to the crop
15204 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
15205 and output (face rectangles).<wbr/></p>
15206             </td>
15207
15208             <td class="entry_units">
15209             </td>
15210
15211             <td class="entry_range">
15212               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15213             </td>
15214
15215             <td class="entry_hal_version">
15216               <p>3.<wbr/>2</p>
15217             </td>
15218
15219             <td class="entry_tags">
15220             </td>
15221
15222           </tr>
15223           <tr class="entries_header">
15224             <th class="th_details" colspan="6">Details</th>
15225           </tr>
15226           <tr class="entry_cont">
15227             <td class="entry_details" colspan="6">
15228               <p>Normalized coordinates refer to those in the
15229 (-1000,<wbr/>1000) range mentioned in the
15230 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15231 <p>HAL implementations should instead always use and emit
15232 sensor array-relative coordinates for all region data.<wbr/> Does
15233 not need to be listed in static metadata.<wbr/> Support will be
15234 removed in future versions of camera service.<wbr/></p>
15235             </td>
15236           </tr>
15237
15238
15239           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15240            <!-- end of entry -->
15241         
15242                 
15243           <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
15244             <td class="entry_name
15245                 entry_name_deprecated
15246              " rowspan="3">
15247               android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
15248             </td>
15249             <td class="entry_type">
15250                 <span class="entry_type_name">byte</span>
15251
15252               <span class="entry_type_visibility"> [system]</span>
15253
15254
15255
15256               <span class="entry_type_deprecated">[deprecated] </span>
15257
15258
15259
15260             </td> <!-- entry_type -->
15261
15262             <td class="entry_description">
15263               <p>If set to 1,<wbr/> then the camera service always
15264 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
15265 trigger.<wbr/></p>
15266             </td>
15267
15268             <td class="entry_units">
15269             </td>
15270
15271             <td class="entry_range">
15272               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15273             </td>
15274
15275             <td class="entry_hal_version">
15276               <p>3.<wbr/>2</p>
15277             </td>
15278
15279             <td class="entry_tags">
15280             </td>
15281
15282           </tr>
15283           <tr class="entries_header">
15284             <th class="th_details" colspan="6">Details</th>
15285           </tr>
15286           <tr class="entry_cont">
15287             <td class="entry_details" colspan="6">
15288               <p>HAL implementations should implement AF trigger
15289 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
15290 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
15291 not need to be listed in static metadata.<wbr/> Support will be
15292 removed in future versions of camera service</p>
15293             </td>
15294           </tr>
15295
15296
15297           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15298            <!-- end of entry -->
15299         
15300                 
15301           <tr class="entry" id="static_android.quirks.useZslFormat">
15302             <td class="entry_name
15303                 entry_name_deprecated
15304              " rowspan="3">
15305               android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
15306             </td>
15307             <td class="entry_type">
15308                 <span class="entry_type_name">byte</span>
15309
15310               <span class="entry_type_visibility"> [system]</span>
15311
15312
15313
15314               <span class="entry_type_deprecated">[deprecated] </span>
15315
15316
15317
15318             </td> <!-- entry_type -->
15319
15320             <td class="entry_description">
15321               <p>If set to 1,<wbr/> the camera service uses
15322 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
15323 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
15324 shutter lag stream</p>
15325             </td>
15326
15327             <td class="entry_units">
15328             </td>
15329
15330             <td class="entry_range">
15331               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15332             </td>
15333
15334             <td class="entry_hal_version">
15335               <p>3.<wbr/>2</p>
15336             </td>
15337
15338             <td class="entry_tags">
15339             </td>
15340
15341           </tr>
15342           <tr class="entries_header">
15343             <th class="th_details" colspan="6">Details</th>
15344           </tr>
15345           <tr class="entry_cont">
15346             <td class="entry_details" colspan="6">
15347               <p>HAL implementations should use gralloc usage flags
15348 to determine that a stream will be used for
15349 zero-shutter-lag,<wbr/> instead of relying on an explicit
15350 format setting.<wbr/> Does not need to be listed in static
15351 metadata.<wbr/> Support will be removed in future versions of
15352 camera service.<wbr/></p>
15353             </td>
15354           </tr>
15355
15356
15357           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15358            <!-- end of entry -->
15359         
15360                 
15361           <tr class="entry" id="static_android.quirks.usePartialResult">
15362             <td class="entry_name
15363                 entry_name_deprecated
15364              " rowspan="5">
15365               android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
15366             </td>
15367             <td class="entry_type">
15368                 <span class="entry_type_name">byte</span>
15369
15370               <span class="entry_type_visibility"> [hidden]</span>
15371
15372
15373
15374               <span class="entry_type_deprecated">[deprecated] </span>
15375
15376
15377
15378             </td> <!-- entry_type -->
15379
15380             <td class="entry_description">
15381               <p>If set to 1,<wbr/> the HAL will always split result
15382 metadata for a single capture into multiple buffers,<wbr/>
15383 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
15384             </td>
15385
15386             <td class="entry_units">
15387             </td>
15388
15389             <td class="entry_range">
15390               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15391             </td>
15392
15393             <td class="entry_hal_version">
15394               <p>3.<wbr/>2</p>
15395             </td>
15396
15397             <td class="entry_tags">
15398             </td>
15399
15400           </tr>
15401           <tr class="entries_header">
15402             <th class="th_details" colspan="6">Details</th>
15403           </tr>
15404           <tr class="entry_cont">
15405             <td class="entry_details" colspan="6">
15406               <p>Does not need to be listed in static
15407 metadata.<wbr/> Support for partial results will be reworked in
15408 future versions of camera service.<wbr/> This quirk will stop
15409 working at that point; DO NOT USE without careful
15410 consideration of future support.<wbr/></p>
15411             </td>
15412           </tr>
15413
15414           <tr class="entries_header">
15415             <th class="th_details" colspan="6">HAL Implementation Details</th>
15416           </tr>
15417           <tr class="entry_cont">
15418             <td class="entry_details" colspan="6">
15419               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15420 for information on how to implement partial results.<wbr/></p>
15421             </td>
15422           </tr>
15423
15424           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15425            <!-- end of entry -->
15426         
15427         
15428
15429       <!-- end of kind -->
15430       </tbody>
15431       <tr><td colspan="7" class="kind">dynamic</td></tr>
15432
15433       <thead class="entries_header">
15434         <tr>
15435           <th class="th_name">Property Name</th>
15436           <th class="th_type">Type</th>
15437           <th class="th_description">Description</th>
15438           <th class="th_units">Units</th>
15439           <th class="th_range">Range</th>
15440           <th class="th_hal_version">Initial HIDL HAL version</th>
15441           <th class="th_tags">Tags</th>
15442         </tr>
15443       </thead>
15444
15445       <tbody>
15446
15447         
15448
15449         
15450
15451         
15452
15453         
15454
15455                 
15456           <tr class="entry" id="dynamic_android.quirks.partialResult">
15457             <td class="entry_name
15458                 entry_name_deprecated
15459              " rowspan="5">
15460               android.<wbr/>quirks.<wbr/>partial<wbr/>Result
15461             </td>
15462             <td class="entry_type">
15463                 <span class="entry_type_name entry_type_name_enum">byte</span>
15464
15465               <span class="entry_type_visibility"> [hidden as boolean]</span>
15466
15467
15468
15469               <span class="entry_type_deprecated">[deprecated] </span>
15470
15471
15472                 <ul class="entry_type_enum">
15473                   <li>
15474                     <span class="entry_type_enum_name">FINAL (v3.2)</span>
15475                     <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
15476 for this capture.<wbr/></p></span>
15477                   </li>
15478                   <li>
15479                     <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
15480                     <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
15481 capture.<wbr/> More result buffers for this capture will be sent
15482 by the camera device,<wbr/> the last of which will be marked
15483 FINAL.<wbr/></p></span>
15484                   </li>
15485                 </ul>
15486
15487             </td> <!-- entry_type -->
15488
15489             <td class="entry_description">
15490               <p>Whether a result given to the framework is the
15491 final one for the capture,<wbr/> or only a partial that contains a
15492 subset of the full set of dynamic metadata
15493 values.<wbr/></p>
15494             </td>
15495
15496             <td class="entry_units">
15497             </td>
15498
15499             <td class="entry_range">
15500               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15501               <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
15502             </td>
15503
15504             <td class="entry_hal_version">
15505               <p>3.<wbr/>2</p>
15506             </td>
15507
15508             <td class="entry_tags">
15509             </td>
15510
15511           </tr>
15512           <tr class="entries_header">
15513             <th class="th_details" colspan="6">Details</th>
15514           </tr>
15515           <tr class="entry_cont">
15516             <td class="entry_details" colspan="6">
15517               <p>The entries in the result metadata buffers for a
15518 single capture may not overlap,<wbr/> except for this entry.<wbr/> The
15519 FINAL buffers must retain FIFO ordering relative to the
15520 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
15521 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
15522 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
15523 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
15524 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
15525 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
15526             </td>
15527           </tr>
15528
15529           <tr class="entries_header">
15530             <th class="th_details" colspan="6">HAL Implementation Details</th>
15531           </tr>
15532           <tr class="entry_cont">
15533             <td class="entry_details" colspan="6">
15534               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15535 for information on how to implement partial results.<wbr/></p>
15536             </td>
15537           </tr>
15538
15539           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15540            <!-- end of entry -->
15541         
15542         
15543
15544       <!-- end of kind -->
15545       </tbody>
15546
15547   <!-- end of section -->
15548   <tr><td colspan="7" id="section_request" class="section">request</td></tr>
15549
15550
15551       <tr><td colspan="7" class="kind">controls</td></tr>
15552
15553       <thead class="entries_header">
15554         <tr>
15555           <th class="th_name">Property Name</th>
15556           <th class="th_type">Type</th>
15557           <th class="th_description">Description</th>
15558           <th class="th_units">Units</th>
15559           <th class="th_range">Range</th>
15560           <th class="th_hal_version">Initial HIDL HAL version</th>
15561           <th class="th_tags">Tags</th>
15562         </tr>
15563       </thead>
15564
15565       <tbody>
15566
15567         
15568
15569         
15570
15571         
15572
15573         
15574
15575                 
15576           <tr class="entry" id="controls_android.request.frameCount">
15577             <td class="entry_name
15578                 entry_name_deprecated
15579              " rowspan="1">
15580               android.<wbr/>request.<wbr/>frame<wbr/>Count
15581             </td>
15582             <td class="entry_type">
15583                 <span class="entry_type_name">int32</span>
15584
15585               <span class="entry_type_visibility"> [system]</span>
15586
15587
15588
15589               <span class="entry_type_deprecated">[deprecated] </span>
15590
15591
15592
15593             </td> <!-- entry_type -->
15594
15595             <td class="entry_description">
15596               <p>A frame counter set by the framework.<wbr/> Must
15597 be maintained unchanged in output frame.<wbr/> This value monotonically
15598 increases with every new result (that is,<wbr/> each new result has a unique
15599 frameCount value).<wbr/></p>
15600             </td>
15601
15602             <td class="entry_units">
15603               incrementing integer
15604             </td>
15605
15606             <td class="entry_range">
15607               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15608               <p>Any int.<wbr/></p>
15609             </td>
15610
15611             <td class="entry_hal_version">
15612               <p>3.<wbr/>2</p>
15613             </td>
15614
15615             <td class="entry_tags">
15616             </td>
15617
15618           </tr>
15619
15620
15621           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15622            <!-- end of entry -->
15623         
15624                 
15625           <tr class="entry" id="controls_android.request.id">
15626             <td class="entry_name
15627              " rowspan="1">
15628               android.<wbr/>request.<wbr/>id
15629             </td>
15630             <td class="entry_type">
15631                 <span class="entry_type_name">int32</span>
15632
15633               <span class="entry_type_visibility"> [hidden]</span>
15634
15635
15636
15637
15638
15639
15640             </td> <!-- entry_type -->
15641
15642             <td class="entry_description">
15643               <p>An application-specified ID for the current
15644 request.<wbr/> Must be maintained unchanged in output
15645 frame</p>
15646             </td>
15647
15648             <td class="entry_units">
15649               arbitrary integer assigned by application
15650             </td>
15651
15652             <td class="entry_range">
15653               <p>Any int</p>
15654             </td>
15655
15656             <td class="entry_hal_version">
15657               <p>3.<wbr/>2</p>
15658             </td>
15659
15660             <td class="entry_tags">
15661               <ul class="entry_tags">
15662                   <li><a href="#tag_V1">V1</a></li>
15663               </ul>
15664             </td>
15665
15666           </tr>
15667
15668
15669           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15670            <!-- end of entry -->
15671         
15672                 
15673           <tr class="entry" id="controls_android.request.inputStreams">
15674             <td class="entry_name
15675                 entry_name_deprecated
15676              " rowspan="3">
15677               android.<wbr/>request.<wbr/>input<wbr/>Streams
15678             </td>
15679             <td class="entry_type">
15680                 <span class="entry_type_name">int32</span>
15681                 <span class="entry_type_container">x</span>
15682
15683                 <span class="entry_type_array">
15684                   n
15685                 </span>
15686               <span class="entry_type_visibility"> [system]</span>
15687
15688
15689
15690               <span class="entry_type_deprecated">[deprecated] </span>
15691
15692
15693
15694             </td> <!-- entry_type -->
15695
15696             <td class="entry_description">
15697               <p>List which camera reprocess stream is used
15698 for the source of reprocessing data.<wbr/></p>
15699             </td>
15700
15701             <td class="entry_units">
15702               List of camera reprocess stream IDs
15703             </td>
15704
15705             <td class="entry_range">
15706               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15707               <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
15708             </td>
15709
15710             <td class="entry_hal_version">
15711               <p>3.<wbr/>2</p>
15712             </td>
15713
15714             <td class="entry_tags">
15715               <ul class="entry_tags">
15716                   <li><a href="#tag_HAL2">HAL2</a></li>
15717               </ul>
15718             </td>
15719
15720           </tr>
15721           <tr class="entries_header">
15722             <th class="th_details" colspan="6">Details</th>
15723           </tr>
15724           <tr class="entry_cont">
15725             <td class="entry_details" colspan="6">
15726               <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
15727 REPROCESS.<wbr/> Ignored otherwise</p>
15728             </td>
15729           </tr>
15730
15731
15732           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15733            <!-- end of entry -->
15734         
15735                 
15736           <tr class="entry" id="controls_android.request.metadataMode">
15737             <td class="entry_name
15738              " rowspan="1">
15739               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
15740             </td>
15741             <td class="entry_type">
15742                 <span class="entry_type_name entry_type_name_enum">byte</span>
15743
15744               <span class="entry_type_visibility"> [system]</span>
15745
15746
15747
15748
15749
15750                 <ul class="entry_type_enum">
15751                   <li>
15752                     <span class="entry_type_enum_name">NONE (v3.2)</span>
15753                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
15754 for application-bound buffer data.<wbr/> If no
15755 application-bound streams exist,<wbr/> no frame should be
15756 placed in the output frame queue.<wbr/> If such streams
15757 exist,<wbr/> a frame should be placed on the output queue
15758 with null metadata but with the necessary output buffer
15759 information.<wbr/> Timestamp information should still be
15760 included with any output stream buffers</p></span>
15761                   </li>
15762                   <li>
15763                     <span class="entry_type_enum_name">FULL (v3.2)</span>
15764                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
15765 only be produced if they are separately
15766 enabled</p></span>
15767                   </li>
15768                 </ul>
15769
15770             </td> <!-- entry_type -->
15771
15772             <td class="entry_description">
15773               <p>How much metadata to produce on
15774 output</p>
15775             </td>
15776
15777             <td class="entry_units">
15778             </td>
15779
15780             <td class="entry_range">
15781             </td>
15782
15783             <td class="entry_hal_version">
15784               <p>3.<wbr/>2</p>
15785             </td>
15786
15787             <td class="entry_tags">
15788               <ul class="entry_tags">
15789                   <li><a href="#tag_FUTURE">FUTURE</a></li>
15790               </ul>
15791             </td>
15792
15793           </tr>
15794
15795
15796           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15797            <!-- end of entry -->
15798         
15799                 
15800           <tr class="entry" id="controls_android.request.outputStreams">
15801             <td class="entry_name
15802                 entry_name_deprecated
15803              " rowspan="3">
15804               android.<wbr/>request.<wbr/>output<wbr/>Streams
15805             </td>
15806             <td class="entry_type">
15807                 <span class="entry_type_name">int32</span>
15808                 <span class="entry_type_container">x</span>
15809
15810                 <span class="entry_type_array">
15811                   n
15812                 </span>
15813               <span class="entry_type_visibility"> [system]</span>
15814
15815
15816
15817               <span class="entry_type_deprecated">[deprecated] </span>
15818
15819
15820
15821             </td> <!-- entry_type -->
15822
15823             <td class="entry_description">
15824               <p>Lists which camera output streams image data
15825 from this capture must be sent to</p>
15826             </td>
15827
15828             <td class="entry_units">
15829               List of camera stream IDs
15830             </td>
15831
15832             <td class="entry_range">
15833               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15834               <p>List must only include streams that have been
15835 created</p>
15836             </td>
15837
15838             <td class="entry_hal_version">
15839               <p>3.<wbr/>2</p>
15840             </td>
15841
15842             <td class="entry_tags">
15843               <ul class="entry_tags">
15844                   <li><a href="#tag_HAL2">HAL2</a></li>
15845               </ul>
15846             </td>
15847
15848           </tr>
15849           <tr class="entries_header">
15850             <th class="th_details" colspan="6">Details</th>
15851           </tr>
15852           <tr class="entry_cont">
15853             <td class="entry_details" colspan="6">
15854               <p>If no output streams are listed,<wbr/> then the image
15855 data should simply be discarded.<wbr/> The image data must
15856 still be captured for metadata and statistics production,<wbr/>
15857 and the lens and flash must operate as requested.<wbr/></p>
15858             </td>
15859           </tr>
15860
15861
15862           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15863            <!-- end of entry -->
15864         
15865                 
15866           <tr class="entry" id="controls_android.request.type">
15867             <td class="entry_name
15868                 entry_name_deprecated
15869              " rowspan="1">
15870               android.<wbr/>request.<wbr/>type
15871             </td>
15872             <td class="entry_type">
15873                 <span class="entry_type_name entry_type_name_enum">byte</span>
15874
15875               <span class="entry_type_visibility"> [system]</span>
15876
15877
15878
15879               <span class="entry_type_deprecated">[deprecated] </span>
15880
15881
15882                 <ul class="entry_type_enum">
15883                   <li>
15884                     <span class="entry_type_enum_name">CAPTURE (v3.2)</span>
15885                     <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
15886 and process it according to the
15887 settings</p></span>
15888                   </li>
15889                   <li>
15890                     <span class="entry_type_enum_name">REPROCESS (v3.2)</span>
15891                     <span class="entry_type_enum_notes"><p>Process previously captured data; the
15892 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
15893 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
15894 needed for reprocessing with [RP]</p></span>
15895                   </li>
15896                 </ul>
15897
15898             </td> <!-- entry_type -->
15899
15900             <td class="entry_description">
15901               <p>The type of the request; either CAPTURE or
15902 REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p>
15903             </td>
15904
15905             <td class="entry_units">
15906             </td>
15907
15908             <td class="entry_range">
15909               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15910             </td>
15911
15912             <td class="entry_hal_version">
15913               <p>3.<wbr/>2</p>
15914             </td>
15915
15916             <td class="entry_tags">
15917               <ul class="entry_tags">
15918                   <li><a href="#tag_HAL2">HAL2</a></li>
15919               </ul>
15920             </td>
15921
15922           </tr>
15923
15924
15925           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15926            <!-- end of entry -->
15927         
15928         
15929
15930       <!-- end of kind -->
15931       </tbody>
15932       <tr><td colspan="7" class="kind">static</td></tr>
15933
15934       <thead class="entries_header">
15935         <tr>
15936           <th class="th_name">Property Name</th>
15937           <th class="th_type">Type</th>
15938           <th class="th_description">Description</th>
15939           <th class="th_units">Units</th>
15940           <th class="th_range">Range</th>
15941           <th class="th_hal_version">Initial HIDL HAL version</th>
15942           <th class="th_tags">Tags</th>
15943         </tr>
15944       </thead>
15945
15946       <tbody>
15947
15948         
15949
15950         
15951
15952         
15953
15954         
15955
15956                 
15957           <tr class="entry" id="static_android.request.maxNumOutputStreams">
15958             <td class="entry_name
15959              " rowspan="3">
15960               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
15961             </td>
15962             <td class="entry_type">
15963                 <span class="entry_type_name">int32</span>
15964                 <span class="entry_type_container">x</span>
15965
15966                 <span class="entry_type_array">
15967                   3
15968                 </span>
15969               <span class="entry_type_visibility"> [ndk_public]</span>
15970
15971
15972               <span class="entry_type_hwlevel">[legacy] </span>
15973
15974
15975
15976
15977             </td> <!-- entry_type -->
15978
15979             <td class="entry_description">
15980               <p>The maximum numbers of different types of output streams
15981 that can be configured and used simultaneously by a camera device.<wbr/></p>
15982             </td>
15983
15984             <td class="entry_units">
15985             </td>
15986
15987             <td class="entry_range">
15988               <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
15989 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
15990 <p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
15991 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
15992 &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>
15993             </td>
15994
15995             <td class="entry_hal_version">
15996               <p>3.<wbr/>2</p>
15997             </td>
15998
15999             <td class="entry_tags">
16000               <ul class="entry_tags">
16001                   <li><a href="#tag_BC">BC</a></li>
16002               </ul>
16003             </td>
16004
16005           </tr>
16006           <tr class="entries_header">
16007             <th class="th_details" colspan="6">Details</th>
16008           </tr>
16009           <tr class="entry_cont">
16010             <td class="entry_details" colspan="6">
16011               <p>This is a 3 element tuple that contains the max number of output simultaneous
16012 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
16013 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
16014 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
16015 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>
16016 <p>This lists the upper bound of the number of output streams supported by
16017 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16018 CPU resources that will consume more power.<wbr/> The image format for an output stream can
16019 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
16020 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
16021 into the 3 stream types as below:</p>
16022 <ul>
16023 <li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
16024   Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
16025 <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
16026   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
16027 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>  Typically
16028   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
16029   <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>
16030 </ul>
16031             </td>
16032           </tr>
16033
16034
16035           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16036            <!-- end of entry -->
16037         
16038                 
16039           <tr class="entry" id="static_android.request.maxNumOutputRaw">
16040             <td class="entry_name
16041              " rowspan="3">
16042               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
16043             </td>
16044             <td class="entry_type">
16045                 <span class="entry_type_name">int32</span>
16046
16047               <span class="entry_type_visibility"> [java_public]</span>
16048
16049               <span class="entry_type_synthetic">[synthetic] </span>
16050
16051               <span class="entry_type_hwlevel">[legacy] </span>
16052
16053
16054
16055
16056             </td> <!-- entry_type -->
16057
16058             <td class="entry_description">
16059               <p>The maximum numbers of different types of output streams
16060 that can be configured and used simultaneously by a camera device
16061 for any <code>RAW</code> formats.<wbr/></p>
16062             </td>
16063
16064             <td class="entry_units">
16065             </td>
16066
16067             <td class="entry_range">
16068               <p>&gt;= 0</p>
16069             </td>
16070
16071             <td class="entry_hal_version">
16072               <p>3.<wbr/>2</p>
16073             </td>
16074
16075             <td class="entry_tags">
16076             </td>
16077
16078           </tr>
16079           <tr class="entries_header">
16080             <th class="th_details" colspan="6">Details</th>
16081           </tr>
16082           <tr class="entry_cont">
16083             <td class="entry_details" colspan="6">
16084               <p>This value contains the max number of output simultaneous
16085 streams from the raw sensor.<wbr/></p>
16086 <p>This lists the upper bound of the number of output streams supported by
16087 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16088 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16089 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>
16090 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
16091 <ul>
16092 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
16093 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
16094 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
16095 </ul>
16096 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
16097 never support raw streams.<wbr/></p>
16098             </td>
16099           </tr>
16100
16101
16102           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16103            <!-- end of entry -->
16104         
16105                 
16106           <tr class="entry" id="static_android.request.maxNumOutputProc">
16107             <td class="entry_name
16108              " rowspan="3">
16109               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
16110             </td>
16111             <td class="entry_type">
16112                 <span class="entry_type_name">int32</span>
16113
16114               <span class="entry_type_visibility"> [java_public]</span>
16115
16116               <span class="entry_type_synthetic">[synthetic] </span>
16117
16118               <span class="entry_type_hwlevel">[legacy] </span>
16119
16120
16121
16122
16123             </td> <!-- entry_type -->
16124
16125             <td class="entry_description">
16126               <p>The maximum numbers of different types of output streams
16127 that can be configured and used simultaneously by a camera device
16128 for any processed (but not-stalling) formats.<wbr/></p>
16129             </td>
16130
16131             <td class="entry_units">
16132             </td>
16133
16134             <td class="entry_range">
16135               <p>&gt;= 3
16136 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16137 &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>
16138             </td>
16139
16140             <td class="entry_hal_version">
16141               <p>3.<wbr/>2</p>
16142             </td>
16143
16144             <td class="entry_tags">
16145             </td>
16146
16147           </tr>
16148           <tr class="entries_header">
16149             <th class="th_details" colspan="6">Details</th>
16150           </tr>
16151           <tr class="entry_cont">
16152             <td class="entry_details" colspan="6">
16153               <p>This value contains the max number of output simultaneous
16154 streams for any processed (but not-stalling) formats.<wbr/></p>
16155 <p>This lists the upper bound of the number of output streams supported by
16156 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16157 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16158 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>
16159 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
16160 Typically:</p>
16161 <ul>
16162 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
16163 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
16164 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
16165 <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>
16166 </ul>
16167 <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
16168 processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
16169 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
16170             </td>
16171           </tr>
16172
16173
16174           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16175            <!-- end of entry -->
16176         
16177                 
16178           <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
16179             <td class="entry_name
16180              " rowspan="3">
16181               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
16182             </td>
16183             <td class="entry_type">
16184                 <span class="entry_type_name">int32</span>
16185
16186               <span class="entry_type_visibility"> [java_public]</span>
16187
16188               <span class="entry_type_synthetic">[synthetic] </span>
16189
16190               <span class="entry_type_hwlevel">[legacy] </span>
16191
16192
16193
16194
16195             </td> <!-- entry_type -->
16196
16197             <td class="entry_description">
16198               <p>The maximum numbers of different types of output streams
16199 that can be configured and used simultaneously by a camera device
16200 for any processed (and stalling) formats.<wbr/></p>
16201             </td>
16202
16203             <td class="entry_units">
16204             </td>
16205
16206             <td class="entry_range">
16207               <p>&gt;= 1</p>
16208             </td>
16209
16210             <td class="entry_hal_version">
16211               <p>3.<wbr/>2</p>
16212             </td>
16213
16214             <td class="entry_tags">
16215             </td>
16216
16217           </tr>
16218           <tr class="entries_header">
16219             <th class="th_details" colspan="6">Details</th>
16220           </tr>
16221           <tr class="entry_cont">
16222             <td class="entry_details" colspan="6">
16223               <p>This value contains the max number of output simultaneous
16224 streams for any processed (but not-stalling) formats.<wbr/></p>
16225 <p>This lists the upper bound of the number of output streams supported by
16226 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16227 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16228 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>
16229 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations
16230 &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>
16231 <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
16232 processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
16233 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
16234             </td>
16235           </tr>
16236
16237
16238           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16239            <!-- end of entry -->
16240         
16241                 
16242           <tr class="entry" id="static_android.request.maxNumReprocessStreams">
16243             <td class="entry_name
16244                 entry_name_deprecated
16245              " rowspan="3">
16246               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
16247             </td>
16248             <td class="entry_type">
16249                 <span class="entry_type_name">int32</span>
16250                 <span class="entry_type_container">x</span>
16251
16252                 <span class="entry_type_array">
16253                   1
16254                 </span>
16255               <span class="entry_type_visibility"> [system]</span>
16256
16257
16258
16259               <span class="entry_type_deprecated">[deprecated] </span>
16260
16261
16262
16263             </td> <!-- entry_type -->
16264
16265             <td class="entry_description">
16266               <p>How many reprocessing streams of any type
16267 can be allocated at the same time.<wbr/></p>
16268             </td>
16269
16270             <td class="entry_units">
16271             </td>
16272
16273             <td class="entry_range">
16274               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16275               <p>&gt;= 0</p>
16276             </td>
16277
16278             <td class="entry_hal_version">
16279               <p>3.<wbr/>2</p>
16280             </td>
16281
16282             <td class="entry_tags">
16283               <ul class="entry_tags">
16284                   <li><a href="#tag_HAL2">HAL2</a></li>
16285               </ul>
16286             </td>
16287
16288           </tr>
16289           <tr class="entries_header">
16290             <th class="th_details" colspan="6">Details</th>
16291           </tr>
16292           <tr class="entry_cont">
16293             <td class="entry_details" colspan="6">
16294               <p>Only used by HAL2.<wbr/>x.<wbr/></p>
16295 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
16296             </td>
16297           </tr>
16298
16299
16300           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16301            <!-- end of entry -->
16302         
16303                 
16304           <tr class="entry" id="static_android.request.maxNumInputStreams">
16305             <td class="entry_name
16306              " rowspan="5">
16307               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
16308             </td>
16309             <td class="entry_type">
16310                 <span class="entry_type_name">int32</span>
16311
16312               <span class="entry_type_visibility"> [java_public]</span>
16313
16314
16315               <span class="entry_type_hwlevel">[full] </span>
16316
16317
16318
16319
16320             </td> <!-- entry_type -->
16321
16322             <td class="entry_description">
16323               <p>The maximum numbers of any type of input streams
16324 that can be configured and used simultaneously by a camera device.<wbr/></p>
16325             </td>
16326
16327             <td class="entry_units">
16328             </td>
16329
16330             <td class="entry_range">
16331               <p>0 or 1.<wbr/></p>
16332             </td>
16333
16334             <td class="entry_hal_version">
16335               <p>3.<wbr/>2</p>
16336             </td>
16337
16338             <td class="entry_tags">
16339               <ul class="entry_tags">
16340                   <li><a href="#tag_REPROC">REPROC</a></li>
16341               </ul>
16342             </td>
16343
16344           </tr>
16345           <tr class="entries_header">
16346             <th class="th_details" colspan="6">Details</th>
16347           </tr>
16348           <tr class="entry_cont">
16349             <td class="entry_details" colspan="6">
16350               <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
16351 <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
16352 input stream,<wbr/> there must be at least one output stream configured to to receive the
16353 reprocessed images.<wbr/></p>
16354 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
16355 only the input buffer will be used to produce these output stream buffers,<wbr/> and a
16356 new sensor image will not be captured.<wbr/></p>
16357 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
16358 stream image format will be PRIVATE,<wbr/> the associated output stream image format
16359 should be JPEG.<wbr/></p>
16360             </td>
16361           </tr>
16362
16363           <tr class="entries_header">
16364             <th class="th_details" colspan="6">HAL Implementation Details</th>
16365           </tr>
16366           <tr class="entry_cont">
16367             <td class="entry_details" colspan="6">
16368               <p>For the reprocessing flow and controls,<wbr/> see
16369 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
16370             </td>
16371           </tr>
16372
16373           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16374            <!-- end of entry -->
16375         
16376                 
16377           <tr class="entry" id="static_android.request.pipelineMaxDepth">
16378             <td class="entry_name
16379              " rowspan="5">
16380               android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
16381             </td>
16382             <td class="entry_type">
16383                 <span class="entry_type_name">byte</span>
16384
16385               <span class="entry_type_visibility"> [public]</span>
16386
16387
16388               <span class="entry_type_hwlevel">[legacy] </span>
16389
16390
16391
16392
16393             </td> <!-- entry_type -->
16394
16395             <td class="entry_description">
16396               <p>Specifies the number of maximum pipeline stages a frame
16397 has to go through from when it's exposed to when it's available
16398 to the framework.<wbr/></p>
16399             </td>
16400
16401             <td class="entry_units">
16402             </td>
16403
16404             <td class="entry_range">
16405             </td>
16406
16407             <td class="entry_hal_version">
16408               <p>3.<wbr/>2</p>
16409             </td>
16410
16411             <td class="entry_tags">
16412             </td>
16413
16414           </tr>
16415           <tr class="entries_header">
16416             <th class="th_details" colspan="6">Details</th>
16417           </tr>
16418           <tr class="entry_cont">
16419             <td class="entry_details" colspan="6">
16420               <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
16421 one stage to readout) from the sensor.<wbr/> The ISP then usually adds
16422 its own stages to do custom HW processing.<wbr/> Further stages may be
16423 added by SW processing.<wbr/></p>
16424 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
16425 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
16426 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
16427 the max pipeline depth.<wbr/></p>
16428 <p>A pipeline depth of X stages is equivalent to a pipeline latency of
16429 X frame intervals.<wbr/></p>
16430 <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
16431 the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
16432             </td>
16433           </tr>
16434
16435           <tr class="entries_header">
16436             <th class="th_details" colspan="6">HAL Implementation Details</th>
16437           </tr>
16438           <tr class="entry_cont">
16439             <td class="entry_details" colspan="6">
16440               <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
16441 max batch sizes may be larger than 1.<wbr/></p>
16442             </td>
16443           </tr>
16444
16445           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16446            <!-- end of entry -->
16447         
16448                 
16449           <tr class="entry" id="static_android.request.partialResultCount">
16450             <td class="entry_name
16451              " rowspan="3">
16452               android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
16453             </td>
16454             <td class="entry_type">
16455                 <span class="entry_type_name">int32</span>
16456
16457               <span class="entry_type_visibility"> [public]</span>
16458
16459
16460
16461
16462
16463
16464             </td> <!-- entry_type -->
16465
16466             <td class="entry_description">
16467               <p>Defines how many sub-components
16468 a result will be composed of.<wbr/></p>
16469             </td>
16470
16471             <td class="entry_units">
16472             </td>
16473
16474             <td class="entry_range">
16475               <p>&gt;= 1</p>
16476             </td>
16477
16478             <td class="entry_hal_version">
16479               <p>3.<wbr/>2</p>
16480             </td>
16481
16482             <td class="entry_tags">
16483             </td>
16484
16485           </tr>
16486           <tr class="entries_header">
16487             <th class="th_details" colspan="6">Details</th>
16488           </tr>
16489           <tr class="entry_cont">
16490             <td class="entry_details" colspan="6">
16491               <p>In order to combat the pipeline latency,<wbr/> partial results
16492 may be delivered to the application layer from the camera device as
16493 soon as they are available.<wbr/></p>
16494 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
16495 results are not supported,<wbr/> and only the final TotalCaptureResult will
16496 be produced by the camera device.<wbr/></p>
16497 <p>A typical use case for this might be: after requesting an
16498 auto-focus (AF) lock the new AF state might be available 50%
16499 of the way through the pipeline.<wbr/>  The camera device could
16500 then immediately dispatch this state via a partial result to
16501 the application,<wbr/> and the rest of the metadata via later
16502 partial results.<wbr/></p>
16503             </td>
16504           </tr>
16505
16506
16507           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16508            <!-- end of entry -->
16509         
16510                 
16511           <tr class="entry" id="static_android.request.availableCapabilities">
16512             <td class="entry_name
16513              " rowspan="5">
16514               android.<wbr/>request.<wbr/>available<wbr/>Capabilities
16515             </td>
16516             <td class="entry_type">
16517                 <span class="entry_type_name entry_type_name_enum">byte</span>
16518                 <span class="entry_type_container">x</span>
16519
16520                 <span class="entry_type_array">
16521                   n
16522                 </span>
16523               <span class="entry_type_visibility"> [public]</span>
16524
16525
16526               <span class="entry_type_hwlevel">[legacy] </span>
16527
16528
16529
16530                 <ul class="entry_type_enum">
16531                   <li>
16532                     <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span>
16533                     <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
16534 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
16535 supports.<wbr/></p>
16536 <p>This capability is listed by all normal devices,<wbr/> and
16537 indicates that the camera device has a feature set
16538 that's comparable to the baseline requirements for the
16539 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
16540 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
16541 capability,<wbr/> indicating that they support only depth measurement,<wbr/>
16542 not standard color output.<wbr/></p></span>
16543                   </li>
16544                   <li>
16545                     <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span>
16546                     <span class="entry_type_enum_optional">[optional]</span>
16547                     <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
16548 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
16549 The camera device supports basic manual control of the sensor image
16550 acquisition related stages.<wbr/> This means the following controls are
16551 guaranteed to be supported:</p>
16552 <ul>
16553 <li>Manual frame duration control<ul>
16554 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
16555 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
16556 </ul>
16557 </li>
16558 <li>Manual exposure control<ul>
16559 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16560 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
16561 </ul>
16562 </li>
16563 <li>Manual sensitivity control<ul>
16564 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16565 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
16566 </ul>
16567 </li>
16568 <li>Manual lens control (if the lens is adjustable)<ul>
16569 <li>android.<wbr/>lens.<wbr/>*</li>
16570 </ul>
16571 </li>
16572 <li>Manual flash control (if a flash unit is present)<ul>
16573 <li>android.<wbr/>flash.<wbr/>*</li>
16574 </ul>
16575 </li>
16576 <li>Manual black level locking<ul>
16577 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
16578 </ul>
16579 </li>
16580 <li>Auto exposure lock<ul>
16581 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16582 </ul>
16583 </li>
16584 </ul>
16585 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
16586 device will accurately report the values applied by 3A in the
16587 result.<wbr/></p>
16588 <p>A given camera device may also support additional manual sensor controls,<wbr/>
16589 but this capability only covers the above list of controls.<wbr/></p>
16590 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
16591 additionally return a min frame duration that is greater than
16592 zero for each supported size-format combination.<wbr/></p></span>
16593                   </li>
16594                   <li>
16595                     <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span>
16596                     <span class="entry_type_enum_optional">[optional]</span>
16597                     <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
16598 The camera device supports basic manual control of the image post-processing
16599 stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
16600 <ul>
16601 <li>
16602 <p>Manual tonemap control</p>
16603 <ul>
16604 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
16605 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
16606 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
16607 <li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
16608 <li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
16609 </ul>
16610 </li>
16611 <li>
16612 <p>Manual white balance control</p>
16613 <ul>
16614 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
16615 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
16616 </ul>
16617 </li>
16618 <li>Manual lens shading map control<ul>
16619 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
16620 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
16621 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
16622 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
16623 </ul>
16624 </li>
16625 <li>Manual aberration correction control (if aberration correction is supported)<ul>
16626 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
16627 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
16628 </ul>
16629 </li>
16630 <li>Auto white balance lock<ul>
16631 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16632 </ul>
16633 </li>
16634 </ul>
16635 <p>If auto white balance is enabled,<wbr/> then the camera device
16636 will accurately report the values applied by AWB in the result.<wbr/></p>
16637 <p>A given camera device may also support additional post-processing
16638 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
16639                   </li>
16640                   <li>
16641                     <span class="entry_type_enum_name">RAW (v3.2)</span>
16642                     <span class="entry_type_enum_optional">[optional]</span>
16643                     <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
16644 metadata for interpreting them.<wbr/></p>
16645 <p>Devices supporting the RAW capability allow both for
16646 saving DNG files,<wbr/> and for direct application processing of
16647 raw sensor images.<wbr/></p>
16648 <ul>
16649 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
16650 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams
16651   will match either the value in
16652   <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
16653   <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>
16654 <li>All DNG-related optional metadata entries are provided
16655   by the camera device.<wbr/></li>
16656 </ul></span>
16657                   </li>
16658                   <li>
16659                     <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span>
16660                     <span class="entry_type_enum_optional">[optional]</span>
16661                     <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
16662 <ul>
16663 <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>
16664 <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/>
16665   that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
16666   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>
16667 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16668   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>
16669 <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>
16670 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
16671   relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16672 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
16673   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
16674   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
16675 <li>The maximum available resolution for PRIVATE streams
16676   (both input/<wbr/>output) will match the maximum available
16677   resolution of JPEG streams.<wbr/></li>
16678 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16679 <li>Only below controls are effective for reprocessing requests and
16680   will be present in capture results,<wbr/> other controls in reprocess
16681   requests will be ignored by the camera device.<wbr/><ul>
16682 <li>android.<wbr/>jpeg.<wbr/>*</li>
16683 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16684 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16685 </ul>
16686 </li>
16687 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16688   <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>
16689 </ul></span>
16690                   </li>
16691                   <li>
16692                     <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span>
16693                     <span class="entry_type_enum_optional">[optional]</span>
16694                     <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
16695 the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
16696 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
16697 <p>The values reported for the following controls are guaranteed to be available
16698 in the CaptureResult,<wbr/> including when 3A is enabled:</p>
16699 <ul>
16700 <li>Exposure control<ul>
16701 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16702 </ul>
16703 </li>
16704 <li>Sensitivity control<ul>
16705 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16706 </ul>
16707 </li>
16708 <li>Lens controls (if the lens is adjustable)<ul>
16709 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
16710 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
16711 </ul>
16712 </li>
16713 </ul>
16714 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
16715 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
16716                   </li>
16717                   <li>
16718                     <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span>
16719                     <span class="entry_type_enum_optional">[optional]</span>
16720                     <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
16721 second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
16722 to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at &gt;= 10 frames
16723 per second.<wbr/>  Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
16724 resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span>
16725                   </li>
16726                   <li>
16727                     <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span>
16728                     <span class="entry_type_enum_optional">[optional]</span>
16729                     <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
16730 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
16731 following:</p>
16732 <ul>
16733 <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>
16734 <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
16735   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>
16736 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16737   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>
16738 <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>
16739 <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
16740   drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16741 <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
16742   <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>
16743 <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
16744   maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
16745 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16746 <li>Only the below controls are effective for reprocessing requests and will be present
16747   in capture results.<wbr/> The reprocess requests are from the original capture results
16748   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
16749   reprocess requests will be ignored by the camera device.<wbr/><ul>
16750 <li>android.<wbr/>jpeg.<wbr/>*</li>
16751 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16752 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16753 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
16754 </ul>
16755 </li>
16756 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16757   <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>
16758 </ul></span>
16759                   </li>
16760                   <li>
16761                     <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span>
16762                     <span class="entry_type_enum_optional">[optional]</span>
16763                     <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
16764 <p>This capability requires the camera device to support the following:</p>
16765 <ul>
16766 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as
16767   an output format.<wbr/></li>
16768 <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
16769   optionally supported as an output format.<wbr/></li>
16770 <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
16771   list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>
16772   and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
16773 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
16774 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
16775 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
16776 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
16777 </ul>
16778 </li>
16779 <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>
16780 <li>As of Android P,<wbr/> the <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> entry is listed by this device.<wbr/></li>
16781 <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
16782   normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
16783   format.<wbr/></li>
16784 </ul>
16785 <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
16786 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
16787 should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
16788 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
16789 using a repeating burst is recommended,<wbr/> where a depth-output target is only included
16790 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
16791 rate,<wbr/> including depth stall time.<wbr/></p></span>
16792                   </li>
16793                   <li>
16794                     <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span>
16795                     <span class="entry_type_enum_optional">[optional]</span>
16796                     <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps) use
16797 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
16798 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>
16799 <p>A camera device can still support high speed video streaming by advertising the high
16800 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
16801 normal capture request per frame control and synchronization requirements will apply
16802 to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability
16803 describes the capability of a specialized operating mode with many limitations (see
16804 below),<wbr/> which is only targeted at high speed video recording.<wbr/></p>
16805 <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/>
16806 To get desired output frame rates,<wbr/> the application is only allowed to select video
16807 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
16808 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>
16809 <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
16810 ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
16811 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
16812 and post-processing parameters is possible.<wbr/> All other controls operate the
16813 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
16814 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
16815 <ul>
16816 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
16817 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
16818 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16819 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16820 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
16821 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
16822 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
16823 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
16824 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
16825 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
16826 </ul>
16827 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
16828 <ul>
16829 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
16830 work since aeMode is ON)</li>
16831 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
16832 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
16833 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
16834 </ul>
16835 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
16836 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
16837 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
16838 the application need check if the video encoder is capable of supporting the
16839 high frame rate for a given video size,<wbr/> or it will end up with lower recording
16840 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
16841 rate will be bounded by the screen refresh rate.<wbr/></p>
16842 <p>The camera device will only support up to 2 high speed simultaneous output surfaces
16843 (preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only
16844 if all of below conditions are true:</p>
16845 <ul>
16846 <li>The application creates a camera capture session with no more than 2 surfaces via
16847 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
16848 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
16849 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>
16850 <li>The stream sizes are selected from the sizes reported by
16851 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
16852 <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>
16853 </ul>
16854 <p>When above conditions are NOT satistied,<wbr/>
16855 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
16856 will fail.<wbr/></p>
16857 <p>Switching to a FPS range that has different maximum FPS may trigger some camera device
16858 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
16859 the application avoids unnecessary maximum target FPS changes as much as possible
16860 during high speed streaming.<wbr/></p></span>
16861                   </li>
16862                   <li>
16863                     <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
16864                     <span class="entry_type_enum_optional">[optional]</span>
16865                     <span class="entry_type_enum_notes"><p>The camera device supports the MOTION_<wbr/>TRACKING value for
16866 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a>,<wbr/> which limits maximum exposure time to 20 ms.<wbr/></p>
16867 <p>This limits the motion blur of capture images,<wbr/> resulting in better image tracking
16868 results for use cases such as image stabilization or augmented reality.<wbr/></p></span>
16869                   </li>
16870                   <li>
16871                     <span class="entry_type_enum_name">LOGICAL_MULTI_CAMERA (v3.3)</span>
16872                     <span class="entry_type_enum_optional">[optional]</span>
16873                     <span class="entry_type_enum_notes"><p>The camera device is a logical camera backed by two or more physical cameras that are
16874 also exposed to the application.<wbr/></p>
16875 <p>This capability requires the camera device to support the following:</p>
16876 <ul>
16877 <li>This camera device must list the following static metadata entries in <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>:<ul>
16878 <li><a href="#static_android.logicalMultiCamera.physicalIds">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids</a></li>
16879 <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type</a></li>
16880 </ul>
16881 </li>
16882 <li>The underlying physical cameras' static metadata must list the following entries,<wbr/>
16883   so that the application can correlate pixels from the physical streams:<ul>
16884 <li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
16885 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
16886 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
16887 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
16888 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
16889 </ul>
16890 </li>
16891 <li>The SENSOR_<wbr/>INFO_<wbr/>TIMESTAMP_<wbr/>SOURCE of the logical device and physical devices must be
16892   the same.<wbr/></li>
16893 <li>The logical camera device must be LIMITED or higher device.<wbr/></li>
16894 </ul>
16895 <p>Both the logical camera device and its underlying physical devices support the
16896 mandatory stream combinations required for their device levels.<wbr/></p>
16897 <p>Additionally,<wbr/> for each guaranteed stream combination,<wbr/> the logical camera supports:</p>
16898 <ul>
16899 <li>For each guaranteed stream combination,<wbr/> the logical camera supports replacing one
16900   logical <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>
16901   or raw stream with two physical streams of the same size and format,<wbr/> each from a
16902   separate physical camera,<wbr/> given that the size and format are supported by both
16903   physical cameras.<wbr/></li>
16904 <li>If the logical camera doesn't advertise RAW capability,<wbr/> but the underlying physical
16905   cameras do,<wbr/> the logical camera will support guaranteed stream combinations for RAW
16906   capability,<wbr/> except that the RAW streams will be physical streams,<wbr/> each from a separate
16907   physical camera.<wbr/> This is usually the case when the physical cameras have different
16908   sensor sizes.<wbr/></li>
16909 </ul>
16910 <p>Using physical streams in place of a logical stream of the same size and format will
16911 not slow down the frame rate of the capture,<wbr/> as long as the minimum frame duration
16912 of the physical and logical streams are the same.<wbr/></p></span>
16913                   </li>
16914                 </ul>
16915
16916             </td> <!-- entry_type -->
16917
16918             <td class="entry_description">
16919               <p>List of capabilities that this camera device
16920 advertises as fully supporting.<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>A capability is a contract that the camera device makes in order
16943 to be able to satisfy one or more use cases.<wbr/></p>
16944 <p>Listing a capability guarantees that the whole set of features
16945 required to support a common use will all be available.<wbr/></p>
16946 <p>Using a subset of the functionality provided by an unsupported
16947 capability may be possible on a specific camera device implementation;
16948 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
16949 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
16950 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
16951 <p>The following capabilities are guaranteed to be available on
16952 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
16953 <ul>
16954 <li>MANUAL_<wbr/>SENSOR</li>
16955 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
16956 </ul>
16957 <p>Other capabilities may be available on either FULL or LIMITED
16958 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
16959             </td>
16960           </tr>
16961
16962           <tr class="entries_header">
16963             <th class="th_details" colspan="6">HAL Implementation Details</th>
16964           </tr>
16965           <tr class="entry_cont">
16966             <td class="entry_details" colspan="6">
16967               <p>Additional constraint details per-capability will be available
16968 in the Compatibility Test Suite.<wbr/></p>
16969 <p>Minimum baseline requirements required for the
16970 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
16971 Instead refer to "BC" tags and the camera CTS tests in the
16972 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
16973 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
16974 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
16975 request and the result in order to be considered to be
16976 capability-compliant.<wbr/></p>
16977 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
16978 then exposure time must be configurable via the request <em>and</em>
16979 the actual exposure applied must be available via
16980 the result.<wbr/></p>
16981 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
16982 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
16983 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
16984 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
16985 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
16986 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
16987 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
16988 YUV_<wbr/>REPROCESSING capability must support the
16989 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
16990 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
16991 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
16992 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
16993 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
16994 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
16995 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
16996 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
16997 DEPTH).<wbr/></p>
16998 <p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the
16999 same way as a physical camera device based on its hardware level and capabilities.<wbr/>
17000 It's recommended that its feature set is superset of that of individual physical cameras.<wbr/></p>
17001             </td>
17002           </tr>
17003
17004           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17005            <!-- end of entry -->
17006         
17007                 
17008           <tr class="entry" id="static_android.request.availableRequestKeys">
17009             <td class="entry_name
17010              " rowspan="5">
17011               android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
17012             </td>
17013             <td class="entry_type">
17014                 <span class="entry_type_name">int32</span>
17015                 <span class="entry_type_container">x</span>
17016
17017                 <span class="entry_type_array">
17018                   n
17019                 </span>
17020               <span class="entry_type_visibility"> [ndk_public]</span>
17021
17022
17023               <span class="entry_type_hwlevel">[legacy] </span>
17024
17025
17026
17027
17028             </td> <!-- entry_type -->
17029
17030             <td class="entry_description">
17031               <p>A list of all keys that the camera device has available
17032 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
17033             </td>
17034
17035             <td class="entry_units">
17036             </td>
17037
17038             <td class="entry_range">
17039             </td>
17040
17041             <td class="entry_hal_version">
17042               <p>3.<wbr/>2</p>
17043             </td>
17044
17045             <td class="entry_tags">
17046             </td>
17047
17048           </tr>
17049           <tr class="entries_header">
17050             <th class="th_details" colspan="6">Details</th>
17051           </tr>
17052           <tr class="entry_cont">
17053             <td class="entry_details" colspan="6">
17054               <p>Attempting to set a key into a CaptureRequest that is not
17055 listed here will result in an invalid request and will be rejected
17056 by the camera device.<wbr/></p>
17057 <p>This field can be used to query the feature set of a camera device
17058 at a more granular level than capabilities.<wbr/> This is especially
17059 important for optional keys that are not listed under any capability
17060 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17061             </td>
17062           </tr>
17063
17064           <tr class="entries_header">
17065             <th class="th_details" colspan="6">HAL Implementation Details</th>
17066           </tr>
17067           <tr class="entry_cont">
17068             <td class="entry_details" colspan="6">
17069               <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17070 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17071 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17072 vendor extensions API and not against this field.<wbr/></p>
17073 <p>The HAL must not consume any request tags that are not listed either
17074 here or in the vendor tag list.<wbr/></p>
17075 <p>The public camera2 API will always make the vendor tags visible
17076 via
17077 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
17078             </td>
17079           </tr>
17080
17081           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17082            <!-- end of entry -->
17083         
17084                 
17085           <tr class="entry" id="static_android.request.availableResultKeys">
17086             <td class="entry_name
17087              " rowspan="5">
17088               android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
17089             </td>
17090             <td class="entry_type">
17091                 <span class="entry_type_name">int32</span>
17092                 <span class="entry_type_container">x</span>
17093
17094                 <span class="entry_type_array">
17095                   n
17096                 </span>
17097               <span class="entry_type_visibility"> [ndk_public]</span>
17098
17099
17100               <span class="entry_type_hwlevel">[legacy] </span>
17101
17102
17103
17104
17105             </td> <!-- entry_type -->
17106
17107             <td class="entry_description">
17108               <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>
17109             </td>
17110
17111             <td class="entry_units">
17112             </td>
17113
17114             <td class="entry_range">
17115             </td>
17116
17117             <td class="entry_hal_version">
17118               <p>3.<wbr/>2</p>
17119             </td>
17120
17121             <td class="entry_tags">
17122             </td>
17123
17124           </tr>
17125           <tr class="entries_header">
17126             <th class="th_details" colspan="6">Details</th>
17127           </tr>
17128           <tr class="entry_cont">
17129             <td class="entry_details" colspan="6">
17130               <p>Attempting to get a key from a CaptureResult that is not
17131 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
17132 a CaptureResult that is listed here will generally never return a <code>null</code>
17133 value.<wbr/></p>
17134 <p>The following keys may return <code>null</code> unless they are enabled:</p>
17135 <ul>
17136 <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>
17137 </ul>
17138 <p>(Those sometimes-null keys will nevertheless be listed here
17139 if they are available.<wbr/>)</p>
17140 <p>This field can be used to query the feature set of a camera device
17141 at a more granular level than capabilities.<wbr/> This is especially
17142 important for optional keys that are not listed under any capability
17143 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17144             </td>
17145           </tr>
17146
17147           <tr class="entries_header">
17148             <th class="th_details" colspan="6">HAL Implementation Details</th>
17149           </tr>
17150           <tr class="entry_cont">
17151             <td class="entry_details" colspan="6">
17152               <p>Tags listed here must always have an entry in the result metadata,<wbr/>
17153 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17154 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17155 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17156 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17157 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17158 vendor extensions API and not against this field.<wbr/></p>
17159 <p>The HAL must not produce any result tags that are not listed either
17160 here or in the vendor tag list.<wbr/></p>
17161 <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>
17162             </td>
17163           </tr>
17164
17165           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17166            <!-- end of entry -->
17167         
17168                 
17169           <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
17170             <td class="entry_name
17171              " rowspan="5">
17172               android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
17173             </td>
17174             <td class="entry_type">
17175                 <span class="entry_type_name">int32</span>
17176                 <span class="entry_type_container">x</span>
17177
17178                 <span class="entry_type_array">
17179                   n
17180                 </span>
17181               <span class="entry_type_visibility"> [ndk_public]</span>
17182
17183
17184               <span class="entry_type_hwlevel">[legacy] </span>
17185
17186
17187
17188
17189             </td> <!-- entry_type -->
17190
17191             <td class="entry_description">
17192               <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>
17193             </td>
17194
17195             <td class="entry_units">
17196             </td>
17197
17198             <td class="entry_range">
17199             </td>
17200
17201             <td class="entry_hal_version">
17202               <p>3.<wbr/>2</p>
17203             </td>
17204
17205             <td class="entry_tags">
17206             </td>
17207
17208           </tr>
17209           <tr class="entries_header">
17210             <th class="th_details" colspan="6">Details</th>
17211           </tr>
17212           <tr class="entry_cont">
17213             <td class="entry_details" colspan="6">
17214               <p>This entry follows the same rules as
17215 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
17216 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
17217 details.<wbr/></p>
17218             </td>
17219           </tr>
17220
17221           <tr class="entries_header">
17222             <th class="th_details" colspan="6">HAL Implementation Details</th>
17223           </tr>
17224           <tr class="entry_cont">
17225             <td class="entry_details" colspan="6">
17226               <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
17227 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17228 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17229 <p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
17230 the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17231 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17232 vendor extensions API and not against this field.<wbr/></p>
17233 <p>The HAL must not have any tags in its static info that are not listed
17234 either here or in the vendor tag list.<wbr/></p>
17235 <p>The public camera2 API will always make the vendor tags visible
17236 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
17237             </td>
17238           </tr>
17239
17240           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17241            <!-- end of entry -->
17242         
17243                 
17244           <tr class="entry" id="static_android.request.availableSessionKeys">
17245             <td class="entry_name
17246              " rowspan="5">
17247               android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys
17248             </td>
17249             <td class="entry_type">
17250                 <span class="entry_type_name">int32</span>
17251                 <span class="entry_type_container">x</span>
17252
17253                 <span class="entry_type_array">
17254                   n
17255                 </span>
17256               <span class="entry_type_visibility"> [ndk_public]</span>
17257
17258
17259               <span class="entry_type_hwlevel">[legacy] </span>
17260
17261
17262
17263
17264             </td> <!-- entry_type -->
17265
17266             <td class="entry_description">
17267               <p>A subset of the available request keys that the camera device
17268 can pass as part of the capture session initialization.<wbr/></p>
17269             </td>
17270
17271             <td class="entry_units">
17272             </td>
17273
17274             <td class="entry_range">
17275             </td>
17276
17277             <td class="entry_hal_version">
17278               <p>3.<wbr/>3</p>
17279             </td>
17280
17281             <td class="entry_tags">
17282             </td>
17283
17284           </tr>
17285           <tr class="entries_header">
17286             <th class="th_details" colspan="6">Details</th>
17287           </tr>
17288           <tr class="entry_cont">
17289             <td class="entry_details" colspan="6">
17290               <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which
17291 contains a list of keys that are difficult to apply per-frame and
17292 can result in unexpected delays when modified during the capture session
17293 lifetime.<wbr/> Typical examples include parameters that require a
17294 time-consuming hardware re-configuration or internal camera pipeline
17295 change.<wbr/> For performance reasons we advise clients to pass their initial
17296 values as part of
17297 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17298 Once the camera capture session is enabled it is also recommended to avoid
17299 changing them from their initial values set in
17300 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17301 Control over session parameters can still be exerted in capture requests
17302 but clients should be aware and expect delays during their application.<wbr/>
17303 An example usage scenario could look like this:</p>
17304 <ul>
17305 <li>The camera client starts by quering the session parameter key list via
17306   <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li>
17307 <li>Before triggering the capture session create sequence,<wbr/> a capture request
17308   must be built via
17309   <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a>
17310   using an appropriate template matching the particular use case.<wbr/></li>
17311 <li>The client should go over the list of session parameters and check
17312   whether some of the keys listed matches with the parameters that
17313   they intend to modify as part of the first capture request.<wbr/></li>
17314 <li>If there is no such match,<wbr/> the capture request can be  passed
17315   unmodified to
17316   <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17317 <li>If matches do exist,<wbr/> the client should update the respective values
17318   and pass the request to
17319   <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17320 <li>After the capture session initialization completes the session parameter
17321   key list can continue to serve as reference when posting or updating
17322   further requests.<wbr/> As mentioned above further changes to session
17323   parameters should ideally be avoided,<wbr/> if updates are necessary
17324   however clients could expect a delay/<wbr/>glitch during the
17325   parameter switch.<wbr/></li>
17326 </ul>
17327             </td>
17328           </tr>
17329
17330           <tr class="entries_header">
17331             <th class="th_details" colspan="6">HAL Implementation Details</th>
17332           </tr>
17333           <tr class="entry_cont">
17334             <td class="entry_details" colspan="6">
17335               <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17336 use the extensions C api (refer to
17337 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p>
17338 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17339 vendor extensions API and not against this field.<wbr/></p>
17340 <p>The HAL must not consume any request tags in the session parameters that
17341 are not listed either here or in the vendor tag list.<wbr/></p>
17342 <p>The public camera2 API will always make the vendor tags visible
17343 via
17344 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
17345             </td>
17346           </tr>
17347
17348           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17349            <!-- end of entry -->
17350         
17351                 
17352           <tr class="entry" id="static_android.request.availablePhysicalCameraRequestKeys">
17353             <td class="entry_name
17354              " rowspan="5">
17355               android.<wbr/>request.<wbr/>available<wbr/>Physical<wbr/>Camera<wbr/>Request<wbr/>Keys
17356             </td>
17357             <td class="entry_type">
17358                 <span class="entry_type_name">int32</span>
17359                 <span class="entry_type_container">x</span>
17360
17361                 <span class="entry_type_array">
17362                   n
17363                 </span>
17364               <span class="entry_type_visibility"> [hidden]</span>
17365
17366
17367               <span class="entry_type_hwlevel">[limited] </span>
17368
17369
17370
17371
17372             </td> <!-- entry_type -->
17373
17374             <td class="entry_description">
17375               <p>A subset of the available request keys that can be overriden for
17376 physical devices backing a logical multi-camera.<wbr/></p>
17377             </td>
17378
17379             <td class="entry_units">
17380             </td>
17381
17382             <td class="entry_range">
17383             </td>
17384
17385             <td class="entry_hal_version">
17386               <p>3.<wbr/>3</p>
17387             </td>
17388
17389             <td class="entry_tags">
17390             </td>
17391
17392           </tr>
17393           <tr class="entries_header">
17394             <th class="th_details" colspan="6">Details</th>
17395           </tr>
17396           <tr class="entry_cont">
17397             <td class="entry_details" colspan="6">
17398               <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which contains a list
17399 of keys that can be overriden using <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/>
17400 The respective value of such request key can be obtained by calling
17401 <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>.<wbr/> Capture requests that contain
17402 individual physical device requests must be built via
17403 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.<wbr/>
17404 Such extended capture requests can be passed only to
17405 <a href="https://developer.android.com/reference/CameraCaptureSession.html#capture">CameraCaptureSession#capture</a> or <a href="https://developer.android.com/reference/CameraCaptureSession.html#captureBurst">CameraCaptureSession#captureBurst</a> and
17406 not to <a href="https://developer.android.com/reference/CameraCaptureSession.html#setRepeatingRequest">CameraCaptureSession#setRepeatingRequest</a> or
17407 <a href="https://developer.android.com/reference/CameraCaptureSession.html#setRepeatingBurst">CameraCaptureSession#setRepeatingBurst</a>.<wbr/></p>
17408             </td>
17409           </tr>
17410
17411           <tr class="entries_header">
17412             <th class="th_details" colspan="6">HAL Implementation Details</th>
17413           </tr>
17414           <tr class="entry_cont">
17415             <td class="entry_details" colspan="6">
17416               <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17417 use the extensions C api (refer to
17418 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more
17419 details).<wbr/></p>
17420 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17421 vendor extensions API and not against this field.<wbr/></p>
17422 <p>The HAL must not consume any request tags in the session parameters that
17423 are not listed either here or in the vendor tag list.<wbr/></p>
17424 <p>The public camera2 API will always make the vendor tags visible
17425 via
17426 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailablePhysicalCameraRequestKeys">CameraCharacteristics#getAvailablePhysicalCameraRequestKeys</a>.<wbr/></p>
17427             </td>
17428           </tr>
17429
17430           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17431            <!-- end of entry -->
17432         
17433         
17434
17435       <!-- end of kind -->
17436       </tbody>
17437       <tr><td colspan="7" class="kind">dynamic</td></tr>
17438
17439       <thead class="entries_header">
17440         <tr>
17441           <th class="th_name">Property Name</th>
17442           <th class="th_type">Type</th>
17443           <th class="th_description">Description</th>
17444           <th class="th_units">Units</th>
17445           <th class="th_range">Range</th>
17446           <th class="th_hal_version">Initial HIDL HAL version</th>
17447           <th class="th_tags">Tags</th>
17448         </tr>
17449       </thead>
17450
17451       <tbody>
17452
17453         
17454
17455         
17456
17457         
17458
17459         
17460
17461                 
17462           <tr class="entry" id="dynamic_android.request.frameCount">
17463             <td class="entry_name
17464                 entry_name_deprecated
17465              " rowspan="3">
17466               android.<wbr/>request.<wbr/>frame<wbr/>Count
17467             </td>
17468             <td class="entry_type">
17469                 <span class="entry_type_name">int32</span>
17470
17471               <span class="entry_type_visibility"> [hidden]</span>
17472
17473
17474
17475               <span class="entry_type_deprecated">[deprecated] </span>
17476
17477
17478
17479             </td> <!-- entry_type -->
17480
17481             <td class="entry_description">
17482               <p>A frame counter set by the framework.<wbr/> This value monotonically
17483 increases with every new result (that is,<wbr/> each new result has a unique
17484 frameCount value).<wbr/></p>
17485             </td>
17486
17487             <td class="entry_units">
17488               count of frames
17489             </td>
17490
17491             <td class="entry_range">
17492               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17493               <p>&gt; 0</p>
17494             </td>
17495
17496             <td class="entry_hal_version">
17497               <p>3.<wbr/>2</p>
17498             </td>
17499
17500             <td class="entry_tags">
17501             </td>
17502
17503           </tr>
17504           <tr class="entries_header">
17505             <th class="th_details" colspan="6">Details</th>
17506           </tr>
17507           <tr class="entry_cont">
17508             <td class="entry_details" colspan="6">
17509               <p>Reset on release()</p>
17510             </td>
17511           </tr>
17512
17513
17514           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17515            <!-- end of entry -->
17516         
17517                 
17518           <tr class="entry" id="dynamic_android.request.id">
17519             <td class="entry_name
17520              " rowspan="1">
17521               android.<wbr/>request.<wbr/>id
17522             </td>
17523             <td class="entry_type">
17524                 <span class="entry_type_name">int32</span>
17525
17526               <span class="entry_type_visibility"> [hidden]</span>
17527
17528
17529
17530
17531
17532
17533             </td> <!-- entry_type -->
17534
17535             <td class="entry_description">
17536               <p>An application-specified ID for the current
17537 request.<wbr/> Must be maintained unchanged in output
17538 frame</p>
17539             </td>
17540
17541             <td class="entry_units">
17542               arbitrary integer assigned by application
17543             </td>
17544
17545             <td class="entry_range">
17546               <p>Any int</p>
17547             </td>
17548
17549             <td class="entry_hal_version">
17550               <p>3.<wbr/>2</p>
17551             </td>
17552
17553             <td class="entry_tags">
17554               <ul class="entry_tags">
17555                   <li><a href="#tag_V1">V1</a></li>
17556               </ul>
17557             </td>
17558
17559           </tr>
17560
17561
17562           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17563            <!-- end of entry -->
17564         
17565                 
17566           <tr class="entry" id="dynamic_android.request.metadataMode">
17567             <td class="entry_name
17568              " rowspan="1">
17569               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
17570             </td>
17571             <td class="entry_type">
17572                 <span class="entry_type_name entry_type_name_enum">byte</span>
17573
17574               <span class="entry_type_visibility"> [system]</span>
17575
17576
17577
17578
17579
17580                 <ul class="entry_type_enum">
17581                   <li>
17582                     <span class="entry_type_enum_name">NONE (v3.2)</span>
17583                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
17584 for application-bound buffer data.<wbr/> If no
17585 application-bound streams exist,<wbr/> no frame should be
17586 placed in the output frame queue.<wbr/> If such streams
17587 exist,<wbr/> a frame should be placed on the output queue
17588 with null metadata but with the necessary output buffer
17589 information.<wbr/> Timestamp information should still be
17590 included with any output stream buffers</p></span>
17591                   </li>
17592                   <li>
17593                     <span class="entry_type_enum_name">FULL (v3.2)</span>
17594                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
17595 only be produced if they are separately
17596 enabled</p></span>
17597                   </li>
17598                 </ul>
17599
17600             </td> <!-- entry_type -->
17601
17602             <td class="entry_description">
17603               <p>How much metadata to produce on
17604 output</p>
17605             </td>
17606
17607             <td class="entry_units">
17608             </td>
17609
17610             <td class="entry_range">
17611             </td>
17612
17613             <td class="entry_hal_version">
17614               <p>3.<wbr/>2</p>
17615             </td>
17616
17617             <td class="entry_tags">
17618               <ul class="entry_tags">
17619                   <li><a href="#tag_FUTURE">FUTURE</a></li>
17620               </ul>
17621             </td>
17622
17623           </tr>
17624
17625
17626           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17627            <!-- end of entry -->
17628         
17629                 
17630           <tr class="entry" id="dynamic_android.request.outputStreams">
17631             <td class="entry_name
17632                 entry_name_deprecated
17633              " rowspan="3">
17634               android.<wbr/>request.<wbr/>output<wbr/>Streams
17635             </td>
17636             <td class="entry_type">
17637                 <span class="entry_type_name">int32</span>
17638                 <span class="entry_type_container">x</span>
17639
17640                 <span class="entry_type_array">
17641                   n
17642                 </span>
17643               <span class="entry_type_visibility"> [system]</span>
17644
17645
17646
17647               <span class="entry_type_deprecated">[deprecated] </span>
17648
17649
17650
17651             </td> <!-- entry_type -->
17652
17653             <td class="entry_description">
17654               <p>Lists which camera output streams image data
17655 from this capture must be sent to</p>
17656             </td>
17657
17658             <td class="entry_units">
17659               List of camera stream IDs
17660             </td>
17661
17662             <td class="entry_range">
17663               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17664               <p>List must only include streams that have been
17665 created</p>
17666             </td>
17667
17668             <td class="entry_hal_version">
17669               <p>3.<wbr/>2</p>
17670             </td>
17671
17672             <td class="entry_tags">
17673               <ul class="entry_tags">
17674                   <li><a href="#tag_HAL2">HAL2</a></li>
17675               </ul>
17676             </td>
17677
17678           </tr>
17679           <tr class="entries_header">
17680             <th class="th_details" colspan="6">Details</th>
17681           </tr>
17682           <tr class="entry_cont">
17683             <td class="entry_details" colspan="6">
17684               <p>If no output streams are listed,<wbr/> then the image
17685 data should simply be discarded.<wbr/> The image data must
17686 still be captured for metadata and statistics production,<wbr/>
17687 and the lens and flash must operate as requested.<wbr/></p>
17688             </td>
17689           </tr>
17690
17691
17692           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17693            <!-- end of entry -->
17694         
17695                 
17696           <tr class="entry" id="dynamic_android.request.pipelineDepth">
17697             <td class="entry_name
17698              " rowspan="5">
17699               android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
17700             </td>
17701             <td class="entry_type">
17702                 <span class="entry_type_name">byte</span>
17703
17704               <span class="entry_type_visibility"> [public]</span>
17705
17706
17707               <span class="entry_type_hwlevel">[legacy] </span>
17708
17709
17710
17711
17712             </td> <!-- entry_type -->
17713
17714             <td class="entry_description">
17715               <p>Specifies the number of pipeline stages the frame went
17716 through from when it was exposed to when the final completed result
17717 was available to the framework.<wbr/></p>
17718             </td>
17719
17720             <td class="entry_units">
17721             </td>
17722
17723             <td class="entry_range">
17724               <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
17725             </td>
17726
17727             <td class="entry_hal_version">
17728               <p>3.<wbr/>2</p>
17729             </td>
17730
17731             <td class="entry_tags">
17732             </td>
17733
17734           </tr>
17735           <tr class="entries_header">
17736             <th class="th_details" colspan="6">Details</th>
17737           </tr>
17738           <tr class="entry_cont">
17739             <td class="entry_details" colspan="6">
17740               <p>Depending on what settings are used in the request,<wbr/> and
17741 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
17742 and some pipeline stages skipped.<wbr/></p>
17743 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
17744             </td>
17745           </tr>
17746
17747           <tr class="entries_header">
17748             <th class="th_details" colspan="6">HAL Implementation Details</th>
17749           </tr>
17750           <tr class="entry_cont">
17751             <td class="entry_details" colspan="6">
17752               <p>This value must always represent the accurate count of how many
17753 pipeline stages were actually used.<wbr/></p>
17754             </td>
17755           </tr>
17756
17757           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17758            <!-- end of entry -->
17759         
17760         
17761
17762       <!-- end of kind -->
17763       </tbody>
17764
17765   <!-- end of section -->
17766   <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
17767
17768
17769       <tr><td colspan="7" class="kind">controls</td></tr>
17770
17771       <thead class="entries_header">
17772         <tr>
17773           <th class="th_name">Property Name</th>
17774           <th class="th_type">Type</th>
17775           <th class="th_description">Description</th>
17776           <th class="th_units">Units</th>
17777           <th class="th_range">Range</th>
17778           <th class="th_hal_version">Initial HIDL HAL version</th>
17779           <th class="th_tags">Tags</th>
17780         </tr>
17781       </thead>
17782
17783       <tbody>
17784
17785         
17786
17787         
17788
17789         
17790
17791         
17792
17793                 
17794           <tr class="entry" id="controls_android.scaler.cropRegion">
17795             <td class="entry_name
17796              " rowspan="5">
17797               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
17798             </td>
17799             <td class="entry_type">
17800                 <span class="entry_type_name">int32</span>
17801                 <span class="entry_type_container">x</span>
17802
17803                 <span class="entry_type_array">
17804                   4
17805                 </span>
17806               <span class="entry_type_visibility"> [public as rectangle]</span>
17807
17808
17809               <span class="entry_type_hwlevel">[legacy] </span>
17810
17811
17812
17813
17814             </td> <!-- entry_type -->
17815
17816             <td class="entry_description">
17817               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
17818             </td>
17819
17820             <td class="entry_units">
17821               Pixel coordinates relative to
17822           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
17823             </td>
17824
17825             <td class="entry_range">
17826             </td>
17827
17828             <td class="entry_hal_version">
17829               <p>3.<wbr/>2</p>
17830             </td>
17831
17832             <td class="entry_tags">
17833               <ul class="entry_tags">
17834                   <li><a href="#tag_BC">BC</a></li>
17835               </ul>
17836             </td>
17837
17838           </tr>
17839           <tr class="entries_header">
17840             <th class="th_details" colspan="6">Details</th>
17841           </tr>
17842           <tr class="entry_cont">
17843             <td class="entry_details" colspan="6">
17844               <p>This control can be used to implement digital zoom.<wbr/></p>
17845 <p>The crop region coordinate system is based off
17846 <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
17847 top-left corner of the sensor active array.<wbr/></p>
17848 <p>Output streams use this rectangle to produce their output,<wbr/>
17849 cropping to a smaller region if necessary to maintain the
17850 stream's aspect ratio,<wbr/> then scaling the sensor input to
17851 match the output's configured resolution.<wbr/></p>
17852 <p>The crop region is applied after the RAW to other color
17853 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
17854 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
17855 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
17856 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
17857 be done to maximize the final pixel area of the stream.<wbr/></p>
17858 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
17859 ratio,<wbr/> then 4:3 streams will use the exact crop
17860 region.<wbr/> 16:9 streams will further crop vertically
17861 (letterbox).<wbr/></p>
17862 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
17863 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
17864 streams will match exactly.<wbr/> These additional crops will
17865 be centered within the crop region.<wbr/></p>
17866 <p>The width and height of the crop region cannot
17867 be set to be smaller than
17868 <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
17869 <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>
17870 <p>The camera device may adjust the crop region to account
17871 for rounding and other hardware requirements; the final
17872 crop region used will be included in the output capture
17873 result.<wbr/></p>
17874             </td>
17875           </tr>
17876
17877           <tr class="entries_header">
17878             <th class="th_details" colspan="6">HAL Implementation Details</th>
17879           </tr>
17880           <tr class="entry_cont">
17881             <td class="entry_details" colspan="6">
17882               <p>The output streams must maintain square pixels at all
17883 times,<wbr/> no matter what the relative aspect ratios of the
17884 crop region and the stream are.<wbr/>  Negative values for
17885 corner are allowed for raw output if full pixel array is
17886 larger than active pixel array.<wbr/> Width and height may be
17887 rounded to nearest larger supportable width,<wbr/> especially
17888 for raw output,<wbr/> where only a few fixed scales may be
17889 possible.<wbr/></p>
17890 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
17891 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
17892 <ul>
17893 <li>
17894 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
17895 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
17896 <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>
17897 <ol>
17898 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
17899 cropped pixel area by (tx,<wbr/> ty),<wbr/>
17900 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
17901 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
17902 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
17903 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
17904 <li>Scale the width and height of requested cropRegion with scaling factor of
17905 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
17906 respectively.<wbr/>
17907 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
17908 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
17909 follow the general cropping rule for this new cropRegion and effective active
17910 array size.<wbr/></li>
17911 </ol>
17912 </li>
17913 <li>
17914 <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/>
17915 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
17916 The reported cropRegion may be slightly different with the requested cropRegion since
17917 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
17918 hardware limitations.<wbr/></p>
17919 </li>
17920 </ul>
17921 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
17922             </td>
17923           </tr>
17924
17925           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17926            <!-- end of entry -->
17927         
17928         
17929
17930       <!-- end of kind -->
17931       </tbody>
17932       <tr><td colspan="7" class="kind">static</td></tr>
17933
17934       <thead class="entries_header">
17935         <tr>
17936           <th class="th_name">Property Name</th>
17937           <th class="th_type">Type</th>
17938           <th class="th_description">Description</th>
17939           <th class="th_units">Units</th>
17940           <th class="th_range">Range</th>
17941           <th class="th_hal_version">Initial HIDL HAL version</th>
17942           <th class="th_tags">Tags</th>
17943         </tr>
17944       </thead>
17945
17946       <tbody>
17947
17948         
17949
17950         
17951
17952         
17953
17954         
17955
17956                 
17957           <tr class="entry" id="static_android.scaler.availableFormats">
17958             <td class="entry_name
17959                 entry_name_deprecated
17960              " rowspan="5">
17961               android.<wbr/>scaler.<wbr/>available<wbr/>Formats
17962             </td>
17963             <td class="entry_type">
17964                 <span class="entry_type_name entry_type_name_enum">int32</span>
17965                 <span class="entry_type_container">x</span>
17966
17967                 <span class="entry_type_array">
17968                   n
17969                 </span>
17970               <span class="entry_type_visibility"> [hidden as imageFormat]</span>
17971
17972
17973
17974               <span class="entry_type_deprecated">[deprecated] </span>
17975
17976
17977                 <ul class="entry_type_enum">
17978                   <li>
17979                     <span class="entry_type_enum_name">RAW16 (v3.2)</span>
17980                     <span class="entry_type_enum_optional">[optional]</span>
17981                     <span class="entry_type_enum_value">0x20</span>
17982                     <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
17983 buffers with 16-bit pixels.<wbr/></p>
17984 <p>Buffers of this format are typically expected to have a
17985 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
17986 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
17987 CFAs that are not representable by a format in
17988 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
17989 use this format.<wbr/></p>
17990 <p>Buffers of this format will also follow the constraints given for
17991 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
17992 <p>This format is intended to give users access to the full contents
17993 of the buffers coming directly from the image sensor prior to any
17994 cropping or scaling operations,<wbr/> and all coordinate systems for
17995 metadata used for this format are relative to the size of the
17996 active region of the image sensor before any geometric distortion
17997 correction has been applied (i.<wbr/>e.<wbr/>
17998 <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
17999 dimensions for this format are limited to the full dimensions of
18000 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
18001 <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
18002 only supported output size).<wbr/></p>
18003 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
18004 the full set of performance guarantees.<wbr/></p></span>
18005                   </li>
18006                   <li>
18007                     <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span>
18008                     <span class="entry_type_enum_optional">[optional]</span>
18009                     <span class="entry_type_enum_value">0x24</span>
18010                     <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
18011 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
18012 as referred in public API) is a format for raw image buffers
18013 coming from an image sensor.<wbr/></p>
18014 <p>The actual structure of buffers of this format is
18015 platform-specific,<wbr/> but must follow several constraints:</p>
18016 <ol>
18017 <li>No image post-processing operations may have been applied to
18018 buffers of this type.<wbr/> These buffers contain raw image data coming
18019 directly from the image sensor.<wbr/></li>
18020 <li>If a buffer of this format is passed to the camera device for
18021 reprocessing,<wbr/> the resulting images will be identical to the images
18022 produced if the buffer had come directly from the sensor and was
18023 processed with the same settings.<wbr/></li>
18024 </ol>
18025 <p>The intended use for this format is to allow access to the native
18026 raw format buffers coming directly from the camera sensor without
18027 any additional conversions or decrease in framerate.<wbr/></p>
18028 <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
18029 performance guarantees.<wbr/></p></span>
18030                   </li>
18031                   <li>
18032                     <span class="entry_type_enum_name">YV12 (v3.2)</span>
18033                     <span class="entry_type_enum_optional">[optional]</span>
18034                     <span class="entry_type_enum_value">0x32315659</span>
18035                     <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
18036                   </li>
18037                   <li>
18038                     <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span>
18039                     <span class="entry_type_enum_optional">[optional]</span>
18040                     <span class="entry_type_enum_value">0x11</span>
18041                     <span class="entry_type_enum_notes"><p>NV21</p></span>
18042                   </li>
18043                   <li>
18044                     <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span>
18045                     <span class="entry_type_enum_value">0x22</span>
18046                     <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
18047                   </li>
18048                   <li>
18049                     <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span>
18050                     <span class="entry_type_enum_value">0x23</span>
18051                     <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
18052                   </li>
18053                   <li>
18054                     <span class="entry_type_enum_name">BLOB (v3.2)</span>
18055                     <span class="entry_type_enum_value">0x21</span>
18056                     <span class="entry_type_enum_notes"><p>JPEG format</p></span>
18057                   </li>
18058                 </ul>
18059
18060             </td> <!-- entry_type -->
18061
18062             <td class="entry_description">
18063               <p>The list of image formats that are supported by this
18064 camera device for output streams.<wbr/></p>
18065             </td>
18066
18067             <td class="entry_units">
18068             </td>
18069
18070             <td class="entry_range">
18071               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18072             </td>
18073
18074             <td class="entry_hal_version">
18075               <p>3.<wbr/>2</p>
18076             </td>
18077
18078             <td class="entry_tags">
18079               <ul class="entry_tags">
18080                   <li><a href="#tag_BC">BC</a></li>
18081               </ul>
18082             </td>
18083
18084           </tr>
18085           <tr class="entries_header">
18086             <th class="th_details" colspan="6">Details</th>
18087           </tr>
18088           <tr class="entry_cont">
18089             <td class="entry_details" colspan="6">
18090               <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
18091 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
18092             </td>
18093           </tr>
18094
18095           <tr class="entries_header">
18096             <th class="th_details" colspan="6">HAL Implementation Details</th>
18097           </tr>
18098           <tr class="entry_cont">
18099             <td class="entry_details" colspan="6">
18100               <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
18101 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
18102 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
18103 gralloc module will select a format based on the usage flags provided
18104 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
18105 usually used by preview and recording streams,<wbr/> where the application doesn't
18106 need access the image data.<wbr/></p>
18107 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
18108 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
18109 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
18110 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
18111 recommended that any information used by the camera device when
18112 processing images is fully expressed by the result metadata
18113 for that image buffer.<wbr/></p>
18114             </td>
18115           </tr>
18116
18117           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18118            <!-- end of entry -->
18119         
18120                 
18121           <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
18122             <td class="entry_name
18123                 entry_name_deprecated
18124              " rowspan="3">
18125               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
18126             </td>
18127             <td class="entry_type">
18128                 <span class="entry_type_name">int64</span>
18129                 <span class="entry_type_container">x</span>
18130
18131                 <span class="entry_type_array">
18132                   n
18133                 </span>
18134               <span class="entry_type_visibility"> [hidden]</span>
18135
18136
18137
18138               <span class="entry_type_deprecated">[deprecated] </span>
18139
18140
18141
18142             </td> <!-- entry_type -->
18143
18144             <td class="entry_description">
18145               <p>The minimum frame duration that is supported
18146 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
18147             </td>
18148
18149             <td class="entry_units">
18150               Nanoseconds
18151             </td>
18152
18153             <td class="entry_range">
18154               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18155               <p>TODO: Remove property.<wbr/></p>
18156             </td>
18157
18158             <td class="entry_hal_version">
18159               <p>3.<wbr/>2</p>
18160             </td>
18161
18162             <td class="entry_tags">
18163               <ul class="entry_tags">
18164                   <li><a href="#tag_BC">BC</a></li>
18165               </ul>
18166             </td>
18167
18168           </tr>
18169           <tr class="entries_header">
18170             <th class="th_details" colspan="6">Details</th>
18171           </tr>
18172           <tr class="entry_cont">
18173             <td class="entry_details" colspan="6">
18174               <p>This corresponds to the minimum steady-state frame duration when only
18175 that JPEG stream is active and captured in a burst,<wbr/> with all
18176 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
18177 <p>When multiple streams are configured,<wbr/> the minimum
18178 frame duration will be &gt;= max(individual stream min
18179 durations)</p>
18180             </td>
18181           </tr>
18182
18183
18184           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18185            <!-- end of entry -->
18186         
18187                 
18188           <tr class="entry" id="static_android.scaler.availableJpegSizes">
18189             <td class="entry_name
18190                 entry_name_deprecated
18191              " rowspan="5">
18192               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
18193             </td>
18194             <td class="entry_type">
18195                 <span class="entry_type_name">int32</span>
18196                 <span class="entry_type_container">x</span>
18197
18198                 <span class="entry_type_array">
18199                   n x 2
18200                 </span>
18201               <span class="entry_type_visibility"> [hidden as size]</span>
18202
18203
18204
18205               <span class="entry_type_deprecated">[deprecated] </span>
18206
18207
18208
18209             </td> <!-- entry_type -->
18210
18211             <td class="entry_description">
18212               <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
18213             </td>
18214
18215             <td class="entry_units">
18216             </td>
18217
18218             <td class="entry_range">
18219               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18220               <p>TODO: Remove property.<wbr/></p>
18221             </td>
18222
18223             <td class="entry_hal_version">
18224               <p>3.<wbr/>2</p>
18225             </td>
18226
18227             <td class="entry_tags">
18228               <ul class="entry_tags">
18229                   <li><a href="#tag_BC">BC</a></li>
18230               </ul>
18231             </td>
18232
18233           </tr>
18234           <tr class="entries_header">
18235             <th class="th_details" colspan="6">Details</th>
18236           </tr>
18237           <tr class="entry_cont">
18238             <td class="entry_details" colspan="6">
18239               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
18240 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>
18241             </td>
18242           </tr>
18243
18244           <tr class="entries_header">
18245             <th class="th_details" colspan="6">HAL Implementation Details</th>
18246           </tr>
18247           <tr class="entry_cont">
18248             <td class="entry_details" colspan="6">
18249               <p>The HAL must include sensor maximum resolution
18250 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
18251 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
18252             </td>
18253           </tr>
18254
18255           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18256            <!-- end of entry -->
18257         
18258                 
18259           <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
18260             <td class="entry_name
18261              " rowspan="3">
18262               android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
18263             </td>
18264             <td class="entry_type">
18265                 <span class="entry_type_name">float</span>
18266
18267               <span class="entry_type_visibility"> [public]</span>
18268
18269
18270               <span class="entry_type_hwlevel">[legacy] </span>
18271
18272
18273
18274
18275             </td> <!-- entry_type -->
18276
18277             <td class="entry_description">
18278               <p>The maximum ratio between both active area width
18279 and crop region width,<wbr/> and active area height and
18280 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18281             </td>
18282
18283             <td class="entry_units">
18284               Zoom scale factor
18285             </td>
18286
18287             <td class="entry_range">
18288               <p>&gt;=1</p>
18289             </td>
18290
18291             <td class="entry_hal_version">
18292               <p>3.<wbr/>2</p>
18293             </td>
18294
18295             <td class="entry_tags">
18296               <ul class="entry_tags">
18297                   <li><a href="#tag_BC">BC</a></li>
18298               </ul>
18299             </td>
18300
18301           </tr>
18302           <tr class="entries_header">
18303             <th class="th_details" colspan="6">Details</th>
18304           </tr>
18305           <tr class="entry_cont">
18306             <td class="entry_details" colspan="6">
18307               <p>This represents the maximum amount of zooming possible by
18308 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
18309 window size.<wbr/></p>
18310 <p>Crop regions that have a width or height that is smaller
18311 than this ratio allows will be rounded up to the minimum
18312 allowed size by the camera device.<wbr/></p>
18313             </td>
18314           </tr>
18315
18316
18317           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18318            <!-- end of entry -->
18319         
18320                 
18321           <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
18322             <td class="entry_name
18323                 entry_name_deprecated
18324              " rowspan="3">
18325               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
18326             </td>
18327             <td class="entry_type">
18328                 <span class="entry_type_name">int64</span>
18329                 <span class="entry_type_container">x</span>
18330
18331                 <span class="entry_type_array">
18332                   n
18333                 </span>
18334               <span class="entry_type_visibility"> [hidden]</span>
18335
18336
18337
18338               <span class="entry_type_deprecated">[deprecated] </span>
18339
18340
18341
18342             </td> <!-- entry_type -->
18343
18344             <td class="entry_description">
18345               <p>For each available processed output size (defined in
18346 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
18347 minimum supportable frame duration for that size.<wbr/></p>
18348             </td>
18349
18350             <td class="entry_units">
18351               Nanoseconds
18352             </td>
18353
18354             <td class="entry_range">
18355               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18356             </td>
18357
18358             <td class="entry_hal_version">
18359               <p>3.<wbr/>2</p>
18360             </td>
18361
18362             <td class="entry_tags">
18363               <ul class="entry_tags">
18364                   <li><a href="#tag_BC">BC</a></li>
18365               </ul>
18366             </td>
18367
18368           </tr>
18369           <tr class="entries_header">
18370             <th class="th_details" colspan="6">Details</th>
18371           </tr>
18372           <tr class="entry_cont">
18373             <td class="entry_details" colspan="6">
18374               <p>This should correspond to the frame duration when only that processed
18375 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18376 set to FAST.<wbr/></p>
18377 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
18378 be &gt;= max(individual stream min durations).<wbr/></p>
18379             </td>
18380           </tr>
18381
18382
18383           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18384            <!-- end of entry -->
18385         
18386                 
18387           <tr class="entry" id="static_android.scaler.availableProcessedSizes">
18388             <td class="entry_name
18389                 entry_name_deprecated
18390              " rowspan="5">
18391               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
18392             </td>
18393             <td class="entry_type">
18394                 <span class="entry_type_name">int32</span>
18395                 <span class="entry_type_container">x</span>
18396
18397                 <span class="entry_type_array">
18398                   n x 2
18399                 </span>
18400               <span class="entry_type_visibility"> [hidden as size]</span>
18401
18402
18403
18404               <span class="entry_type_deprecated">[deprecated] </span>
18405
18406
18407
18408             </td> <!-- entry_type -->
18409
18410             <td class="entry_description">
18411               <p>The resolutions available for use with
18412 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
18413 platform opaque YUV/<wbr/>RGB streams to the GPU or video
18414 encoders.<wbr/></p>
18415             </td>
18416
18417             <td class="entry_units">
18418             </td>
18419
18420             <td class="entry_range">
18421               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18422             </td>
18423
18424             <td class="entry_hal_version">
18425               <p>3.<wbr/>2</p>
18426             </td>
18427
18428             <td class="entry_tags">
18429               <ul class="entry_tags">
18430                   <li><a href="#tag_BC">BC</a></li>
18431               </ul>
18432             </td>
18433
18434           </tr>
18435           <tr class="entries_header">
18436             <th class="th_details" colspan="6">Details</th>
18437           </tr>
18438           <tr class="entry_cont">
18439             <td class="entry_details" colspan="6">
18440               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
18441 <p>For a given use case,<wbr/> the actual maximum supported resolution
18442 may be lower than what is listed here,<wbr/> depending on the destination
18443 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18444 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18445 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18446 can provide.<wbr/></p>
18447 <p>Please reference the documentation for the image data destination to
18448 check if it limits the maximum size for image data.<wbr/></p>
18449             </td>
18450           </tr>
18451
18452           <tr class="entries_header">
18453             <th class="th_details" colspan="6">HAL Implementation Details</th>
18454           </tr>
18455           <tr class="entry_cont">
18456             <td class="entry_details" colspan="6">
18457               <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/>
18458 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>
18459 and each below resolution if it is smaller than or equal to the sensor
18460 maximum resolution (if they are not listed in JPEG sizes already):</p>
18461 <ul>
18462 <li>240p (320 x 240)</li>
18463 <li>480p (640 x 480)</li>
18464 <li>720p (1280 x 720)</li>
18465 <li>1080p (1920 x 1080)</li>
18466 </ul>
18467 <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/>
18468 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
18469             </td>
18470           </tr>
18471
18472           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18473            <!-- end of entry -->
18474         
18475                 
18476           <tr class="entry" id="static_android.scaler.availableRawMinDurations">
18477             <td class="entry_name
18478                 entry_name_deprecated
18479              " rowspan="3">
18480               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
18481             </td>
18482             <td class="entry_type">
18483                 <span class="entry_type_name">int64</span>
18484                 <span class="entry_type_container">x</span>
18485
18486                 <span class="entry_type_array">
18487                   n
18488                 </span>
18489               <span class="entry_type_visibility"> [system]</span>
18490
18491
18492
18493               <span class="entry_type_deprecated">[deprecated] </span>
18494
18495
18496
18497             </td> <!-- entry_type -->
18498
18499             <td class="entry_description">
18500               <p>For each available raw output size (defined in
18501 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
18502 supportable frame duration for that size.<wbr/></p>
18503             </td>
18504
18505             <td class="entry_units">
18506               Nanoseconds
18507             </td>
18508
18509             <td class="entry_range">
18510               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18511             </td>
18512
18513             <td class="entry_hal_version">
18514               <p>3.<wbr/>2</p>
18515             </td>
18516
18517             <td class="entry_tags">
18518               <ul class="entry_tags">
18519                   <li><a href="#tag_BC">BC</a></li>
18520               </ul>
18521             </td>
18522
18523           </tr>
18524           <tr class="entries_header">
18525             <th class="th_details" colspan="6">Details</th>
18526           </tr>
18527           <tr class="entry_cont">
18528             <td class="entry_details" colspan="6">
18529               <p>Should correspond to the frame duration when only the raw stream is
18530 active.<wbr/></p>
18531 <p>When multiple streams are configured,<wbr/> the minimum
18532 frame duration will be &gt;= max(individual stream min
18533 durations)</p>
18534             </td>
18535           </tr>
18536
18537
18538           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18539            <!-- end of entry -->
18540         
18541                 
18542           <tr class="entry" id="static_android.scaler.availableRawSizes">
18543             <td class="entry_name
18544                 entry_name_deprecated
18545              " rowspan="1">
18546               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
18547             </td>
18548             <td class="entry_type">
18549                 <span class="entry_type_name">int32</span>
18550                 <span class="entry_type_container">x</span>
18551
18552                 <span class="entry_type_array">
18553                   n x 2
18554                 </span>
18555               <span class="entry_type_visibility"> [system as size]</span>
18556
18557
18558
18559               <span class="entry_type_deprecated">[deprecated] </span>
18560
18561
18562
18563             </td> <!-- entry_type -->
18564
18565             <td class="entry_description">
18566               <p>The resolutions available for use with raw
18567 sensor output streams,<wbr/> listed as width,<wbr/>
18568 height</p>
18569             </td>
18570
18571             <td class="entry_units">
18572             </td>
18573
18574             <td class="entry_range">
18575               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18576             </td>
18577
18578             <td class="entry_hal_version">
18579               <p>3.<wbr/>2</p>
18580             </td>
18581
18582             <td class="entry_tags">
18583             </td>
18584
18585           </tr>
18586
18587
18588           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18589            <!-- end of entry -->
18590         
18591                 
18592           <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
18593             <td class="entry_name
18594              " rowspan="5">
18595               android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
18596             </td>
18597             <td class="entry_type">
18598                 <span class="entry_type_name">int32</span>
18599
18600               <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
18601
18602
18603
18604
18605
18606
18607             </td> <!-- entry_type -->
18608
18609             <td class="entry_description">
18610               <p>The mapping of image formats that are supported by this
18611 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
18612             </td>
18613
18614             <td class="entry_units">
18615             </td>
18616
18617             <td class="entry_range">
18618             </td>
18619
18620             <td class="entry_hal_version">
18621               <p>3.<wbr/>2</p>
18622             </td>
18623
18624             <td class="entry_tags">
18625               <ul class="entry_tags">
18626                   <li><a href="#tag_REPROC">REPROC</a></li>
18627               </ul>
18628             </td>
18629
18630           </tr>
18631           <tr class="entries_header">
18632             <th class="th_details" colspan="6">Details</th>
18633           </tr>
18634           <tr class="entry_cont">
18635             <td class="entry_details" colspan="6">
18636               <p>All camera devices with at least 1
18637 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
18638 available input format.<wbr/></p>
18639 <p>The camera device will support the following map of formats,<wbr/>
18640 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
18641 <table>
18642 <thead>
18643 <tr>
18644 <th align="left">Input Format</th>
18645 <th align="left">Output Format</th>
18646 <th align="left">Capability</th>
18647 </tr>
18648 </thead>
18649 <tbody>
18650 <tr>
18651 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18652 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18653 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18654 </tr>
18655 <tr>
18656 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18657 <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>
18658 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18659 </tr>
18660 <tr>
18661 <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>
18662 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18663 <td align="left">YUV_<wbr/>REPROCESSING</td>
18664 </tr>
18665 <tr>
18666 <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>
18667 <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>
18668 <td align="left">YUV_<wbr/>REPROCESSING</td>
18669 </tr>
18670 </tbody>
18671 </table>
18672 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
18673 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
18674 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
18675 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
18676 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>
18677 <p>Attempting to configure an input stream with output streams not
18678 listed as available in this map is not valid.<wbr/></p>
18679             </td>
18680           </tr>
18681
18682           <tr class="entries_header">
18683             <th class="th_details" colspan="6">HAL Implementation Details</th>
18684           </tr>
18685           <tr class="entry_cont">
18686             <td class="entry_details" colspan="6">
18687               <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
18688 of the image format enumerations.<wbr/> The PRIVATE format refers to the
18689 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
18690 the actual format by using the gralloc usage flags.<wbr/>
18691 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
18692 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
18693 See camera3.<wbr/>h for more details.<wbr/></p>
18694 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
18695 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
18696 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
18697 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
18698 <p>A code sample to read/<wbr/>write this encoding (with a device that
18699 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
18700 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
18701 <pre><code>//<wbr/> reading
18702 int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
18703 for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
18704     int32_<wbr/>t format = contents[i++];
18705     int32_<wbr/>t length = contents[i++];
18706     int32_<wbr/>t output_<wbr/>formats[length];
18707     memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
18708            length * sizeof(int32_<wbr/>t));
18709     i += length;
18710 }
18711
18712 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
18713 int32_<wbr/>t[] contents = {
18714   IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18715   YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18716 };
18717 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
18718       sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
18719 </code></pre>
18720 <p>If the HAL claims to support any of the capabilities listed in the
18721 above details,<wbr/> then it must also support all the input-output
18722 combinations listed for that capability.<wbr/> It can optionally support
18723 additional formats if it so chooses.<wbr/></p>
18724             </td>
18725           </tr>
18726
18727           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18728            <!-- end of entry -->
18729         
18730                 
18731           <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
18732             <td class="entry_name
18733              " rowspan="5">
18734               android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
18735             </td>
18736             <td class="entry_type">
18737                 <span class="entry_type_name entry_type_name_enum">int32</span>
18738                 <span class="entry_type_container">x</span>
18739
18740                 <span class="entry_type_array">
18741                   n x 4
18742                 </span>
18743               <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
18744
18745
18746               <span class="entry_type_hwlevel">[legacy] </span>
18747
18748
18749
18750                 <ul class="entry_type_enum">
18751                   <li>
18752                     <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
18753                   </li>
18754                   <li>
18755                     <span class="entry_type_enum_name">INPUT (v3.2)</span>
18756                   </li>
18757                 </ul>
18758
18759             </td> <!-- entry_type -->
18760
18761             <td class="entry_description">
18762               <p>The available stream configurations that this
18763 camera device supports
18764 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
18765             </td>
18766
18767             <td class="entry_units">
18768             </td>
18769
18770             <td class="entry_range">
18771             </td>
18772
18773             <td class="entry_hal_version">
18774               <p>3.<wbr/>2</p>
18775             </td>
18776
18777             <td class="entry_tags">
18778             </td>
18779
18780           </tr>
18781           <tr class="entries_header">
18782             <th class="th_details" colspan="6">Details</th>
18783           </tr>
18784           <tr class="entry_cont">
18785             <td class="entry_details" colspan="6">
18786               <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
18787 tuples.<wbr/></p>
18788 <p>For a given use case,<wbr/> the actual maximum supported resolution
18789 may be lower than what is listed here,<wbr/> depending on the destination
18790 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18791 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18792 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18793 can provide.<wbr/></p>
18794 <p>Please reference the documentation for the image data destination to
18795 check if it limits the maximum size for image data.<wbr/></p>
18796 <p>Not all output formats may be supported in a configuration with
18797 an input stream of a particular format.<wbr/> For more details,<wbr/> see
18798 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
18799 <p>The following table describes the minimum required output stream
18800 configurations based on the hardware level
18801 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
18802 <table>
18803 <thead>
18804 <tr>
18805 <th align="center">Format</th>
18806 <th align="center">Size</th>
18807 <th align="center">Hardware Level</th>
18808 <th align="center">Notes</th>
18809 </tr>
18810 </thead>
18811 <tbody>
18812 <tr>
18813 <td align="center">JPEG</td>
18814 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
18815 <td align="center">Any</td>
18816 <td align="center"></td>
18817 </tr>
18818 <tr>
18819 <td align="center">JPEG</td>
18820 <td align="center">1920x1080 (1080p)</td>
18821 <td align="center">Any</td>
18822 <td align="center">if 1080p &lt;= activeArraySize</td>
18823 </tr>
18824 <tr>
18825 <td align="center">JPEG</td>
18826 <td align="center">1280x720 (720)</td>
18827 <td align="center">Any</td>
18828 <td align="center">if 720p &lt;= activeArraySize</td>
18829 </tr>
18830 <tr>
18831 <td align="center">JPEG</td>
18832 <td align="center">640x480 (480p)</td>
18833 <td align="center">Any</td>
18834 <td align="center">if 480p &lt;= activeArraySize</td>
18835 </tr>
18836 <tr>
18837 <td align="center">JPEG</td>
18838 <td align="center">320x240 (240p)</td>
18839 <td align="center">Any</td>
18840 <td align="center">if 240p &lt;= activeArraySize</td>
18841 </tr>
18842 <tr>
18843 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
18844 <td align="center">all output sizes available for JPEG</td>
18845 <td align="center">FULL</td>
18846 <td align="center"></td>
18847 </tr>
18848 <tr>
18849 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
18850 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
18851 <td align="center">LIMITED</td>
18852 <td align="center"></td>
18853 </tr>
18854 <tr>
18855 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
18856 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
18857 <td align="center">Any</td>
18858 <td align="center"></td>
18859 </tr>
18860 </tbody>
18861 </table>
18862 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
18863 mandatory stream configurations on a per-capability basis.<wbr/></p>
18864             </td>
18865           </tr>
18866
18867           <tr class="entries_header">
18868             <th class="th_details" colspan="6">HAL Implementation Details</th>
18869           </tr>
18870           <tr class="entry_cont">
18871             <td class="entry_details" colspan="6">
18872               <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
18873 of sensor maximum resolution for JPEG formats (regardless of hardware
18874 level).<wbr/></p>
18875 <p>(The following is a rewording of the above required table):</p>
18876 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
18877 <ul>
18878 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
18879 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
18880 (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/>
18881 it does not have to be included in the supported JPEG sizes.<wbr/></li>
18882 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
18883 the dimensions being a multiple of 16.<wbr/></li>
18884 </ul>
18885 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
18886 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
18887 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
18888 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
18889 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
18890 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
18891 3264x2448.<wbr/></p>
18892 <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/>
18893 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
18894 here as output streams.<wbr/></p>
18895 <p>It must also include each below resolution if it is smaller than or
18896 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
18897 formats),<wbr/> as output streams:</p>
18898 <ul>
18899 <li>240p (320 x 240)</li>
18900 <li>480p (640 x 480)</li>
18901 <li>720p (1280 x 720)</li>
18902 <li>1080p (1920 x 1080)</li>
18903 </ul>
18904 <p>For LIMITED capability devices
18905 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
18906 the HAL only has to list up to the maximum video size
18907 supported by the device.<wbr/></p>
18908 <p>Regardless of hardware level,<wbr/> every output resolution available for
18909 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
18910 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
18911 <ul>
18912 <li>availableFormats</li>
18913 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
18914 </ul>
18915             </td>
18916           </tr>
18917
18918           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18919            <!-- end of entry -->
18920         
18921                 
18922           <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
18923             <td class="entry_name
18924              " rowspan="3">
18925               android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
18926             </td>
18927             <td class="entry_type">
18928                 <span class="entry_type_name">int64</span>
18929                 <span class="entry_type_container">x</span>
18930
18931                 <span class="entry_type_array">
18932                   4 x n
18933                 </span>
18934               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
18935
18936
18937               <span class="entry_type_hwlevel">[legacy] </span>
18938
18939
18940
18941
18942             </td> <!-- entry_type -->
18943
18944             <td class="entry_description">
18945               <p>This lists the minimum frame duration for each
18946 format/<wbr/>size combination.<wbr/></p>
18947             </td>
18948
18949             <td class="entry_units">
18950               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
18951             </td>
18952
18953             <td class="entry_range">
18954             </td>
18955
18956             <td class="entry_hal_version">
18957               <p>3.<wbr/>2</p>
18958             </td>
18959
18960             <td class="entry_tags">
18961               <ul class="entry_tags">
18962                   <li><a href="#tag_V1">V1</a></li>
18963               </ul>
18964             </td>
18965
18966           </tr>
18967           <tr class="entries_header">
18968             <th class="th_details" colspan="6">Details</th>
18969           </tr>
18970           <tr class="entry_cont">
18971             <td class="entry_details" colspan="6">
18972               <p>This should correspond to the frame duration when only that
18973 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18974 set to either OFF or FAST.<wbr/></p>
18975 <p>When multiple streams are used in a request,<wbr/> the minimum frame
18976 duration will be max(individual stream min durations).<wbr/></p>
18977 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
18978 is the same regardless of whether the stream is input or output.<wbr/></p>
18979 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
18980 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
18981 calculating the max frame rate.<wbr/></p>
18982             </td>
18983           </tr>
18984
18985
18986           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18987            <!-- end of entry -->
18988         
18989                 
18990           <tr class="entry" id="static_android.scaler.availableStallDurations">
18991             <td class="entry_name
18992              " rowspan="5">
18993               android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
18994             </td>
18995             <td class="entry_type">
18996                 <span class="entry_type_name">int64</span>
18997                 <span class="entry_type_container">x</span>
18998
18999                 <span class="entry_type_array">
19000                   4 x n
19001                 </span>
19002               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
19003
19004
19005               <span class="entry_type_hwlevel">[legacy] </span>
19006
19007
19008
19009
19010             </td> <!-- entry_type -->
19011
19012             <td class="entry_description">
19013               <p>This lists the maximum stall duration for each
19014 output format/<wbr/>size combination.<wbr/></p>
19015             </td>
19016
19017             <td class="entry_units">
19018               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
19019             </td>
19020
19021             <td class="entry_range">
19022             </td>
19023
19024             <td class="entry_hal_version">
19025               <p>3.<wbr/>2</p>
19026             </td>
19027
19028             <td class="entry_tags">
19029               <ul class="entry_tags">
19030                   <li><a href="#tag_V1">V1</a></li>
19031               </ul>
19032             </td>
19033
19034           </tr>
19035           <tr class="entries_header">
19036             <th class="th_details" colspan="6">Details</th>
19037           </tr>
19038           <tr class="entry_cont">
19039             <td class="entry_details" colspan="6">
19040               <p>A stall duration is how much extra time would get added
19041 to the normal minimum frame duration for a repeating request
19042 that has streams with non-zero stall.<wbr/></p>
19043 <p>For example,<wbr/> consider JPEG captures which have the following
19044 characteristics:</p>
19045 <ul>
19046 <li>JPEG streams act like processed YUV streams in requests for which
19047 they are not included; in requests in which they are directly
19048 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
19049 JPEG stream requires the underlying YUV data to always be ready for
19050 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
19051 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
19052 <li>The JPEG processor can run concurrently to the rest of the camera
19053 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
19054 </ul>
19055 <p>In other words,<wbr/> using a repeating YUV request would result
19056 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
19057 JPEG request is submitted periodically,<wbr/> the frame rate will stay
19058 at 30 FPS (as long as we wait for the previous JPEG to return each
19059 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
19060 the frame rate will drop from 30 FPS.<wbr/></p>
19061 <p>In general,<wbr/> submitting a new request with a non-0 stall time
19062 stream will <em>not</em> cause a frame rate drop unless there are still
19063 outstanding buffers for that stream from previous requests.<wbr/></p>
19064 <p>Submitting a repeating request with streams (call this <code>S</code>)
19065 is the same as setting the minimum frame duration from
19066 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
19067 the maximum stall duration for <code>S</code>.<wbr/></p>
19068 <p>If interleaving requests with and without a stall duration,<wbr/>
19069 a request will stall by the maximum of the remaining times
19070 for each can-stall stream with outstanding buffers.<wbr/></p>
19071 <p>This means that a stalling request will not have an exposure start
19072 until the stall has completed.<wbr/></p>
19073 <p>This should correspond to the stall duration when only that stream is
19074 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
19075 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
19076 effectively results in an indeterminate stall duration for all
19077 streams in a request (the regular stall calculation rules are
19078 ignored).<wbr/></p>
19079 <p>The following formats may always have a stall duration:</p>
19080 <ul>
19081 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
19082 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
19083 </ul>
19084 <p>The following formats will never have a stall duration:</p>
19085 <ul>
19086 <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>
19087 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
19088 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
19089 </ul>
19090 <p>All other formats may or may not have an allowed stall duration on
19091 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
19092 for more details.<wbr/></p>
19093 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
19094 calculating the max frame rate (absent stalls).<wbr/></p>
19095             </td>
19096           </tr>
19097
19098           <tr class="entries_header">
19099             <th class="th_details" colspan="6">HAL Implementation Details</th>
19100           </tr>
19101           <tr class="entry_cont">
19102             <td class="entry_details" colspan="6">
19103               <p>If possible,<wbr/> it is recommended that all non-JPEG formats
19104 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
19105 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
19106             </td>
19107           </tr>
19108
19109           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19110            <!-- end of entry -->
19111         
19112                 
19113           <tr class="entry" id="static_android.scaler.streamConfigurationMap">
19114             <td class="entry_name
19115              " rowspan="5">
19116               android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
19117             </td>
19118             <td class="entry_type">
19119                 <span class="entry_type_name">int32</span>
19120
19121               <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
19122
19123               <span class="entry_type_synthetic">[synthetic] </span>
19124
19125               <span class="entry_type_hwlevel">[legacy] </span>
19126
19127
19128
19129
19130             </td> <!-- entry_type -->
19131
19132             <td class="entry_description">
19133               <p>The available stream configurations that this
19134 camera device supports; also includes the minimum frame durations
19135 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
19136             </td>
19137
19138             <td class="entry_units">
19139             </td>
19140
19141             <td class="entry_range">
19142             </td>
19143
19144             <td class="entry_hal_version">
19145               <p>3.<wbr/>2</p>
19146             </td>
19147
19148             <td class="entry_tags">
19149             </td>
19150
19151           </tr>
19152           <tr class="entries_header">
19153             <th class="th_details" colspan="6">Details</th>
19154           </tr>
19155           <tr class="entry_cont">
19156             <td class="entry_details" colspan="6">
19157               <p>All camera devices will support sensor maximum resolution (defined by
19158 <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>
19159 <p>For a given use case,<wbr/> the actual maximum supported resolution
19160 may be lower than what is listed here,<wbr/> depending on the destination
19161 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19162 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19163 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19164 can provide.<wbr/></p>
19165 <p>Please reference the documentation for the image data destination to
19166 check if it limits the maximum size for image data.<wbr/></p>
19167 <p>The following table describes the minimum required output stream
19168 configurations based on the hardware level
19169 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19170 <table>
19171 <thead>
19172 <tr>
19173 <th align="center">Format</th>
19174 <th align="center">Size</th>
19175 <th align="center">Hardware Level</th>
19176 <th align="center">Notes</th>
19177 </tr>
19178 </thead>
19179 <tbody>
19180 <tr>
19181 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19182 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
19183 <td align="center">Any</td>
19184 <td align="center"></td>
19185 </tr>
19186 <tr>
19187 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19188 <td align="center">1920x1080 (1080p)</td>
19189 <td align="center">Any</td>
19190 <td align="center">if 1080p &lt;= activeArraySize</td>
19191 </tr>
19192 <tr>
19193 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19194 <td align="center">1280x720 (720p)</td>
19195 <td align="center">Any</td>
19196 <td align="center">if 720p &lt;= activeArraySize</td>
19197 </tr>
19198 <tr>
19199 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19200 <td align="center">640x480 (480p)</td>
19201 <td align="center">Any</td>
19202 <td align="center">if 480p &lt;= activeArraySize</td>
19203 </tr>
19204 <tr>
19205 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19206 <td align="center">320x240 (240p)</td>
19207 <td align="center">Any</td>
19208 <td align="center">if 240p &lt;= activeArraySize</td>
19209 </tr>
19210 <tr>
19211 <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>
19212 <td align="center">all output sizes available for JPEG</td>
19213 <td align="center">FULL</td>
19214 <td align="center"></td>
19215 </tr>
19216 <tr>
19217 <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>
19218 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
19219 <td align="center">LIMITED</td>
19220 <td align="center"></td>
19221 </tr>
19222 <tr>
19223 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
19224 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
19225 <td align="center">Any</td>
19226 <td align="center"></td>
19227 </tr>
19228 </tbody>
19229 </table>
19230 <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
19231 stream configurations on a per-capability basis.<wbr/></p>
19232 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
19233 <ul>
19234 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
19235 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
19236 (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/>
19237 it does not have to be included in the supported JPEG sizes.<wbr/></li>
19238 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
19239 the dimensions being a multiple of 16.<wbr/>
19240 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
19241 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
19242 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
19243 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
19244 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
19245 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
19246 3264x2448.<wbr/></li>
19247 </ul>
19248             </td>
19249           </tr>
19250
19251           <tr class="entries_header">
19252             <th class="th_details" colspan="6">HAL Implementation Details</th>
19253           </tr>
19254           <tr class="entry_cont">
19255             <td class="entry_details" colspan="6">
19256               <p>Do not set this property directly
19257 (it is synthetic and will not be available at the HAL layer);
19258 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
19259 <p>Not all output formats may be supported in a configuration with
19260 an input stream of a particular format.<wbr/> For more details,<wbr/> see
19261 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
19262 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
19263 of sensor maximum resolution for JPEG formats (regardless of hardware
19264 level).<wbr/></p>
19265 <p>(The following is a rewording of the above required table):</p>
19266 <p>The HAL must include sensor maximum resolution (defined by
19267 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
19268 <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/>
19269 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19270 here as output streams.<wbr/></p>
19271 <p>It must also include each below resolution if it is smaller than or
19272 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19273 formats),<wbr/> as output streams:</p>
19274 <ul>
19275 <li>240p (320 x 240)</li>
19276 <li>480p (640 x 480)</li>
19277 <li>720p (1280 x 720)</li>
19278 <li>1080p (1920 x 1080)</li>
19279 </ul>
19280 <p>For LIMITED capability devices
19281 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19282 the HAL only has to list up to the maximum video size
19283 supported by the device.<wbr/></p>
19284 <p>Regardless of hardware level,<wbr/> every output resolution available for
19285 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19286 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19287 <ul>
19288 <li>availableFormats</li>
19289 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19290 </ul>
19291             </td>
19292           </tr>
19293
19294           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19295            <!-- end of entry -->
19296         
19297                 
19298           <tr class="entry" id="static_android.scaler.croppingType">
19299             <td class="entry_name
19300              " rowspan="3">
19301               android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
19302             </td>
19303             <td class="entry_type">
19304                 <span class="entry_type_name entry_type_name_enum">byte</span>
19305
19306               <span class="entry_type_visibility"> [public]</span>
19307
19308
19309               <span class="entry_type_hwlevel">[legacy] </span>
19310
19311
19312
19313                 <ul class="entry_type_enum">
19314                   <li>
19315                     <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span>
19316                     <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
19317                   </li>
19318                   <li>
19319                     <span class="entry_type_enum_name">FREEFORM (v3.2)</span>
19320                     <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
19321                   </li>
19322                 </ul>
19323
19324             </td> <!-- entry_type -->
19325
19326             <td class="entry_description">
19327               <p>The crop type that this camera device supports.<wbr/></p>
19328             </td>
19329
19330             <td class="entry_units">
19331             </td>
19332
19333             <td class="entry_range">
19334             </td>
19335
19336             <td class="entry_hal_version">
19337               <p>3.<wbr/>2</p>
19338             </td>
19339
19340             <td class="entry_tags">
19341             </td>
19342
19343           </tr>
19344           <tr class="entries_header">
19345             <th class="th_details" colspan="6">Details</th>
19346           </tr>
19347           <tr class="entry_cont">
19348             <td class="entry_details" colspan="6">
19349               <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
19350 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
19351 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>)
19352 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
19353 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
19354 <p>Camera devices that support FREEFORM cropping will support any crop region that
19355 is inside of the active array.<wbr/> The camera device will apply the same crop region and
19356 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>
19357 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
19358             </td>
19359           </tr>
19360
19361
19362           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19363            <!-- end of entry -->
19364         
19365         
19366
19367       <!-- end of kind -->
19368       </tbody>
19369       <tr><td colspan="7" class="kind">dynamic</td></tr>
19370
19371       <thead class="entries_header">
19372         <tr>
19373           <th class="th_name">Property Name</th>
19374           <th class="th_type">Type</th>
19375           <th class="th_description">Description</th>
19376           <th class="th_units">Units</th>
19377           <th class="th_range">Range</th>
19378           <th class="th_hal_version">Initial HIDL HAL version</th>
19379           <th class="th_tags">Tags</th>
19380         </tr>
19381       </thead>
19382
19383       <tbody>
19384
19385         
19386
19387         
19388
19389         
19390
19391         
19392
19393                 
19394           <tr class="entry" id="dynamic_android.scaler.cropRegion">
19395             <td class="entry_name
19396              " rowspan="5">
19397               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
19398             </td>
19399             <td class="entry_type">
19400                 <span class="entry_type_name">int32</span>
19401                 <span class="entry_type_container">x</span>
19402
19403                 <span class="entry_type_array">
19404                   4
19405                 </span>
19406               <span class="entry_type_visibility"> [public as rectangle]</span>
19407
19408
19409               <span class="entry_type_hwlevel">[legacy] </span>
19410
19411
19412
19413
19414             </td> <!-- entry_type -->
19415
19416             <td class="entry_description">
19417               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
19418             </td>
19419
19420             <td class="entry_units">
19421               Pixel coordinates relative to
19422           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19423             </td>
19424
19425             <td class="entry_range">
19426             </td>
19427
19428             <td class="entry_hal_version">
19429               <p>3.<wbr/>2</p>
19430             </td>
19431
19432             <td class="entry_tags">
19433               <ul class="entry_tags">
19434                   <li><a href="#tag_BC">BC</a></li>
19435               </ul>
19436             </td>
19437
19438           </tr>
19439           <tr class="entries_header">
19440             <th class="th_details" colspan="6">Details</th>
19441           </tr>
19442           <tr class="entry_cont">
19443             <td class="entry_details" colspan="6">
19444               <p>This control can be used to implement digital zoom.<wbr/></p>
19445 <p>The crop region coordinate system is based off
19446 <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
19447 top-left corner of the sensor active array.<wbr/></p>
19448 <p>Output streams use this rectangle to produce their output,<wbr/>
19449 cropping to a smaller region if necessary to maintain the
19450 stream's aspect ratio,<wbr/> then scaling the sensor input to
19451 match the output's configured resolution.<wbr/></p>
19452 <p>The crop region is applied after the RAW to other color
19453 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
19454 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
19455 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
19456 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
19457 be done to maximize the final pixel area of the stream.<wbr/></p>
19458 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
19459 ratio,<wbr/> then 4:3 streams will use the exact crop
19460 region.<wbr/> 16:9 streams will further crop vertically
19461 (letterbox).<wbr/></p>
19462 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
19463 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
19464 streams will match exactly.<wbr/> These additional crops will
19465 be centered within the crop region.<wbr/></p>
19466 <p>The width and height of the crop region cannot
19467 be set to be smaller than
19468 <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
19469 <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>
19470 <p>The camera device may adjust the crop region to account
19471 for rounding and other hardware requirements; the final
19472 crop region used will be included in the output capture
19473 result.<wbr/></p>
19474             </td>
19475           </tr>
19476
19477           <tr class="entries_header">
19478             <th class="th_details" colspan="6">HAL Implementation Details</th>
19479           </tr>
19480           <tr class="entry_cont">
19481             <td class="entry_details" colspan="6">
19482               <p>The output streams must maintain square pixels at all
19483 times,<wbr/> no matter what the relative aspect ratios of the
19484 crop region and the stream are.<wbr/>  Negative values for
19485 corner are allowed for raw output if full pixel array is
19486 larger than active pixel array.<wbr/> Width and height may be
19487 rounded to nearest larger supportable width,<wbr/> especially
19488 for raw output,<wbr/> where only a few fixed scales may be
19489 possible.<wbr/></p>
19490 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
19491 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
19492 <ul>
19493 <li>
19494 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
19495 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
19496 <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>
19497 <ol>
19498 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
19499 cropped pixel area by (tx,<wbr/> ty),<wbr/>
19500 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
19501 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
19502 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
19503 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
19504 <li>Scale the width and height of requested cropRegion with scaling factor of
19505 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
19506 respectively.<wbr/>
19507 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
19508 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
19509 follow the general cropping rule for this new cropRegion and effective active
19510 array size.<wbr/></li>
19511 </ol>
19512 </li>
19513 <li>
19514 <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/>
19515 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
19516 The reported cropRegion may be slightly different with the requested cropRegion since
19517 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
19518 hardware limitations.<wbr/></p>
19519 </li>
19520 </ul>
19521 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
19522             </td>
19523           </tr>
19524
19525           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19526            <!-- end of entry -->
19527         
19528         
19529
19530       <!-- end of kind -->
19531       </tbody>
19532
19533   <!-- end of section -->
19534   <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
19535
19536
19537       <tr><td colspan="7" class="kind">controls</td></tr>
19538
19539       <thead class="entries_header">
19540         <tr>
19541           <th class="th_name">Property Name</th>
19542           <th class="th_type">Type</th>
19543           <th class="th_description">Description</th>
19544           <th class="th_units">Units</th>
19545           <th class="th_range">Range</th>
19546           <th class="th_hal_version">Initial HIDL HAL version</th>
19547           <th class="th_tags">Tags</th>
19548         </tr>
19549       </thead>
19550
19551       <tbody>
19552
19553         
19554
19555         
19556
19557         
19558
19559         
19560
19561                 
19562           <tr class="entry" id="controls_android.sensor.exposureTime">
19563             <td class="entry_name
19564              " rowspan="3">
19565               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
19566             </td>
19567             <td class="entry_type">
19568                 <span class="entry_type_name">int64</span>
19569
19570               <span class="entry_type_visibility"> [public]</span>
19571
19572
19573               <span class="entry_type_hwlevel">[full] </span>
19574
19575
19576
19577
19578             </td> <!-- entry_type -->
19579
19580             <td class="entry_description">
19581               <p>Duration each pixel is exposed to
19582 light.<wbr/></p>
19583             </td>
19584
19585             <td class="entry_units">
19586               Nanoseconds
19587             </td>
19588
19589             <td class="entry_range">
19590               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
19591             </td>
19592
19593             <td class="entry_hal_version">
19594               <p>3.<wbr/>2</p>
19595             </td>
19596
19597             <td class="entry_tags">
19598               <ul class="entry_tags">
19599                   <li><a href="#tag_V1">V1</a></li>
19600               </ul>
19601             </td>
19602
19603           </tr>
19604           <tr class="entries_header">
19605             <th class="th_details" colspan="6">Details</th>
19606           </tr>
19607           <tr class="entry_cont">
19608             <td class="entry_details" colspan="6">
19609               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
19610 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
19611 The final exposure time used will be available in the output capture result.<wbr/></p>
19612 <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
19613 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19614             </td>
19615           </tr>
19616
19617
19618           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19619            <!-- end of entry -->
19620         
19621                 
19622           <tr class="entry" id="controls_android.sensor.frameDuration">
19623             <td class="entry_name
19624              " rowspan="5">
19625               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
19626             </td>
19627             <td class="entry_type">
19628                 <span class="entry_type_name">int64</span>
19629
19630               <span class="entry_type_visibility"> [public]</span>
19631
19632
19633               <span class="entry_type_hwlevel">[full] </span>
19634
19635
19636
19637
19638             </td> <!-- entry_type -->
19639
19640             <td class="entry_description">
19641               <p>Duration from start of frame exposure to
19642 start of next frame exposure.<wbr/></p>
19643             </td>
19644
19645             <td class="entry_units">
19646               Nanoseconds
19647             </td>
19648
19649             <td class="entry_range">
19650               <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/>
19651 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
19652             </td>
19653
19654             <td class="entry_hal_version">
19655               <p>3.<wbr/>2</p>
19656             </td>
19657
19658             <td class="entry_tags">
19659               <ul class="entry_tags">
19660                   <li><a href="#tag_V1">V1</a></li>
19661               </ul>
19662             </td>
19663
19664           </tr>
19665           <tr class="entries_header">
19666             <th class="th_details" colspan="6">Details</th>
19667           </tr>
19668           <tr class="entry_cont">
19669             <td class="entry_details" colspan="6">
19670               <p>The maximum frame rate that can be supported by a camera subsystem is
19671 a function of many factors:</p>
19672 <ul>
19673 <li>Requested resolutions of output image streams</li>
19674 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
19675 <li>The bandwidth of the imager interface</li>
19676 <li>The bandwidth of the various ISP processing blocks</li>
19677 </ul>
19678 <p>Since these factors can vary greatly between different ISPs and
19679 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
19680 restrictions with as simple a model as possible.<wbr/></p>
19681 <p>The model presented has the following characteristics:</p>
19682 <ul>
19683 <li>The image sensor is always configured to output the smallest
19684 resolution possible given the application's requested output stream
19685 sizes.<wbr/>  The smallest resolution is defined as being at least as large
19686 as the largest requested output stream size; the camera pipeline must
19687 never digitally upsample sensor data when the crop region covers the
19688 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
19689 resolutions are configured,<wbr/> the sensor can provide a higher frame
19690 rate.<wbr/></li>
19691 <li>Since any request may use any or all the currently configured
19692 output streams,<wbr/> the sensor and ISP must be configured to support
19693 scaling a single capture to all the streams at the same time.<wbr/>  This
19694 means the camera pipeline must be ready to produce the largest
19695 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
19696 frame rate of a given configured stream set is governed only by the
19697 largest requested stream resolution.<wbr/></li>
19698 <li>Using more than one output stream in a request does not affect the
19699 frame duration.<wbr/></li>
19700 <li>Certain format-streams may need to do additional background processing
19701 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
19702 can run concurrently to the rest of the camera pipeline,<wbr/> but
19703 cannot process more than 1 capture at a time.<wbr/></li>
19704 </ul>
19705 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
19706 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
19707 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
19708 possible for a given stream configuration.<wbr/></p>
19709 <p>Specifically,<wbr/> the application can use the following rules to
19710 determine the minimum frame duration it can request from the camera
19711 device:</p>
19712 <ol>
19713 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
19714 <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>
19715 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
19716 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
19717 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>
19718 </ol>
19719 <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>
19720 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
19721 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
19722 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
19723 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
19724 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
19725 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
19726 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
19727 <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>
19728 <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
19729 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19730             </td>
19731           </tr>
19732
19733           <tr class="entries_header">
19734             <th class="th_details" colspan="6">HAL Implementation Details</th>
19735           </tr>
19736           <tr class="entry_cont">
19737             <td class="entry_details" colspan="6">
19738               <p>For more details about stalling,<wbr/> see
19739 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
19740             </td>
19741           </tr>
19742
19743           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19744            <!-- end of entry -->
19745         
19746                 
19747           <tr class="entry" id="controls_android.sensor.sensitivity">
19748             <td class="entry_name
19749              " rowspan="5">
19750               android.<wbr/>sensor.<wbr/>sensitivity
19751             </td>
19752             <td class="entry_type">
19753                 <span class="entry_type_name">int32</span>
19754
19755               <span class="entry_type_visibility"> [public]</span>
19756
19757
19758               <span class="entry_type_hwlevel">[full] </span>
19759
19760
19761
19762
19763             </td> <!-- entry_type -->
19764
19765             <td class="entry_description">
19766               <p>The amount of gain applied to sensor data
19767 before processing.<wbr/></p>
19768             </td>
19769
19770             <td class="entry_units">
19771               ISO arithmetic units
19772             </td>
19773
19774             <td class="entry_range">
19775               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
19776             </td>
19777
19778             <td class="entry_hal_version">
19779               <p>3.<wbr/>2</p>
19780             </td>
19781
19782             <td class="entry_tags">
19783               <ul class="entry_tags">
19784                   <li><a href="#tag_V1">V1</a></li>
19785               </ul>
19786             </td>
19787
19788           </tr>
19789           <tr class="entries_header">
19790             <th class="th_details" colspan="6">Details</th>
19791           </tr>
19792           <tr class="entry_cont">
19793             <td class="entry_details" colspan="6">
19794               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
19795 as defined in ISO 12232:2006.<wbr/></p>
19796 <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
19797 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
19798 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
19799 <p>If the camera device cannot apply the exact sensitivity
19800 requested,<wbr/> it will reduce the gain to the nearest supported
19801 value.<wbr/> The final sensitivity used will be available in the
19802 output capture result.<wbr/></p>
19803 <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
19804 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19805             </td>
19806           </tr>
19807
19808           <tr class="entries_header">
19809             <th class="th_details" colspan="6">HAL Implementation Details</th>
19810           </tr>
19811           <tr class="entry_cont">
19812             <td class="entry_details" colspan="6">
19813               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
19814             </td>
19815           </tr>
19816
19817           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19818            <!-- end of entry -->
19819         
19820                 
19821           <tr class="entry" id="controls_android.sensor.testPatternData">
19822             <td class="entry_name
19823              " rowspan="5">
19824               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
19825             </td>
19826             <td class="entry_type">
19827                 <span class="entry_type_name">int32</span>
19828                 <span class="entry_type_container">x</span>
19829
19830                 <span class="entry_type_array">
19831                   4
19832                 </span>
19833               <span class="entry_type_visibility"> [public]</span>
19834
19835
19836
19837
19838
19839
19840             </td> <!-- entry_type -->
19841
19842             <td class="entry_description">
19843               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
19844 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
19845             </td>
19846
19847             <td class="entry_units">
19848             </td>
19849
19850             <td class="entry_range">
19851             </td>
19852
19853             <td class="entry_hal_version">
19854               <p>3.<wbr/>2</p>
19855             </td>
19856
19857             <td class="entry_tags">
19858             </td>
19859
19860           </tr>
19861           <tr class="entries_header">
19862             <th class="th_details" colspan="6">Details</th>
19863           </tr>
19864           <tr class="entry_cont">
19865             <td class="entry_details" colspan="6">
19866               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
19867 The camera device then uses the most significant X bits
19868 that correspond to how many bits are in its Bayer raw sensor
19869 output.<wbr/></p>
19870 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
19871 10 most significant bits from each color channel.<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               
19881             </td>
19882           </tr>
19883
19884           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19885            <!-- end of entry -->
19886         
19887                 
19888           <tr class="entry" id="controls_android.sensor.testPatternMode">
19889             <td class="entry_name
19890              " rowspan="5">
19891               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
19892             </td>
19893             <td class="entry_type">
19894                 <span class="entry_type_name entry_type_name_enum">int32</span>
19895
19896               <span class="entry_type_visibility"> [public]</span>
19897
19898
19899
19900
19901
19902                 <ul class="entry_type_enum">
19903                   <li>
19904                     <span class="entry_type_enum_name">OFF (v3.2)</span>
19905                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
19906 device returns captures from the image sensor.<wbr/></p>
19907 <p>This is the default if the key is not set.<wbr/></p></span>
19908                   </li>
19909                   <li>
19910                     <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
19911                     <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
19912 respective color channel provided in
19913 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
19914 <p>For example:</p>
19915 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19916 </code></pre>
19917 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
19918 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19919 </code></pre>
19920 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
19921 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
19922                   </li>
19923                   <li>
19924                     <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
19925                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
19926 <p>The vertical bars (left-to-right) are as follows:</p>
19927 <ul>
19928 <li>100% white</li>
19929 <li>yellow</li>
19930 <li>cyan</li>
19931 <li>green</li>
19932 <li>magenta</li>
19933 <li>red</li>
19934 <li>blue</li>
19935 <li>black</li>
19936 </ul>
19937 <p>In general the image would look like the following:</p>
19938 <pre><code>W Y C G M R B K
19939 W Y C G M R B K
19940 W Y C G M R B K
19941 W Y C G M R B K
19942 W Y C G M R B K
19943 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19944 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19945 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19946
19947 (B = Blue,<wbr/> K = Black)
19948 </code></pre>
19949 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
19950 When this is not possible,<wbr/> the bar size should be rounded
19951 down to the nearest integer and the pattern can repeat
19952 on the right side.<wbr/></p>
19953 <p>Each bar's height must always take up the full sensor
19954 pixel array height.<wbr/></p>
19955 <p>Each pixel in this test pattern must be set to either
19956 0% intensity or 100% intensity.<wbr/></p></span>
19957                   </li>
19958                   <li>
19959                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
19960                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
19961 each bar should start at its specified color at the top,<wbr/>
19962 and fade to gray at the bottom.<wbr/></p>
19963 <p>Furthermore each bar is further subdivided into a left and
19964 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
19965 and the right half should have a quantized gradient.<wbr/></p>
19966 <p>In particular,<wbr/> the right half's should consist of blocks of the
19967 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
19968 <p>The least significant bits in the quantized gradient should
19969 be copied from the most significant bits of the smooth gradient.<wbr/></p>
19970 <p>The height of each bar should always be a multiple of 128.<wbr/>
19971 When this is not the case,<wbr/> the pattern should repeat at the bottom
19972 of the image.<wbr/></p></span>
19973                   </li>
19974                   <li>
19975                     <span class="entry_type_enum_name">PN9 (v3.2)</span>
19976                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
19977 generated from a PN9 512-bit sequence (typically implemented
19978 in hardware with a linear feedback shift register).<wbr/></p>
19979 <p>The generator should be reset at the beginning of each frame,<wbr/>
19980 and thus each subsequent raw frame with this test pattern should
19981 be exactly the same as the last.<wbr/></p></span>
19982                   </li>
19983                   <li>
19984                     <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
19985                     <span class="entry_type_enum_value">256</span>
19986                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
19987 available only on this camera device are at least this numeric
19988 value.<wbr/></p>
19989 <p>All of the custom test patterns will be static
19990 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
19991                   </li>
19992                 </ul>
19993
19994             </td> <!-- entry_type -->
19995
19996             <td class="entry_description">
19997               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
19998 doing a real exposure from the camera.<wbr/></p>
19999             </td>
20000
20001             <td class="entry_units">
20002             </td>
20003
20004             <td class="entry_range">
20005               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
20006             </td>
20007
20008             <td class="entry_hal_version">
20009               <p>3.<wbr/>2</p>
20010             </td>
20011
20012             <td class="entry_tags">
20013             </td>
20014
20015           </tr>
20016           <tr class="entries_header">
20017             <th class="th_details" colspan="6">Details</th>
20018           </tr>
20019           <tr class="entry_cont">
20020             <td class="entry_details" colspan="6">
20021               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
20022 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
20023 work as normal.<wbr/></p>
20024 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
20025 occur (and that the test pattern remain unmodified,<wbr/> since the flash
20026 would not actually affect it).<wbr/></p>
20027 <p>Defaults to OFF.<wbr/></p>
20028             </td>
20029           </tr>
20030
20031           <tr class="entries_header">
20032             <th class="th_details" colspan="6">HAL Implementation Details</th>
20033           </tr>
20034           <tr class="entry_cont">
20035             <td class="entry_details" colspan="6">
20036               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
20037 <p>The HAL may choose to substitute test patterns from the sensor
20038 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
20039 indistinguishable to the ISP whether the data came from the
20040 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
20041             </td>
20042           </tr>
20043
20044           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20045            <!-- end of entry -->
20046         
20047         
20048
20049       <!-- end of kind -->
20050       </tbody>
20051       <tr><td colspan="7" class="kind">static</td></tr>
20052
20053       <thead class="entries_header">
20054         <tr>
20055           <th class="th_name">Property Name</th>
20056           <th class="th_type">Type</th>
20057           <th class="th_description">Description</th>
20058           <th class="th_units">Units</th>
20059           <th class="th_range">Range</th>
20060           <th class="th_hal_version">Initial HIDL HAL version</th>
20061           <th class="th_tags">Tags</th>
20062         </tr>
20063       </thead>
20064
20065       <tbody>
20066
20067         
20068
20069         
20070
20071         
20072
20073         
20074                 
20075             
20076
20077                 
20078           <tr class="entry" id="static_android.sensor.info.activeArraySize">
20079             <td class="entry_name
20080              " rowspan="5">
20081               android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
20082             </td>
20083             <td class="entry_type">
20084                 <span class="entry_type_name">int32</span>
20085                 <span class="entry_type_container">x</span>
20086
20087                 <span class="entry_type_array">
20088                   4
20089                 </span>
20090               <span class="entry_type_visibility"> [public as rectangle]</span>
20091
20092
20093               <span class="entry_type_hwlevel">[legacy] </span>
20094
20095
20096                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
20097
20098
20099             </td> <!-- entry_type -->
20100
20101             <td class="entry_description">
20102               <p>The area of the image sensor which corresponds to active pixels after any geometric
20103 distortion correction has been applied.<wbr/></p>
20104             </td>
20105
20106             <td class="entry_units">
20107               Pixel coordinates on the image sensor
20108             </td>
20109
20110             <td class="entry_range">
20111             </td>
20112
20113             <td class="entry_hal_version">
20114               <p>3.<wbr/>2</p>
20115             </td>
20116
20117             <td class="entry_tags">
20118               <ul class="entry_tags">
20119                   <li><a href="#tag_RAW">RAW</a></li>
20120               </ul>
20121             </td>
20122
20123           </tr>
20124           <tr class="entries_header">
20125             <th class="th_details" colspan="6">Details</th>
20126           </tr>
20127           <tr class="entry_cont">
20128             <td class="entry_details" colspan="6">
20129               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20130 the region that actually receives light from the scene) after any geometric correction
20131 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
20132 image output formats aside from the raw formats.<wbr/></p>
20133 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20134 the full pixel array,<wbr/> and the size of the full pixel array is given by
20135 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20136 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
20137 <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
20138 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
20139 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
20140 include black calibration pixels or other inactive regions,<wbr/> and geometric correction
20141 resulting in scaling or cropping may have been applied.<wbr/></p>
20142             </td>
20143           </tr>
20144
20145           <tr class="entries_header">
20146             <th class="th_details" colspan="6">HAL Implementation Details</th>
20147           </tr>
20148           <tr class="entry_cont">
20149             <td class="entry_details" colspan="6">
20150               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20151 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
20152 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>
20153             </td>
20154           </tr>
20155
20156           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20157            <!-- end of entry -->
20158         
20159                 
20160           <tr class="entry" id="static_android.sensor.info.sensitivityRange">
20161             <td class="entry_name
20162              " rowspan="3">
20163               android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
20164             </td>
20165             <td class="entry_type">
20166                 <span class="entry_type_name">int32</span>
20167                 <span class="entry_type_container">x</span>
20168
20169                 <span class="entry_type_array">
20170                   2
20171                 </span>
20172               <span class="entry_type_visibility"> [public as rangeInt]</span>
20173
20174
20175               <span class="entry_type_hwlevel">[full] </span>
20176
20177
20178                 <div class="entry_type_notes">Range of supported sensitivities</div>
20179
20180
20181             </td> <!-- entry_type -->
20182
20183             <td class="entry_description">
20184               <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
20185 camera device.<wbr/></p>
20186             </td>
20187
20188             <td class="entry_units">
20189             </td>
20190
20191             <td class="entry_range">
20192               <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
20193             </td>
20194
20195             <td class="entry_hal_version">
20196               <p>3.<wbr/>2</p>
20197             </td>
20198
20199             <td class="entry_tags">
20200               <ul class="entry_tags">
20201                   <li><a href="#tag_BC">BC</a></li>
20202                   <li><a href="#tag_V1">V1</a></li>
20203               </ul>
20204             </td>
20205
20206           </tr>
20207           <tr class="entries_header">
20208             <th class="th_details" colspan="6">Details</th>
20209           </tr>
20210           <tr class="entry_cont">
20211             <td class="entry_details" colspan="6">
20212               <p>The values are the standard ISO sensitivity values,<wbr/>
20213 as defined in ISO 12232:2006.<wbr/></p>
20214             </td>
20215           </tr>
20216
20217
20218           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20219            <!-- end of entry -->
20220         
20221                 
20222           <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
20223             <td class="entry_name
20224              " rowspan="1">
20225               android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
20226             </td>
20227             <td class="entry_type">
20228                 <span class="entry_type_name entry_type_name_enum">byte</span>
20229
20230               <span class="entry_type_visibility"> [public]</span>
20231
20232
20233               <span class="entry_type_hwlevel">[full] </span>
20234
20235
20236
20237                 <ul class="entry_type_enum">
20238                   <li>
20239                     <span class="entry_type_enum_name">RGGB (v3.2)</span>
20240                   </li>
20241                   <li>
20242                     <span class="entry_type_enum_name">GRBG (v3.2)</span>
20243                   </li>
20244                   <li>
20245                     <span class="entry_type_enum_name">GBRG (v3.2)</span>
20246                   </li>
20247                   <li>
20248                     <span class="entry_type_enum_name">BGGR (v3.2)</span>
20249                   </li>
20250                   <li>
20251                     <span class="entry_type_enum_name">RGB (v3.2)</span>
20252                     <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
20253 values for each pixel,<wbr/> instead of just 1 16-bit value
20254 per pixel.<wbr/></p></span>
20255                   </li>
20256                 </ul>
20257
20258             </td> <!-- entry_type -->
20259
20260             <td class="entry_description">
20261               <p>The arrangement of color filters on sensor;
20262 represents the colors in the top-left 2x2 section of
20263 the sensor,<wbr/> in reading order.<wbr/></p>
20264             </td>
20265
20266             <td class="entry_units">
20267             </td>
20268
20269             <td class="entry_range">
20270             </td>
20271
20272             <td class="entry_hal_version">
20273               <p>3.<wbr/>2</p>
20274             </td>
20275
20276             <td class="entry_tags">
20277               <ul class="entry_tags">
20278                   <li><a href="#tag_RAW">RAW</a></li>
20279               </ul>
20280             </td>
20281
20282           </tr>
20283
20284
20285           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20286            <!-- end of entry -->
20287         
20288                 
20289           <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
20290             <td class="entry_name
20291              " rowspan="3">
20292               android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
20293             </td>
20294             <td class="entry_type">
20295                 <span class="entry_type_name">int64</span>
20296                 <span class="entry_type_container">x</span>
20297
20298                 <span class="entry_type_array">
20299                   2
20300                 </span>
20301               <span class="entry_type_visibility"> [public as rangeLong]</span>
20302
20303
20304               <span class="entry_type_hwlevel">[full] </span>
20305
20306
20307                 <div class="entry_type_notes">nanoseconds</div>
20308
20309
20310             </td> <!-- entry_type -->
20311
20312             <td class="entry_description">
20313               <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
20314 by this camera device.<wbr/></p>
20315             </td>
20316
20317             <td class="entry_units">
20318               Nanoseconds
20319             </td>
20320
20321             <td class="entry_range">
20322               <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
20323 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20324 the maximum exposure time will be greater than 100ms.<wbr/></p>
20325             </td>
20326
20327             <td class="entry_hal_version">
20328               <p>3.<wbr/>2</p>
20329             </td>
20330
20331             <td class="entry_tags">
20332               <ul class="entry_tags">
20333                   <li><a href="#tag_V1">V1</a></li>
20334               </ul>
20335             </td>
20336
20337           </tr>
20338
20339           <tr class="entries_header">
20340             <th class="th_details" colspan="6">HAL Implementation Details</th>
20341           </tr>
20342           <tr class="entry_cont">
20343             <td class="entry_details" colspan="6">
20344               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20345 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
20346 100ms.<wbr/></p>
20347             </td>
20348           </tr>
20349
20350           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20351            <!-- end of entry -->
20352         
20353                 
20354           <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
20355             <td class="entry_name
20356              " rowspan="5">
20357               android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
20358             </td>
20359             <td class="entry_type">
20360                 <span class="entry_type_name">int64</span>
20361
20362               <span class="entry_type_visibility"> [public]</span>
20363
20364
20365               <span class="entry_type_hwlevel">[full] </span>
20366
20367
20368
20369
20370             </td> <!-- entry_type -->
20371
20372             <td class="entry_description">
20373               <p>The maximum possible frame duration (minimum frame rate) for
20374 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
20375             </td>
20376
20377             <td class="entry_units">
20378               Nanoseconds
20379             </td>
20380
20381             <td class="entry_range">
20382               <p>For FULL capability devices
20383 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
20384             </td>
20385
20386             <td class="entry_hal_version">
20387               <p>3.<wbr/>2</p>
20388             </td>
20389
20390             <td class="entry_tags">
20391               <ul class="entry_tags">
20392                   <li><a href="#tag_V1">V1</a></li>
20393               </ul>
20394             </td>
20395
20396           </tr>
20397           <tr class="entries_header">
20398             <th class="th_details" colspan="6">Details</th>
20399           </tr>
20400           <tr class="entry_cont">
20401             <td class="entry_details" colspan="6">
20402               <p>Attempting to use frame durations beyond the maximum will result in the frame
20403 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
20404 durations.<wbr/></p>
20405 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20406 for the minimum frame duration values.<wbr/></p>
20407             </td>
20408           </tr>
20409
20410           <tr class="entries_header">
20411             <th class="th_details" colspan="6">HAL Implementation Details</th>
20412           </tr>
20413           <tr class="entry_cont">
20414             <td class="entry_details" colspan="6">
20415               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20416 The maximum of the range SHOULD be at least
20417 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
20418 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
20419 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
20420 value (since exposure time overrides frame duration).<wbr/></p>
20421 <p>Available minimum frame durations for JPEG must be no greater
20422 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
20423 minimum frame durations (for that respective size).<wbr/></p>
20424 <p>Since JPEG processing is considered offline and can take longer than
20425 a single uncompressed capture,<wbr/> refer to
20426 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
20427 for details about encoding this scenario.<wbr/></p>
20428             </td>
20429           </tr>
20430
20431           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20432            <!-- end of entry -->
20433         
20434                 
20435           <tr class="entry" id="static_android.sensor.info.physicalSize">
20436             <td class="entry_name
20437              " rowspan="5">
20438               android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
20439             </td>
20440             <td class="entry_type">
20441                 <span class="entry_type_name">float</span>
20442                 <span class="entry_type_container">x</span>
20443
20444                 <span class="entry_type_array">
20445                   2
20446                 </span>
20447               <span class="entry_type_visibility"> [public as sizeF]</span>
20448
20449
20450               <span class="entry_type_hwlevel">[legacy] </span>
20451
20452
20453                 <div class="entry_type_notes">width x height</div>
20454
20455
20456             </td> <!-- entry_type -->
20457
20458             <td class="entry_description">
20459               <p>The physical dimensions of the full pixel
20460 array.<wbr/></p>
20461             </td>
20462
20463             <td class="entry_units">
20464               Millimeters
20465             </td>
20466
20467             <td class="entry_range">
20468             </td>
20469
20470             <td class="entry_hal_version">
20471               <p>3.<wbr/>2</p>
20472             </td>
20473
20474             <td class="entry_tags">
20475               <ul class="entry_tags">
20476                   <li><a href="#tag_V1">V1</a></li>
20477                   <li><a href="#tag_BC">BC</a></li>
20478               </ul>
20479             </td>
20480
20481           </tr>
20482           <tr class="entries_header">
20483             <th class="th_details" colspan="6">Details</th>
20484           </tr>
20485           <tr class="entry_cont">
20486             <td class="entry_details" colspan="6">
20487               <p>This is the physical size of the sensor pixel
20488 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20489             </td>
20490           </tr>
20491
20492           <tr class="entries_header">
20493             <th class="th_details" colspan="6">HAL Implementation Details</th>
20494           </tr>
20495           <tr class="entry_cont">
20496             <td class="entry_details" colspan="6">
20497               <p>Needed for FOV calculation for old API</p>
20498             </td>
20499           </tr>
20500
20501           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20502            <!-- end of entry -->
20503         
20504                 
20505           <tr class="entry" id="static_android.sensor.info.pixelArraySize">
20506             <td class="entry_name
20507              " rowspan="3">
20508               android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
20509             </td>
20510             <td class="entry_type">
20511                 <span class="entry_type_name">int32</span>
20512                 <span class="entry_type_container">x</span>
20513
20514                 <span class="entry_type_array">
20515                   2
20516                 </span>
20517               <span class="entry_type_visibility"> [public as size]</span>
20518
20519
20520               <span class="entry_type_hwlevel">[legacy] </span>
20521
20522
20523
20524
20525             </td> <!-- entry_type -->
20526
20527             <td class="entry_description">
20528               <p>Dimensions of the full pixel array,<wbr/> possibly
20529 including black calibration pixels.<wbr/></p>
20530             </td>
20531
20532             <td class="entry_units">
20533               Pixels
20534             </td>
20535
20536             <td class="entry_range">
20537             </td>
20538
20539             <td class="entry_hal_version">
20540               <p>3.<wbr/>2</p>
20541             </td>
20542
20543             <td class="entry_tags">
20544               <ul class="entry_tags">
20545                   <li><a href="#tag_RAW">RAW</a></li>
20546                   <li><a href="#tag_BC">BC</a></li>
20547               </ul>
20548             </td>
20549
20550           </tr>
20551           <tr class="entries_header">
20552             <th class="th_details" colspan="6">Details</th>
20553           </tr>
20554           <tr class="entry_cont">
20555             <td class="entry_details" colspan="6">
20556               <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
20557 <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
20558 the raw buffers produced by this sensor.<wbr/></p>
20559 <p>If a camera device supports raw sensor formats,<wbr/> either this or
20560 <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
20561 output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
20562 (this depends on whether or not the image sensor returns buffers containing pixels that
20563 are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
20564 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
20565 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
20566 defines the rectangle of active pixels that will be included in processed image
20567 formats.<wbr/></p>
20568             </td>
20569           </tr>
20570
20571
20572           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20573            <!-- end of entry -->
20574         
20575                 
20576           <tr class="entry" id="static_android.sensor.info.whiteLevel">
20577             <td class="entry_name
20578              " rowspan="5">
20579               android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
20580             </td>
20581             <td class="entry_type">
20582                 <span class="entry_type_name">int32</span>
20583
20584               <span class="entry_type_visibility"> [public]</span>
20585
20586
20587
20588
20589
20590
20591             </td> <!-- entry_type -->
20592
20593             <td class="entry_description">
20594               <p>Maximum raw value output by sensor.<wbr/></p>
20595             </td>
20596
20597             <td class="entry_units">
20598             </td>
20599
20600             <td class="entry_range">
20601               <p>&gt; 255 (8-bit output)</p>
20602             </td>
20603
20604             <td class="entry_hal_version">
20605               <p>3.<wbr/>2</p>
20606             </td>
20607
20608             <td class="entry_tags">
20609               <ul class="entry_tags">
20610                   <li><a href="#tag_RAW">RAW</a></li>
20611               </ul>
20612             </td>
20613
20614           </tr>
20615           <tr class="entries_header">
20616             <th class="th_details" colspan="6">Details</th>
20617           </tr>
20618           <tr class="entry_cont">
20619             <td class="entry_details" colspan="6">
20620               <p>This specifies the fully-saturated encoding level for the raw
20621 sample values from the sensor.<wbr/>  This is typically caused by the
20622 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
20623 each channel is specified by the offset in the
20624 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
20625 <p>The white level is typically determined either by sensor bit depth
20626 (8-14 bits is expected),<wbr/> or by the point where the sensor response
20627 becomes too non-linear to be useful.<wbr/>  The default value for this is
20628 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
20629 <p>The white level values of captured images may vary for different
20630 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20631 represents a coarse approximation for such case.<wbr/> It is recommended
20632 to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
20633 by the camera device,<wbr/> which provides more accurate white level values.<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>The full bit depth of the sensor must be available in the raw data,<wbr/>
20643 so the value for linear sensors should not be significantly lower
20644 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
20645             </td>
20646           </tr>
20647
20648           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20649            <!-- end of entry -->
20650         
20651                 
20652           <tr class="entry" id="static_android.sensor.info.timestampSource">
20653             <td class="entry_name
20654              " rowspan="5">
20655               android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
20656             </td>
20657             <td class="entry_type">
20658                 <span class="entry_type_name entry_type_name_enum">byte</span>
20659
20660               <span class="entry_type_visibility"> [public]</span>
20661
20662
20663               <span class="entry_type_hwlevel">[legacy] </span>
20664
20665
20666
20667                 <ul class="entry_type_enum">
20668                   <li>
20669                     <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
20670                     <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/>
20671 but can not be compared to timestamps from other subsystems
20672 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
20673 camera devices in the same system.<wbr/> Timestamps between streams and results for
20674 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
20675 and the result metadata generated by a single capture are identical.<wbr/></p></span>
20676                   </li>
20677                   <li>
20678                     <span class="entry_type_enum_name">REALTIME (v3.2)</span>
20679                     <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
20680 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
20681 and they can be compared to other timestamps using that base.<wbr/></p></span>
20682                   </li>
20683                 </ul>
20684
20685             </td> <!-- entry_type -->
20686
20687             <td class="entry_description">
20688               <p>The time base source for sensor capture start timestamps.<wbr/></p>
20689             </td>
20690
20691             <td class="entry_units">
20692             </td>
20693
20694             <td class="entry_range">
20695             </td>
20696
20697             <td class="entry_hal_version">
20698               <p>3.<wbr/>2</p>
20699             </td>
20700
20701             <td class="entry_tags">
20702               <ul class="entry_tags">
20703                   <li><a href="#tag_V1">V1</a></li>
20704               </ul>
20705             </td>
20706
20707           </tr>
20708           <tr class="entries_header">
20709             <th class="th_details" colspan="6">Details</th>
20710           </tr>
20711           <tr class="entry_cont">
20712             <td class="entry_details" colspan="6">
20713               <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
20714 may not based on a time source that can be compared to other system time sources.<wbr/></p>
20715 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
20716 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
20717             </td>
20718           </tr>
20719
20720           <tr class="entries_header">
20721             <th class="th_details" colspan="6">HAL Implementation Details</th>
20722           </tr>
20723           <tr class="entry_cont">
20724             <td class="entry_details" colspan="6">
20725               <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
20726 source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
20727 framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
20728 system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
20729 SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
20730 recording might suffer unexpected behavior.<wbr/></p>
20731 <p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
20732 tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
20733             </td>
20734           </tr>
20735
20736           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20737            <!-- end of entry -->
20738         
20739                 
20740           <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
20741             <td class="entry_name
20742              " rowspan="3">
20743               android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
20744             </td>
20745             <td class="entry_type">
20746                 <span class="entry_type_name entry_type_name_enum">byte</span>
20747
20748               <span class="entry_type_visibility"> [public as boolean]</span>
20749
20750
20751
20752
20753
20754                 <ul class="entry_type_enum">
20755                   <li>
20756                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
20757                   </li>
20758                   <li>
20759                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
20760                   </li>
20761                 </ul>
20762
20763             </td> <!-- entry_type -->
20764
20765             <td class="entry_description">
20766               <p>Whether the RAW images output from this camera device are subject to
20767 lens shading correction.<wbr/></p>
20768             </td>
20769
20770             <td class="entry_units">
20771             </td>
20772
20773             <td class="entry_range">
20774             </td>
20775
20776             <td class="entry_hal_version">
20777               <p>3.<wbr/>2</p>
20778             </td>
20779
20780             <td class="entry_tags">
20781             </td>
20782
20783           </tr>
20784           <tr class="entries_header">
20785             <th class="th_details" colspan="6">Details</th>
20786           </tr>
20787           <tr class="entry_cont">
20788             <td class="entry_details" colspan="6">
20789               <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
20790 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
20791 not be adjusted for lens shading correction.<wbr/>
20792 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>
20793 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
20794 Devices with RAW capability will always report this information in this key.<wbr/></p>
20795             </td>
20796           </tr>
20797
20798
20799           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20800            <!-- end of entry -->
20801         
20802                 
20803           <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
20804             <td class="entry_name
20805              " rowspan="5">
20806               android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
20807             </td>
20808             <td class="entry_type">
20809                 <span class="entry_type_name">int32</span>
20810                 <span class="entry_type_container">x</span>
20811
20812                 <span class="entry_type_array">
20813                   4
20814                 </span>
20815               <span class="entry_type_visibility"> [public as rectangle]</span>
20816
20817
20818               <span class="entry_type_hwlevel">[legacy] </span>
20819
20820
20821                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
20822
20823
20824             </td> <!-- entry_type -->
20825
20826             <td class="entry_description">
20827               <p>The area of the image sensor which corresponds to active pixels prior to the
20828 application of any geometric distortion correction.<wbr/></p>
20829             </td>
20830
20831             <td class="entry_units">
20832               Pixel coordinates on the image sensor
20833             </td>
20834
20835             <td class="entry_range">
20836             </td>
20837
20838             <td class="entry_hal_version">
20839               <p>3.<wbr/>2</p>
20840             </td>
20841
20842             <td class="entry_tags">
20843               <ul class="entry_tags">
20844                   <li><a href="#tag_RAW">RAW</a></li>
20845               </ul>
20846             </td>
20847
20848           </tr>
20849           <tr class="entries_header">
20850             <th class="th_details" colspan="6">Details</th>
20851           </tr>
20852           <tr class="entry_cont">
20853             <td class="entry_details" colspan="6">
20854               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20855 the region that actually receives light from the scene) before any geometric correction
20856 has been applied,<wbr/> and should be treated as the active region rectangle for any of the
20857 raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
20858 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
20859 the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
20860 <p>The size of this region determines the maximum field of view and the maximum number of
20861 pixels that an image from this sensor can contain,<wbr/> prior to the application of
20862 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
20863 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>
20864 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
20865 can be calculated by applying the geometric distortion correction fields to this
20866 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>
20867 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
20868 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/>
20869 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
20870 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
20871 <ol>
20872 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
20873 <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
20874 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
20875 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
20876 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
20877 buffers is defined relative to the top,<wbr/> left of the
20878 <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>
20879 <li>If the resulting corrected pixel coordinate is within the region given in
20880 <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
20881 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
20882 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
20883 </ol>
20884 <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>
20885 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/>
20886 <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
20887 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
20888 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
20889 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)
20890 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
20891 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20892 <p>The currently supported fields that correct for geometric distortion are:</p>
20893 <ol>
20894 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li>
20895 </ol>
20896 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
20897 as the post-distortion-corrected rectangle given in
20898 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20899 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20900 the full pixel array,<wbr/> and the size of the full pixel array is given by
20901 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20902 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
20903 full array may include black calibration pixels or other inactive regions.<wbr/></p>
20904             </td>
20905           </tr>
20906
20907           <tr class="entries_header">
20908             <th class="th_details" colspan="6">HAL Implementation Details</th>
20909           </tr>
20910           <tr class="entry_cont">
20911             <td class="entry_details" colspan="6">
20912               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20913 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
20914 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>
20915 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
20916 the same as the post-correction active array region given in
20917 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20918             </td>
20919           </tr>
20920
20921           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20922            <!-- end of entry -->
20923         
20924         
20925         
20926
20927                 
20928           <tr class="entry" id="static_android.sensor.referenceIlluminant1">
20929             <td class="entry_name
20930              " rowspan="5">
20931               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
20932             </td>
20933             <td class="entry_type">
20934                 <span class="entry_type_name entry_type_name_enum">byte</span>
20935
20936               <span class="entry_type_visibility"> [public]</span>
20937
20938
20939
20940
20941
20942                 <ul class="entry_type_enum">
20943                   <li>
20944                     <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
20945                     <span class="entry_type_enum_value">1</span>
20946                   </li>
20947                   <li>
20948                     <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
20949                     <span class="entry_type_enum_value">2</span>
20950                   </li>
20951                   <li>
20952                     <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span>
20953                     <span class="entry_type_enum_value">3</span>
20954                     <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
20955                   </li>
20956                   <li>
20957                     <span class="entry_type_enum_name">FLASH (v3.2)</span>
20958                     <span class="entry_type_enum_value">4</span>
20959                   </li>
20960                   <li>
20961                     <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span>
20962                     <span class="entry_type_enum_value">9</span>
20963                   </li>
20964                   <li>
20965                     <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span>
20966                     <span class="entry_type_enum_value">10</span>
20967                   </li>
20968                   <li>
20969                     <span class="entry_type_enum_name">SHADE (v3.2)</span>
20970                     <span class="entry_type_enum_value">11</span>
20971                   </li>
20972                   <li>
20973                     <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span>
20974                     <span class="entry_type_enum_value">12</span>
20975                     <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
20976                   </li>
20977                   <li>
20978                     <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span>
20979                     <span class="entry_type_enum_value">13</span>
20980                     <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
20981                   </li>
20982                   <li>
20983                     <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span>
20984                     <span class="entry_type_enum_value">14</span>
20985                     <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
20986                   </li>
20987                   <li>
20988                     <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span>
20989                     <span class="entry_type_enum_value">15</span>
20990                     <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
20991                   </li>
20992                   <li>
20993                     <span class="entry_type_enum_name">STANDARD_A (v3.2)</span>
20994                     <span class="entry_type_enum_value">17</span>
20995                   </li>
20996                   <li>
20997                     <span class="entry_type_enum_name">STANDARD_B (v3.2)</span>
20998                     <span class="entry_type_enum_value">18</span>
20999                   </li>
21000                   <li>
21001                     <span class="entry_type_enum_name">STANDARD_C (v3.2)</span>
21002                     <span class="entry_type_enum_value">19</span>
21003                   </li>
21004                   <li>
21005                     <span class="entry_type_enum_name">D55 (v3.2)</span>
21006                     <span class="entry_type_enum_value">20</span>
21007                   </li>
21008                   <li>
21009                     <span class="entry_type_enum_name">D65 (v3.2)</span>
21010                     <span class="entry_type_enum_value">21</span>
21011                   </li>
21012                   <li>
21013                     <span class="entry_type_enum_name">D75 (v3.2)</span>
21014                     <span class="entry_type_enum_value">22</span>
21015                   </li>
21016                   <li>
21017                     <span class="entry_type_enum_name">D50 (v3.2)</span>
21018                     <span class="entry_type_enum_value">23</span>
21019                   </li>
21020                   <li>
21021                     <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span>
21022                     <span class="entry_type_enum_value">24</span>
21023                   </li>
21024                 </ul>
21025
21026             </td> <!-- entry_type -->
21027
21028             <td class="entry_description">
21029               <p>The standard reference illuminant used as the scene light source when
21030 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
21031 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
21032 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
21033             </td>
21034
21035             <td class="entry_units">
21036             </td>
21037
21038             <td class="entry_range">
21039             </td>
21040
21041             <td class="entry_hal_version">
21042               <p>3.<wbr/>2</p>
21043             </td>
21044
21045             <td class="entry_tags">
21046               <ul class="entry_tags">
21047                   <li><a href="#tag_RAW">RAW</a></li>
21048               </ul>
21049             </td>
21050
21051           </tr>
21052           <tr class="entries_header">
21053             <th class="th_details" colspan="6">Details</th>
21054           </tr>
21055           <tr class="entry_cont">
21056             <td class="entry_details" colspan="6">
21057               <p>The values in this key correspond to the values defined for the
21058 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
21059 that are often used calibrating camera devices.<wbr/></p>
21060 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
21061 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
21062 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
21063 <p>Some devices may choose to provide a second set of calibration
21064 information for improved quality,<wbr/> including
21065 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
21066             </td>
21067           </tr>
21068
21069           <tr class="entries_header">
21070             <th class="th_details" colspan="6">HAL Implementation Details</th>
21071           </tr>
21072           <tr class="entry_cont">
21073             <td class="entry_details" colspan="6">
21074               <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21075 and corresponding matrices must be present to support the RAW capability
21076 and DNG output.<wbr/></p>
21077 <p>When producing raw images with a color profile that has only been
21078 calibrated against a single light source,<wbr/> it is valid to omit
21079 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
21080 <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/>
21081 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21082 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
21083 chosen so that it is representative of typical scene lighting.<wbr/>  In
21084 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
21085 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
21086 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
21087 chosen to represent the typical range of scene lighting conditions.<wbr/>
21088 In general,<wbr/> low color temperature illuminant such as Standard-A will
21089 be chosen for the first reference illuminant and a higher color
21090 temperature illuminant such as D65 will be chosen for the second
21091 reference illuminant.<wbr/></p>
21092             </td>
21093           </tr>
21094
21095           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21096            <!-- end of entry -->
21097         
21098                 
21099           <tr class="entry" id="static_android.sensor.referenceIlluminant2">
21100             <td class="entry_name
21101              " rowspan="3">
21102               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
21103             </td>
21104             <td class="entry_type">
21105                 <span class="entry_type_name">byte</span>
21106
21107               <span class="entry_type_visibility"> [public]</span>
21108
21109
21110
21111
21112
21113
21114             </td> <!-- entry_type -->
21115
21116             <td class="entry_description">
21117               <p>The standard reference illuminant used as the scene light source when
21118 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21119 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21120 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21121             </td>
21122
21123             <td class="entry_units">
21124             </td>
21125
21126             <td class="entry_range">
21127               <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
21128             </td>
21129
21130             <td class="entry_hal_version">
21131               <p>3.<wbr/>2</p>
21132             </td>
21133
21134             <td class="entry_tags">
21135               <ul class="entry_tags">
21136                   <li><a href="#tag_RAW">RAW</a></li>
21137               </ul>
21138             </td>
21139
21140           </tr>
21141           <tr class="entries_header">
21142             <th class="th_details" colspan="6">Details</th>
21143           </tr>
21144           <tr class="entry_cont">
21145             <td class="entry_details" colspan="6">
21146               <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
21147 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21148 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21149 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
21150             </td>
21151           </tr>
21152
21153
21154           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21155            <!-- end of entry -->
21156         
21157                 
21158           <tr class="entry" id="static_android.sensor.calibrationTransform1">
21159             <td class="entry_name
21160              " rowspan="3">
21161               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
21162             </td>
21163             <td class="entry_type">
21164                 <span class="entry_type_name">rational</span>
21165                 <span class="entry_type_container">x</span>
21166
21167                 <span class="entry_type_array">
21168                   3 x 3
21169                 </span>
21170               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21171
21172
21173
21174
21175                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21176
21177
21178             </td> <!-- entry_type -->
21179
21180             <td class="entry_description">
21181               <p>A per-device calibration transform matrix that maps from the
21182 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
21183             </td>
21184
21185             <td class="entry_units">
21186             </td>
21187
21188             <td class="entry_range">
21189             </td>
21190
21191             <td class="entry_hal_version">
21192               <p>3.<wbr/>2</p>
21193             </td>
21194
21195             <td class="entry_tags">
21196               <ul class="entry_tags">
21197                   <li><a href="#tag_RAW">RAW</a></li>
21198               </ul>
21199             </td>
21200
21201           </tr>
21202           <tr class="entries_header">
21203             <th class="th_details" colspan="6">Details</th>
21204           </tr>
21205           <tr class="entry_cont">
21206             <td class="entry_details" colspan="6">
21207               <p>This matrix is used to correct for per-device variations in the
21208 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21209 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21210 contains a per-device calibration transform that maps colors
21211 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21212 colorspace) into this camera device's native sensor color
21213 space under the first reference illuminant
21214 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21215             </td>
21216           </tr>
21217
21218
21219           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21220            <!-- end of entry -->
21221         
21222                 
21223           <tr class="entry" id="static_android.sensor.calibrationTransform2">
21224             <td class="entry_name
21225              " rowspan="3">
21226               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
21227             </td>
21228             <td class="entry_type">
21229                 <span class="entry_type_name">rational</span>
21230                 <span class="entry_type_container">x</span>
21231
21232                 <span class="entry_type_array">
21233                   3 x 3
21234                 </span>
21235               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21236
21237
21238
21239
21240                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21241
21242
21243             </td> <!-- entry_type -->
21244
21245             <td class="entry_description">
21246               <p>A per-device calibration transform matrix that maps from the
21247 reference sensor colorspace to the actual device sensor colorspace
21248 (this is the colorspace of the raw buffer data).<wbr/></p>
21249             </td>
21250
21251             <td class="entry_units">
21252             </td>
21253
21254             <td class="entry_range">
21255             </td>
21256
21257             <td class="entry_hal_version">
21258               <p>3.<wbr/>2</p>
21259             </td>
21260
21261             <td class="entry_tags">
21262               <ul class="entry_tags">
21263                   <li><a href="#tag_RAW">RAW</a></li>
21264               </ul>
21265             </td>
21266
21267           </tr>
21268           <tr class="entries_header">
21269             <th class="th_details" colspan="6">Details</th>
21270           </tr>
21271           <tr class="entry_cont">
21272             <td class="entry_details" colspan="6">
21273               <p>This matrix is used to correct for per-device variations in the
21274 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21275 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21276 contains a per-device calibration transform that maps colors
21277 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21278 colorspace) into this camera device's native sensor color
21279 space under the second reference illuminant
21280 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21281 <p>This matrix will only be present if the second reference
21282 illuminant is present.<wbr/></p>
21283             </td>
21284           </tr>
21285
21286
21287           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21288            <!-- end of entry -->
21289         
21290                 
21291           <tr class="entry" id="static_android.sensor.colorTransform1">
21292             <td class="entry_name
21293              " rowspan="3">
21294               android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
21295             </td>
21296             <td class="entry_type">
21297                 <span class="entry_type_name">rational</span>
21298                 <span class="entry_type_container">x</span>
21299
21300                 <span class="entry_type_array">
21301                   3 x 3
21302                 </span>
21303               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21304
21305
21306
21307
21308                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21309
21310
21311             </td> <!-- entry_type -->
21312
21313             <td class="entry_description">
21314               <p>A matrix that transforms color values from CIE XYZ color space to
21315 reference sensor color space.<wbr/></p>
21316             </td>
21317
21318             <td class="entry_units">
21319             </td>
21320
21321             <td class="entry_range">
21322             </td>
21323
21324             <td class="entry_hal_version">
21325               <p>3.<wbr/>2</p>
21326             </td>
21327
21328             <td class="entry_tags">
21329               <ul class="entry_tags">
21330                   <li><a href="#tag_RAW">RAW</a></li>
21331               </ul>
21332             </td>
21333
21334           </tr>
21335           <tr class="entries_header">
21336             <th class="th_details" colspan="6">Details</th>
21337           </tr>
21338           <tr class="entry_cont">
21339             <td class="entry_details" colspan="6">
21340               <p>This matrix is used to convert from the standard CIE XYZ color
21341 space to the reference sensor colorspace,<wbr/> and is used when processing
21342 raw buffer data.<wbr/></p>
21343 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21344 contains a color transform matrix that maps colors from the CIE
21345 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21346 "golden module" colorspace) under the first reference illuminant
21347 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21348 <p>The white points chosen in both the reference sensor color space
21349 and the CIE XYZ colorspace when calculating this transform will
21350 match the standard white point for the first reference illuminant
21351 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21352             </td>
21353           </tr>
21354
21355
21356           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21357            <!-- end of entry -->
21358         
21359                 
21360           <tr class="entry" id="static_android.sensor.colorTransform2">
21361             <td class="entry_name
21362              " rowspan="3">
21363               android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
21364             </td>
21365             <td class="entry_type">
21366                 <span class="entry_type_name">rational</span>
21367                 <span class="entry_type_container">x</span>
21368
21369                 <span class="entry_type_array">
21370                   3 x 3
21371                 </span>
21372               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21373
21374
21375
21376
21377                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21378
21379
21380             </td> <!-- entry_type -->
21381
21382             <td class="entry_description">
21383               <p>A matrix that transforms color values from CIE XYZ color space to
21384 reference sensor color space.<wbr/></p>
21385             </td>
21386
21387             <td class="entry_units">
21388             </td>
21389
21390             <td class="entry_range">
21391             </td>
21392
21393             <td class="entry_hal_version">
21394               <p>3.<wbr/>2</p>
21395             </td>
21396
21397             <td class="entry_tags">
21398               <ul class="entry_tags">
21399                   <li><a href="#tag_RAW">RAW</a></li>
21400               </ul>
21401             </td>
21402
21403           </tr>
21404           <tr class="entries_header">
21405             <th class="th_details" colspan="6">Details</th>
21406           </tr>
21407           <tr class="entry_cont">
21408             <td class="entry_details" colspan="6">
21409               <p>This matrix is used to convert from the standard CIE XYZ color
21410 space to the reference sensor colorspace,<wbr/> and is used when processing
21411 raw buffer data.<wbr/></p>
21412 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21413 contains a color transform matrix that maps colors from the CIE
21414 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21415 "golden module" colorspace) under the second reference illuminant
21416 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21417 <p>The white points chosen in both the reference sensor color space
21418 and the CIE XYZ colorspace when calculating this transform will
21419 match the standard white point for the second reference illuminant
21420 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21421 <p>This matrix will only be present if the second reference
21422 illuminant is present.<wbr/></p>
21423             </td>
21424           </tr>
21425
21426
21427           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21428            <!-- end of entry -->
21429         
21430                 
21431           <tr class="entry" id="static_android.sensor.forwardMatrix1">
21432             <td class="entry_name
21433              " rowspan="3">
21434               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
21435             </td>
21436             <td class="entry_type">
21437                 <span class="entry_type_name">rational</span>
21438                 <span class="entry_type_container">x</span>
21439
21440                 <span class="entry_type_array">
21441                   3 x 3
21442                 </span>
21443               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21444
21445
21446
21447
21448                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21449
21450
21451             </td> <!-- entry_type -->
21452
21453             <td class="entry_description">
21454               <p>A matrix that transforms white balanced camera colors from the reference
21455 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21456             </td>
21457
21458             <td class="entry_units">
21459             </td>
21460
21461             <td class="entry_range">
21462             </td>
21463
21464             <td class="entry_hal_version">
21465               <p>3.<wbr/>2</p>
21466             </td>
21467
21468             <td class="entry_tags">
21469               <ul class="entry_tags">
21470                   <li><a href="#tag_RAW">RAW</a></li>
21471               </ul>
21472             </td>
21473
21474           </tr>
21475           <tr class="entries_header">
21476             <th class="th_details" colspan="6">Details</th>
21477           </tr>
21478           <tr class="entry_cont">
21479             <td class="entry_details" colspan="6">
21480               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21481 is used when processing raw buffer data.<wbr/></p>
21482 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21483 a color transform matrix that maps white balanced colors from the
21484 reference sensor color space to the CIE XYZ color space with a D50 white
21485 point.<wbr/></p>
21486 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21487 this matrix is chosen so that the standard white point for this reference
21488 illuminant in the reference sensor colorspace is mapped to D50 in the
21489 CIE XYZ colorspace.<wbr/></p>
21490             </td>
21491           </tr>
21492
21493
21494           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21495            <!-- end of entry -->
21496         
21497                 
21498           <tr class="entry" id="static_android.sensor.forwardMatrix2">
21499             <td class="entry_name
21500              " rowspan="3">
21501               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
21502             </td>
21503             <td class="entry_type">
21504                 <span class="entry_type_name">rational</span>
21505                 <span class="entry_type_container">x</span>
21506
21507                 <span class="entry_type_array">
21508                   3 x 3
21509                 </span>
21510               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21511
21512
21513
21514
21515                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21516
21517
21518             </td> <!-- entry_type -->
21519
21520             <td class="entry_description">
21521               <p>A matrix that transforms white balanced camera colors from the reference
21522 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21523             </td>
21524
21525             <td class="entry_units">
21526             </td>
21527
21528             <td class="entry_range">
21529             </td>
21530
21531             <td class="entry_hal_version">
21532               <p>3.<wbr/>2</p>
21533             </td>
21534
21535             <td class="entry_tags">
21536               <ul class="entry_tags">
21537                   <li><a href="#tag_RAW">RAW</a></li>
21538               </ul>
21539             </td>
21540
21541           </tr>
21542           <tr class="entries_header">
21543             <th class="th_details" colspan="6">Details</th>
21544           </tr>
21545           <tr class="entry_cont">
21546             <td class="entry_details" colspan="6">
21547               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21548 is used when processing raw buffer data.<wbr/></p>
21549 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21550 a color transform matrix that maps white balanced colors from the
21551 reference sensor color space to the CIE XYZ color space with a D50 white
21552 point.<wbr/></p>
21553 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
21554 this matrix is chosen so that the standard white point for this reference
21555 illuminant in the reference sensor colorspace is mapped to D50 in the
21556 CIE XYZ colorspace.<wbr/></p>
21557 <p>This matrix will only be present if the second reference
21558 illuminant is present.<wbr/></p>
21559             </td>
21560           </tr>
21561
21562
21563           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21564            <!-- end of entry -->
21565         
21566                 
21567           <tr class="entry" id="static_android.sensor.baseGainFactor">
21568             <td class="entry_name
21569              " rowspan="1">
21570               android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
21571             </td>
21572             <td class="entry_type">
21573                 <span class="entry_type_name">rational</span>
21574
21575               <span class="entry_type_visibility"> [system]</span>
21576
21577
21578
21579
21580
21581
21582             </td> <!-- entry_type -->
21583
21584             <td class="entry_description">
21585               <p>Gain factor from electrons to raw units when
21586 ISO=100</p>
21587             </td>
21588
21589             <td class="entry_units">
21590             </td>
21591
21592             <td class="entry_range">
21593             </td>
21594
21595             <td class="entry_hal_version">
21596               <p>3.<wbr/>2</p>
21597             </td>
21598
21599             <td class="entry_tags">
21600               <ul class="entry_tags">
21601                   <li><a href="#tag_FUTURE">FUTURE</a></li>
21602               </ul>
21603             </td>
21604
21605           </tr>
21606
21607
21608           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21609            <!-- end of entry -->
21610         
21611                 
21612           <tr class="entry" id="static_android.sensor.blackLevelPattern">
21613             <td class="entry_name
21614              " rowspan="5">
21615               android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
21616             </td>
21617             <td class="entry_type">
21618                 <span class="entry_type_name">int32</span>
21619                 <span class="entry_type_container">x</span>
21620
21621                 <span class="entry_type_array">
21622                   4
21623                 </span>
21624               <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
21625
21626
21627
21628
21629                 <div class="entry_type_notes">2x2 raw count block</div>
21630
21631
21632             </td> <!-- entry_type -->
21633
21634             <td class="entry_description">
21635               <p>A fixed black level offset for each of the color filter arrangement
21636 (CFA) mosaic channels.<wbr/></p>
21637             </td>
21638
21639             <td class="entry_units">
21640             </td>
21641
21642             <td class="entry_range">
21643               <p>&gt;= 0 for each.<wbr/></p>
21644             </td>
21645
21646             <td class="entry_hal_version">
21647               <p>3.<wbr/>2</p>
21648             </td>
21649
21650             <td class="entry_tags">
21651               <ul class="entry_tags">
21652                   <li><a href="#tag_RAW">RAW</a></li>
21653               </ul>
21654             </td>
21655
21656           </tr>
21657           <tr class="entries_header">
21658             <th class="th_details" colspan="6">Details</th>
21659           </tr>
21660           <tr class="entry_cont">
21661             <td class="entry_details" colspan="6">
21662               <p>This key specifies the zero light value for each of the CFA mosaic
21663 channels in the camera sensor.<wbr/>  The maximal value output by the
21664 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>
21665 <p>The values are given in the same order as channels listed for the CFA
21666 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
21667 nth value given corresponds to the black level offset for the nth
21668 color channel listed in the CFA.<wbr/></p>
21669 <p>The black level values of captured images may vary for different
21670 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
21671 represents a coarse approximation for such case.<wbr/> It is recommended to
21672 use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
21673 <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
21674 supported by the camera device,<wbr/> which provides more accurate black
21675 level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
21676 pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
21677 level values for each frame.<wbr/></p>
21678             </td>
21679           </tr>
21680
21681           <tr class="entries_header">
21682             <th class="th_details" colspan="6">HAL Implementation Details</th>
21683           </tr>
21684           <tr class="entry_cont">
21685             <td class="entry_details" colspan="6">
21686               <p>The values are given in row-column scan order,<wbr/> with the first value
21687 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21688             </td>
21689           </tr>
21690
21691           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21692            <!-- end of entry -->
21693         
21694                 
21695           <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
21696             <td class="entry_name
21697              " rowspan="3">
21698               android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
21699             </td>
21700             <td class="entry_type">
21701                 <span class="entry_type_name">int32</span>
21702
21703               <span class="entry_type_visibility"> [public]</span>
21704
21705
21706               <span class="entry_type_hwlevel">[full] </span>
21707
21708
21709
21710
21711             </td> <!-- entry_type -->
21712
21713             <td class="entry_description">
21714               <p>Maximum sensitivity that is implemented
21715 purely through analog gain.<wbr/></p>
21716             </td>
21717
21718             <td class="entry_units">
21719             </td>
21720
21721             <td class="entry_range">
21722             </td>
21723
21724             <td class="entry_hal_version">
21725               <p>3.<wbr/>2</p>
21726             </td>
21727
21728             <td class="entry_tags">
21729               <ul class="entry_tags">
21730                   <li><a href="#tag_V1">V1</a></li>
21731                   <li><a href="#tag_FULL">FULL</a></li>
21732               </ul>
21733             </td>
21734
21735           </tr>
21736           <tr class="entries_header">
21737             <th class="th_details" colspan="6">Details</th>
21738           </tr>
21739           <tr class="entry_cont">
21740             <td class="entry_details" colspan="6">
21741               <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
21742 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
21743 values above this,<wbr/> the gain applied can be a mix of analog and
21744 digital.<wbr/></p>
21745             </td>
21746           </tr>
21747
21748
21749           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21750            <!-- end of entry -->
21751         
21752                 
21753           <tr class="entry" id="static_android.sensor.orientation">
21754             <td class="entry_name
21755              " rowspan="3">
21756               android.<wbr/>sensor.<wbr/>orientation
21757             </td>
21758             <td class="entry_type">
21759                 <span class="entry_type_name">int32</span>
21760
21761               <span class="entry_type_visibility"> [public]</span>
21762
21763
21764               <span class="entry_type_hwlevel">[legacy] </span>
21765
21766
21767
21768
21769             </td> <!-- entry_type -->
21770
21771             <td class="entry_description">
21772               <p>Clockwise angle through which the output image needs to be rotated to be
21773 upright on the device screen in its native orientation.<wbr/></p>
21774             </td>
21775
21776             <td class="entry_units">
21777               Degrees of clockwise rotation; always a multiple of
21778           90
21779             </td>
21780
21781             <td class="entry_range">
21782               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</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               <ul class="entry_tags">
21791                   <li><a href="#tag_BC">BC</a></li>
21792               </ul>
21793             </td>
21794
21795           </tr>
21796           <tr class="entries_header">
21797             <th class="th_details" colspan="6">Details</th>
21798           </tr>
21799           <tr class="entry_cont">
21800             <td class="entry_details" colspan="6">
21801               <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
21802 the sensor's coordinate system.<wbr/></p>
21803             </td>
21804           </tr>
21805
21806
21807           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21808            <!-- end of entry -->
21809         
21810                 
21811           <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
21812             <td class="entry_name
21813              " rowspan="3">
21814               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
21815             </td>
21816             <td class="entry_type">
21817                 <span class="entry_type_name">int32</span>
21818                 <span class="entry_type_container">x</span>
21819
21820                 <span class="entry_type_array">
21821                   3
21822                 </span>
21823               <span class="entry_type_visibility"> [system]</span>
21824
21825
21826
21827
21828                 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
21829
21830
21831             </td> <!-- entry_type -->
21832
21833             <td class="entry_description">
21834               <p>The number of input samples for each dimension of
21835 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
21836             </td>
21837
21838             <td class="entry_units">
21839             </td>
21840
21841             <td class="entry_range">
21842               <p>Hue &gt;= 1,<wbr/>
21843 Saturation &gt;= 2,<wbr/>
21844 Value &gt;= 1</p>
21845             </td>
21846
21847             <td class="entry_hal_version">
21848               <p>3.<wbr/>2</p>
21849             </td>
21850
21851             <td class="entry_tags">
21852               <ul class="entry_tags">
21853                   <li><a href="#tag_RAW">RAW</a></li>
21854               </ul>
21855             </td>
21856
21857           </tr>
21858           <tr class="entries_header">
21859             <th class="th_details" colspan="6">Details</th>
21860           </tr>
21861           <tr class="entry_cont">
21862             <td class="entry_details" colspan="6">
21863               <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
21864 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
21865 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
21866 element.<wbr/></p>
21867             </td>
21868           </tr>
21869
21870
21871           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21872            <!-- end of entry -->
21873         
21874                 
21875           <tr class="entry" id="static_android.sensor.availableTestPatternModes">
21876             <td class="entry_name
21877              " rowspan="5">
21878               android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
21879             </td>
21880             <td class="entry_type">
21881                 <span class="entry_type_name">int32</span>
21882                 <span class="entry_type_container">x</span>
21883
21884                 <span class="entry_type_array">
21885                   n
21886                 </span>
21887               <span class="entry_type_visibility"> [public]</span>
21888
21889
21890
21891
21892                 <div class="entry_type_notes">list of enums</div>
21893
21894
21895             </td> <!-- entry_type -->
21896
21897             <td class="entry_description">
21898               <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
21899 supported by this camera device.<wbr/></p>
21900             </td>
21901
21902             <td class="entry_units">
21903             </td>
21904
21905             <td class="entry_range">
21906               <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
21907             </td>
21908
21909             <td class="entry_hal_version">
21910               <p>3.<wbr/>2</p>
21911             </td>
21912
21913             <td class="entry_tags">
21914             </td>
21915
21916           </tr>
21917           <tr class="entries_header">
21918             <th class="th_details" colspan="6">Details</th>
21919           </tr>
21920           <tr class="entry_cont">
21921             <td class="entry_details" colspan="6">
21922               <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
21923             </td>
21924           </tr>
21925
21926           <tr class="entries_header">
21927             <th class="th_details" colspan="6">HAL Implementation Details</th>
21928           </tr>
21929           <tr class="entry_cont">
21930             <td class="entry_details" colspan="6">
21931               <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
21932             </td>
21933           </tr>
21934
21935           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21936            <!-- end of entry -->
21937         
21938                 
21939           <tr class="entry" id="static_android.sensor.opticalBlackRegions">
21940             <td class="entry_name
21941              " rowspan="5">
21942               android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
21943             </td>
21944             <td class="entry_type">
21945                 <span class="entry_type_name">int32</span>
21946                 <span class="entry_type_container">x</span>
21947
21948                 <span class="entry_type_array">
21949                   4 x num_regions
21950                 </span>
21951               <span class="entry_type_visibility"> [public as rectangle]</span>
21952
21953
21954
21955
21956
21957
21958             </td> <!-- entry_type -->
21959
21960             <td class="entry_description">
21961               <p>List of disjoint rectangles indicating the sensor
21962 optically shielded black pixel regions.<wbr/></p>
21963             </td>
21964
21965             <td class="entry_units">
21966             </td>
21967
21968             <td class="entry_range">
21969             </td>
21970
21971             <td class="entry_hal_version">
21972               <p>3.<wbr/>2</p>
21973             </td>
21974
21975             <td class="entry_tags">
21976             </td>
21977
21978           </tr>
21979           <tr class="entries_header">
21980             <th class="th_details" colspan="6">Details</th>
21981           </tr>
21982           <tr class="entry_cont">
21983             <td class="entry_details" colspan="6">
21984               <p>In most camera sensors,<wbr/> the active array is surrounded by some
21985 optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
21986 provides a reliable black reference for black level compensation
21987 in active array region.<wbr/></p>
21988 <p>This key provides a list of disjoint rectangles specifying the
21989 regions of optically shielded (with metal shield) black pixel
21990 regions if the camera device is capable of reading out these black
21991 pixels in the output raw images.<wbr/> In comparison to the fixed black
21992 level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
21993 may provide a more accurate way for the application to calculate
21994 black level of each captured raw images.<wbr/></p>
21995 <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
21996 <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
21997             </td>
21998           </tr>
21999
22000           <tr class="entries_header">
22001             <th class="th_details" colspan="6">HAL Implementation Details</th>
22002           </tr>
22003           <tr class="entry_cont">
22004             <td class="entry_details" colspan="6">
22005               <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
22006 must be &gt;= (0,<wbr/>0) and &lt;=
22007 <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
22008 &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
22009 outside the region reported by
22010 <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>
22011 <p>The HAL must report minimal number of disjoint regions for the
22012 optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
22013 be covered by one rectangle,<wbr/> the HAL must not split this region into
22014 multiple rectangles.<wbr/></p>
22015             </td>
22016           </tr>
22017
22018           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22019            <!-- end of entry -->
22020         
22021                 
22022           <tr class="entry" id="static_android.sensor.opaqueRawSize">
22023             <td class="entry_name
22024              " rowspan="5">
22025               android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
22026             </td>
22027             <td class="entry_type">
22028                 <span class="entry_type_name">int32</span>
22029                 <span class="entry_type_container">x</span>
22030
22031                 <span class="entry_type_array">
22032                   n x 3
22033                 </span>
22034               <span class="entry_type_visibility"> [system]</span>
22035
22036
22037
22038
22039
22040
22041             </td> <!-- entry_type -->
22042
22043             <td class="entry_description">
22044               <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
22045             </td>
22046
22047             <td class="entry_units">
22048             </td>
22049
22050             <td class="entry_range">
22051               <p>Must be large enough to fit the opaque RAW of corresponding size produced by
22052 the camera</p>
22053             </td>
22054
22055             <td class="entry_hal_version">
22056               <p>3.<wbr/>2</p>
22057             </td>
22058
22059             <td class="entry_tags">
22060             </td>
22061
22062           </tr>
22063           <tr class="entries_header">
22064             <th class="th_details" colspan="6">Details</th>
22065           </tr>
22066           <tr class="entry_cont">
22067             <td class="entry_details" colspan="6">
22068               <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
22069 This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
22070 All RAW_<wbr/>OPAQUE output stream configuration listed in
22071 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
22072 this key.<wbr/></p>
22073             </td>
22074           </tr>
22075
22076           <tr class="entries_header">
22077             <th class="th_details" colspan="6">HAL Implementation Details</th>
22078           </tr>
22079           <tr class="entry_cont">
22080             <td class="entry_details" colspan="6">
22081               <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
22082 <p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
22083 key.<wbr/>  For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
22084 framework will derive this key by assuming each pixel takes two bytes and no padding bytes
22085 between rows.<wbr/></p>
22086             </td>
22087           </tr>
22088
22089           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22090            <!-- end of entry -->
22091         
22092         
22093
22094       <!-- end of kind -->
22095       </tbody>
22096       <tr><td colspan="7" class="kind">dynamic</td></tr>
22097
22098       <thead class="entries_header">
22099         <tr>
22100           <th class="th_name">Property Name</th>
22101           <th class="th_type">Type</th>
22102           <th class="th_description">Description</th>
22103           <th class="th_units">Units</th>
22104           <th class="th_range">Range</th>
22105           <th class="th_hal_version">Initial HIDL HAL version</th>
22106           <th class="th_tags">Tags</th>
22107         </tr>
22108       </thead>
22109
22110       <tbody>
22111
22112         
22113
22114         
22115
22116         
22117
22118         
22119
22120                 
22121           <tr class="entry" id="dynamic_android.sensor.exposureTime">
22122             <td class="entry_name
22123              " rowspan="3">
22124               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
22125             </td>
22126             <td class="entry_type">
22127                 <span class="entry_type_name">int64</span>
22128
22129               <span class="entry_type_visibility"> [public]</span>
22130
22131
22132               <span class="entry_type_hwlevel">[full] </span>
22133
22134
22135
22136
22137             </td> <!-- entry_type -->
22138
22139             <td class="entry_description">
22140               <p>Duration each pixel is exposed to
22141 light.<wbr/></p>
22142             </td>
22143
22144             <td class="entry_units">
22145               Nanoseconds
22146             </td>
22147
22148             <td class="entry_range">
22149               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
22150             </td>
22151
22152             <td class="entry_hal_version">
22153               <p>3.<wbr/>2</p>
22154             </td>
22155
22156             <td class="entry_tags">
22157               <ul class="entry_tags">
22158                   <li><a href="#tag_V1">V1</a></li>
22159               </ul>
22160             </td>
22161
22162           </tr>
22163           <tr class="entries_header">
22164             <th class="th_details" colspan="6">Details</th>
22165           </tr>
22166           <tr class="entry_cont">
22167             <td class="entry_details" colspan="6">
22168               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
22169 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
22170 The final exposure time used will be available in the output capture result.<wbr/></p>
22171 <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
22172 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22173             </td>
22174           </tr>
22175
22176
22177           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22178            <!-- end of entry -->
22179         
22180                 
22181           <tr class="entry" id="dynamic_android.sensor.frameDuration">
22182             <td class="entry_name
22183              " rowspan="5">
22184               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
22185             </td>
22186             <td class="entry_type">
22187                 <span class="entry_type_name">int64</span>
22188
22189               <span class="entry_type_visibility"> [public]</span>
22190
22191
22192               <span class="entry_type_hwlevel">[full] </span>
22193
22194
22195
22196
22197             </td> <!-- entry_type -->
22198
22199             <td class="entry_description">
22200               <p>Duration from start of frame exposure to
22201 start of next frame exposure.<wbr/></p>
22202             </td>
22203
22204             <td class="entry_units">
22205               Nanoseconds
22206             </td>
22207
22208             <td class="entry_range">
22209               <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/>
22210 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
22211             </td>
22212
22213             <td class="entry_hal_version">
22214               <p>3.<wbr/>2</p>
22215             </td>
22216
22217             <td class="entry_tags">
22218               <ul class="entry_tags">
22219                   <li><a href="#tag_V1">V1</a></li>
22220               </ul>
22221             </td>
22222
22223           </tr>
22224           <tr class="entries_header">
22225             <th class="th_details" colspan="6">Details</th>
22226           </tr>
22227           <tr class="entry_cont">
22228             <td class="entry_details" colspan="6">
22229               <p>The maximum frame rate that can be supported by a camera subsystem is
22230 a function of many factors:</p>
22231 <ul>
22232 <li>Requested resolutions of output image streams</li>
22233 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
22234 <li>The bandwidth of the imager interface</li>
22235 <li>The bandwidth of the various ISP processing blocks</li>
22236 </ul>
22237 <p>Since these factors can vary greatly between different ISPs and
22238 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
22239 restrictions with as simple a model as possible.<wbr/></p>
22240 <p>The model presented has the following characteristics:</p>
22241 <ul>
22242 <li>The image sensor is always configured to output the smallest
22243 resolution possible given the application's requested output stream
22244 sizes.<wbr/>  The smallest resolution is defined as being at least as large
22245 as the largest requested output stream size; the camera pipeline must
22246 never digitally upsample sensor data when the crop region covers the
22247 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
22248 resolutions are configured,<wbr/> the sensor can provide a higher frame
22249 rate.<wbr/></li>
22250 <li>Since any request may use any or all the currently configured
22251 output streams,<wbr/> the sensor and ISP must be configured to support
22252 scaling a single capture to all the streams at the same time.<wbr/>  This
22253 means the camera pipeline must be ready to produce the largest
22254 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
22255 frame rate of a given configured stream set is governed only by the
22256 largest requested stream resolution.<wbr/></li>
22257 <li>Using more than one output stream in a request does not affect the
22258 frame duration.<wbr/></li>
22259 <li>Certain format-streams may need to do additional background processing
22260 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
22261 can run concurrently to the rest of the camera pipeline,<wbr/> but
22262 cannot process more than 1 capture at a time.<wbr/></li>
22263 </ul>
22264 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
22265 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
22266 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
22267 possible for a given stream configuration.<wbr/></p>
22268 <p>Specifically,<wbr/> the application can use the following rules to
22269 determine the minimum frame duration it can request from the camera
22270 device:</p>
22271 <ol>
22272 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
22273 <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>
22274 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
22275 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
22276 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>
22277 </ol>
22278 <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>
22279 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
22280 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
22281 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
22282 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
22283 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
22284 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
22285 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
22286 <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>
22287 <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
22288 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22289             </td>
22290           </tr>
22291
22292           <tr class="entries_header">
22293             <th class="th_details" colspan="6">HAL Implementation Details</th>
22294           </tr>
22295           <tr class="entry_cont">
22296             <td class="entry_details" colspan="6">
22297               <p>For more details about stalling,<wbr/> see
22298 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
22299             </td>
22300           </tr>
22301
22302           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22303            <!-- end of entry -->
22304         
22305                 
22306           <tr class="entry" id="dynamic_android.sensor.sensitivity">
22307             <td class="entry_name
22308              " rowspan="5">
22309               android.<wbr/>sensor.<wbr/>sensitivity
22310             </td>
22311             <td class="entry_type">
22312                 <span class="entry_type_name">int32</span>
22313
22314               <span class="entry_type_visibility"> [public]</span>
22315
22316
22317               <span class="entry_type_hwlevel">[full] </span>
22318
22319
22320
22321
22322             </td> <!-- entry_type -->
22323
22324             <td class="entry_description">
22325               <p>The amount of gain applied to sensor data
22326 before processing.<wbr/></p>
22327             </td>
22328
22329             <td class="entry_units">
22330               ISO arithmetic units
22331             </td>
22332
22333             <td class="entry_range">
22334               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
22335             </td>
22336
22337             <td class="entry_hal_version">
22338               <p>3.<wbr/>2</p>
22339             </td>
22340
22341             <td class="entry_tags">
22342               <ul class="entry_tags">
22343                   <li><a href="#tag_V1">V1</a></li>
22344               </ul>
22345             </td>
22346
22347           </tr>
22348           <tr class="entries_header">
22349             <th class="th_details" colspan="6">Details</th>
22350           </tr>
22351           <tr class="entry_cont">
22352             <td class="entry_details" colspan="6">
22353               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
22354 as defined in ISO 12232:2006.<wbr/></p>
22355 <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
22356 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
22357 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
22358 <p>If the camera device cannot apply the exact sensitivity
22359 requested,<wbr/> it will reduce the gain to the nearest supported
22360 value.<wbr/> The final sensitivity used will be available in the
22361 output capture result.<wbr/></p>
22362 <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
22363 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22364             </td>
22365           </tr>
22366
22367           <tr class="entries_header">
22368             <th class="th_details" colspan="6">HAL Implementation Details</th>
22369           </tr>
22370           <tr class="entry_cont">
22371             <td class="entry_details" colspan="6">
22372               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
22373             </td>
22374           </tr>
22375
22376           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22377            <!-- end of entry -->
22378         
22379                 
22380           <tr class="entry" id="dynamic_android.sensor.timestamp">
22381             <td class="entry_name
22382              " rowspan="5">
22383               android.<wbr/>sensor.<wbr/>timestamp
22384             </td>
22385             <td class="entry_type">
22386                 <span class="entry_type_name">int64</span>
22387
22388               <span class="entry_type_visibility"> [public]</span>
22389
22390
22391               <span class="entry_type_hwlevel">[legacy] </span>
22392
22393
22394
22395
22396             </td> <!-- entry_type -->
22397
22398             <td class="entry_description">
22399               <p>Time at start of exposure of first
22400 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
22401             </td>
22402
22403             <td class="entry_units">
22404               Nanoseconds
22405             </td>
22406
22407             <td class="entry_range">
22408               <p>&gt; 0</p>
22409             </td>
22410
22411             <td class="entry_hal_version">
22412               <p>3.<wbr/>2</p>
22413             </td>
22414
22415             <td class="entry_tags">
22416               <ul class="entry_tags">
22417                   <li><a href="#tag_BC">BC</a></li>
22418               </ul>
22419             </td>
22420
22421           </tr>
22422           <tr class="entries_header">
22423             <th class="th_details" colspan="6">Details</th>
22424           </tr>
22425           <tr class="entry_cont">
22426             <td class="entry_details" colspan="6">
22427               <p>The timestamps are also included in all image
22428 buffers produced for the same capture,<wbr/> and will be identical
22429 on all the outputs.<wbr/></p>
22430 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
22431 the timestamps measure time since an unspecified starting point,<wbr/>
22432 and are monotonically increasing.<wbr/> They can be compared with the
22433 timestamps for other captures from the same camera device,<wbr/> but are
22434 not guaranteed to be comparable to any other time source.<wbr/></p>
22435 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
22436 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
22437 be compared to other timestamps from other subsystems that
22438 are using that base.<wbr/></p>
22439 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
22440 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
22441 timestamp</a> in the TotalCaptureResult that was used to create the
22442 reprocess capture request.<wbr/></p>
22443             </td>
22444           </tr>
22445
22446           <tr class="entries_header">
22447             <th class="th_details" colspan="6">HAL Implementation Details</th>
22448           </tr>
22449           <tr class="entry_cont">
22450             <td class="entry_details" colspan="6">
22451               <p>All timestamps must be in reference to the kernel's
22452 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
22453 time spent asleep.<wbr/> This allows for synchronization with
22454 sensors that continue to operate while the system is
22455 otherwise asleep.<wbr/></p>
22456 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
22457 The timestamp must be synchronized with the timestamps from other
22458 sensor subsystems that are using the same timebase.<wbr/></p>
22459 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
22460 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
22461 capture request.<wbr/></p>
22462             </td>
22463           </tr>
22464
22465           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22466            <!-- end of entry -->
22467         
22468                 
22469           <tr class="entry" id="dynamic_android.sensor.temperature">
22470             <td class="entry_name
22471              " rowspan="1">
22472               android.<wbr/>sensor.<wbr/>temperature
22473             </td>
22474             <td class="entry_type">
22475                 <span class="entry_type_name">float</span>
22476
22477               <span class="entry_type_visibility"> [system]</span>
22478
22479
22480
22481
22482
22483
22484             </td> <!-- entry_type -->
22485
22486             <td class="entry_description">
22487               <p>The temperature of the sensor,<wbr/> sampled at the time
22488 exposure began for this frame.<wbr/></p>
22489 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
22490 somewhere close to it.<wbr/></p>
22491             </td>
22492
22493             <td class="entry_units">
22494               Celsius
22495             </td>
22496
22497             <td class="entry_range">
22498               <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
22499             </td>
22500
22501             <td class="entry_hal_version">
22502               <p>3.<wbr/>2</p>
22503             </td>
22504
22505             <td class="entry_tags">
22506               <ul class="entry_tags">
22507                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22508               </ul>
22509             </td>
22510
22511           </tr>
22512
22513
22514           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22515            <!-- end of entry -->
22516         
22517                 
22518           <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
22519             <td class="entry_name
22520              " rowspan="3">
22521               android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
22522             </td>
22523             <td class="entry_type">
22524                 <span class="entry_type_name">rational</span>
22525                 <span class="entry_type_container">x</span>
22526
22527                 <span class="entry_type_array">
22528                   3
22529                 </span>
22530               <span class="entry_type_visibility"> [public]</span>
22531
22532
22533
22534
22535
22536
22537             </td> <!-- entry_type -->
22538
22539             <td class="entry_description">
22540               <p>The estimated camera neutral color in the native sensor colorspace at
22541 the time of capture.<wbr/></p>
22542             </td>
22543
22544             <td class="entry_units">
22545             </td>
22546
22547             <td class="entry_range">
22548             </td>
22549
22550             <td class="entry_hal_version">
22551               <p>3.<wbr/>2</p>
22552             </td>
22553
22554             <td class="entry_tags">
22555               <ul class="entry_tags">
22556                   <li><a href="#tag_RAW">RAW</a></li>
22557               </ul>
22558             </td>
22559
22560           </tr>
22561           <tr class="entries_header">
22562             <th class="th_details" colspan="6">Details</th>
22563           </tr>
22564           <tr class="entry_cont">
22565             <td class="entry_details" colspan="6">
22566               <p>This value gives the neutral color point encoded as an RGB value in the
22567 native sensor color space.<wbr/>  The neutral color point indicates the
22568 currently estimated white point of the scene illumination.<wbr/>  It can be
22569 used to interpolate between the provided color transforms when
22570 processing raw sensor data.<wbr/></p>
22571 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
22572             </td>
22573           </tr>
22574
22575
22576           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22577            <!-- end of entry -->
22578         
22579                 
22580           <tr class="entry" id="dynamic_android.sensor.noiseProfile">
22581             <td class="entry_name
22582              " rowspan="5">
22583               android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
22584             </td>
22585             <td class="entry_type">
22586                 <span class="entry_type_name">double</span>
22587                 <span class="entry_type_container">x</span>
22588
22589                 <span class="entry_type_array">
22590                   2 x CFA Channels
22591                 </span>
22592               <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
22593
22594
22595
22596
22597                 <div class="entry_type_notes">Pairs of noise model coefficients</div>
22598
22599
22600             </td> <!-- entry_type -->
22601
22602             <td class="entry_description">
22603               <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
22604             </td>
22605
22606             <td class="entry_units">
22607             </td>
22608
22609             <td class="entry_range">
22610             </td>
22611
22612             <td class="entry_hal_version">
22613               <p>3.<wbr/>2</p>
22614             </td>
22615
22616             <td class="entry_tags">
22617               <ul class="entry_tags">
22618                   <li><a href="#tag_RAW">RAW</a></li>
22619               </ul>
22620             </td>
22621
22622           </tr>
22623           <tr class="entries_header">
22624             <th class="th_details" colspan="6">Details</th>
22625           </tr>
22626           <tr class="entry_cont">
22627             <td class="entry_details" colspan="6">
22628               <p>This key contains two noise model coefficients for each CFA channel
22629 corresponding to the sensor amplification (S) and sensor readout
22630 noise (O).<wbr/>  These are given as pairs of coefficients for each channel
22631 in the same order as channels listed for the CFA layout key
22632 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
22633 represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
22634 the first member of the Pair at index n is the S coefficient and the
22635 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
22636 <p>These coefficients are used in a two parameter noise model to describe
22637 the amount of noise present in the image for each CFA channel.<wbr/>  The
22638 noise model used here is:</p>
22639 <p>N(x) = sqrt(Sx + O)</p>
22640 <p>Where x represents the recorded signal of a CFA channel normalized to
22641 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
22642 that channel.<wbr/></p>
22643 <p>A more detailed description of the noise model can be found in the
22644 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
22645             </td>
22646           </tr>
22647
22648           <tr class="entries_header">
22649             <th class="th_details" colspan="6">HAL Implementation Details</th>
22650           </tr>
22651           <tr class="entry_cont">
22652             <td class="entry_details" colspan="6">
22653               <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
22654 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
22655 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
22656 channel,<wbr/> etc.<wbr/></p>
22657             </td>
22658           </tr>
22659
22660           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22661            <!-- end of entry -->
22662         
22663                 
22664           <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
22665             <td class="entry_name
22666              " rowspan="3">
22667               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
22668             </td>
22669             <td class="entry_type">
22670                 <span class="entry_type_name">float</span>
22671                 <span class="entry_type_container">x</span>
22672
22673                 <span class="entry_type_array">
22674                   hue_samples x saturation_samples x value_samples x 3
22675                 </span>
22676               <span class="entry_type_visibility"> [system]</span>
22677
22678
22679
22680
22681                 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
22682
22683
22684             </td> <!-- entry_type -->
22685
22686             <td class="entry_description">
22687               <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
22688 for each pixel.<wbr/></p>
22689             </td>
22690
22691             <td class="entry_units">
22692               
22693           The hue shift is given in degrees; saturation and value scale factors are
22694           unitless and are between 0 and 1 inclusive
22695           
22696             </td>
22697
22698             <td class="entry_range">
22699             </td>
22700
22701             <td class="entry_hal_version">
22702               <p>3.<wbr/>2</p>
22703             </td>
22704
22705             <td class="entry_tags">
22706               <ul class="entry_tags">
22707                   <li><a href="#tag_RAW">RAW</a></li>
22708               </ul>
22709             </td>
22710
22711           </tr>
22712           <tr class="entries_header">
22713             <th class="th_details" colspan="6">Details</th>
22714           </tr>
22715           <tr class="entry_cont">
22716             <td class="entry_details" colspan="6">
22717               <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
22718 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
22719 <p>Each entry of this map contains three floats corresponding to the
22720 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
22721 hue shift has the lowest index.<wbr/> The map entries are stored in the key
22722 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
22723 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
22724 inner loop.<wbr/> All zero input saturation entries are required to have a
22725 value scale factor of 1.<wbr/>0.<wbr/></p>
22726             </td>
22727           </tr>
22728
22729
22730           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22731            <!-- end of entry -->
22732         
22733                 
22734           <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
22735             <td class="entry_name
22736              " rowspan="3">
22737               android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
22738             </td>
22739             <td class="entry_type">
22740                 <span class="entry_type_name">float</span>
22741                 <span class="entry_type_container">x</span>
22742
22743                 <span class="entry_type_array">
22744                   samples x 2
22745                 </span>
22746               <span class="entry_type_visibility"> [system]</span>
22747
22748
22749
22750
22751                 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
22752
22753
22754             </td> <!-- entry_type -->
22755
22756             <td class="entry_description">
22757               <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
22758             </td>
22759
22760             <td class="entry_units">
22761             </td>
22762
22763             <td class="entry_range">
22764               <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
22765 <code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
22766 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
22767             </td>
22768
22769             <td class="entry_hal_version">
22770               <p>3.<wbr/>2</p>
22771             </td>
22772
22773             <td class="entry_tags">
22774               <ul class="entry_tags">
22775                   <li><a href="#tag_RAW">RAW</a></li>
22776               </ul>
22777             </td>
22778
22779           </tr>
22780           <tr class="entries_header">
22781             <th class="th_details" colspan="6">Details</th>
22782           </tr>
22783           <tr class="entry_cont">
22784             <td class="entry_details" colspan="6">
22785               <p>This key contains a default tone curve that can be applied while
22786 processing the image as a starting point for user adjustments.<wbr/>
22787 The curve is specified as a list of value pairs in linear gamma.<wbr/>
22788 The curve is interpolated using a cubic spline.<wbr/></p>
22789             </td>
22790           </tr>
22791
22792
22793           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22794            <!-- end of entry -->
22795         
22796                 
22797           <tr class="entry" id="dynamic_android.sensor.greenSplit">
22798             <td class="entry_name
22799              " rowspan="5">
22800               android.<wbr/>sensor.<wbr/>green<wbr/>Split
22801             </td>
22802             <td class="entry_type">
22803                 <span class="entry_type_name">float</span>
22804
22805               <span class="entry_type_visibility"> [public]</span>
22806
22807
22808
22809
22810
22811
22812             </td> <!-- entry_type -->
22813
22814             <td class="entry_description">
22815               <p>The worst-case divergence between Bayer green channels.<wbr/></p>
22816             </td>
22817
22818             <td class="entry_units">
22819             </td>
22820
22821             <td class="entry_range">
22822               <p>&gt;= 0</p>
22823             </td>
22824
22825             <td class="entry_hal_version">
22826               <p>3.<wbr/>2</p>
22827             </td>
22828
22829             <td class="entry_tags">
22830               <ul class="entry_tags">
22831                   <li><a href="#tag_RAW">RAW</a></li>
22832               </ul>
22833             </td>
22834
22835           </tr>
22836           <tr class="entries_header">
22837             <th class="th_details" colspan="6">Details</th>
22838           </tr>
22839           <tr class="entry_cont">
22840             <td class="entry_details" colspan="6">
22841               <p>This value is an estimate of the worst case split between the
22842 Bayer green channels in the red and blue rows in the sensor color
22843 filter array.<wbr/></p>
22844 <p>The green split is calculated as follows:</p>
22845 <ol>
22846 <li>A 5x5 pixel (or larger) window W within the active sensor array is
22847 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
22848 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
22849 chosen is implementation defined,<wbr/> and should be chosen to provide a
22850 green split estimate that is both representative of the entire image
22851 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
22852 <li>The arithmetic mean of the green channels from the red
22853 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
22854 <li>The arithmetic mean of the green channels from the blue
22855 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
22856 <li>The maximum ratio R of the two means is computed as follows:
22857 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
22858 </ol>
22859 <p>The ratio R is the green split divergence reported for this property,<wbr/>
22860 which represents how much the green channels differ in the mosaic
22861 pattern.<wbr/>  This value is typically used to determine the treatment of
22862 the green mosaic channels when demosaicing.<wbr/></p>
22863 <p>The green split value can be roughly interpreted as follows:</p>
22864 <ul>
22865 <li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
22866 <li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
22867 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
22868 <li>R &gt; 1.<wbr/>20 will require strong software correction to produce
22869 a usuable image (&gt;20% divergence).<wbr/></li>
22870 </ul>
22871             </td>
22872           </tr>
22873
22874           <tr class="entries_header">
22875             <th class="th_details" colspan="6">HAL Implementation Details</th>
22876           </tr>
22877           <tr class="entry_cont">
22878             <td class="entry_details" colspan="6">
22879               <p>The green split given may be a static value based on prior
22880 characterization of the camera sensor using the green split
22881 calculation method given here over a large,<wbr/> representative,<wbr/> sample
22882 set of images.<wbr/>  Other methods of calculation that produce equivalent
22883 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
22884             </td>
22885           </tr>
22886
22887           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22888            <!-- end of entry -->
22889         
22890                 
22891           <tr class="entry" id="dynamic_android.sensor.testPatternData">
22892             <td class="entry_name
22893              " rowspan="5">
22894               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
22895             </td>
22896             <td class="entry_type">
22897                 <span class="entry_type_name">int32</span>
22898                 <span class="entry_type_container">x</span>
22899
22900                 <span class="entry_type_array">
22901                   4
22902                 </span>
22903               <span class="entry_type_visibility"> [public]</span>
22904
22905
22906
22907
22908
22909
22910             </td> <!-- entry_type -->
22911
22912             <td class="entry_description">
22913               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
22914 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
22915             </td>
22916
22917             <td class="entry_units">
22918             </td>
22919
22920             <td class="entry_range">
22921             </td>
22922
22923             <td class="entry_hal_version">
22924               <p>3.<wbr/>2</p>
22925             </td>
22926
22927             <td class="entry_tags">
22928             </td>
22929
22930           </tr>
22931           <tr class="entries_header">
22932             <th class="th_details" colspan="6">Details</th>
22933           </tr>
22934           <tr class="entry_cont">
22935             <td class="entry_details" colspan="6">
22936               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
22937 The camera device then uses the most significant X bits
22938 that correspond to how many bits are in its Bayer raw sensor
22939 output.<wbr/></p>
22940 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
22941 10 most significant bits from each color channel.<wbr/></p>
22942             </td>
22943           </tr>
22944
22945           <tr class="entries_header">
22946             <th class="th_details" colspan="6">HAL Implementation Details</th>
22947           </tr>
22948           <tr class="entry_cont">
22949             <td class="entry_details" colspan="6">
22950               
22951             </td>
22952           </tr>
22953
22954           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22955            <!-- end of entry -->
22956         
22957                 
22958           <tr class="entry" id="dynamic_android.sensor.testPatternMode">
22959             <td class="entry_name
22960              " rowspan="5">
22961               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
22962             </td>
22963             <td class="entry_type">
22964                 <span class="entry_type_name entry_type_name_enum">int32</span>
22965
22966               <span class="entry_type_visibility"> [public]</span>
22967
22968
22969
22970
22971
22972                 <ul class="entry_type_enum">
22973                   <li>
22974                     <span class="entry_type_enum_name">OFF (v3.2)</span>
22975                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
22976 device returns captures from the image sensor.<wbr/></p>
22977 <p>This is the default if the key is not set.<wbr/></p></span>
22978                   </li>
22979                   <li>
22980                     <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
22981                     <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
22982 respective color channel provided in
22983 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
22984 <p>For example:</p>
22985 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
22986 </code></pre>
22987 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
22988 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
22989 </code></pre>
22990 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
22991 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
22992                   </li>
22993                   <li>
22994                     <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
22995                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
22996 <p>The vertical bars (left-to-right) are as follows:</p>
22997 <ul>
22998 <li>100% white</li>
22999 <li>yellow</li>
23000 <li>cyan</li>
23001 <li>green</li>
23002 <li>magenta</li>
23003 <li>red</li>
23004 <li>blue</li>
23005 <li>black</li>
23006 </ul>
23007 <p>In general the image would look like the following:</p>
23008 <pre><code>W Y C G M R B K
23009 W Y C G M R B K
23010 W Y C G M R B K
23011 W Y C G M R B K
23012 W Y C G M R B K
23013 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23014 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23015 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23016
23017 (B = Blue,<wbr/> K = Black)
23018 </code></pre>
23019 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
23020 When this is not possible,<wbr/> the bar size should be rounded
23021 down to the nearest integer and the pattern can repeat
23022 on the right side.<wbr/></p>
23023 <p>Each bar's height must always take up the full sensor
23024 pixel array height.<wbr/></p>
23025 <p>Each pixel in this test pattern must be set to either
23026 0% intensity or 100% intensity.<wbr/></p></span>
23027                   </li>
23028                   <li>
23029                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
23030                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
23031 each bar should start at its specified color at the top,<wbr/>
23032 and fade to gray at the bottom.<wbr/></p>
23033 <p>Furthermore each bar is further subdivided into a left and
23034 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
23035 and the right half should have a quantized gradient.<wbr/></p>
23036 <p>In particular,<wbr/> the right half's should consist of blocks of the
23037 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
23038 <p>The least significant bits in the quantized gradient should
23039 be copied from the most significant bits of the smooth gradient.<wbr/></p>
23040 <p>The height of each bar should always be a multiple of 128.<wbr/>
23041 When this is not the case,<wbr/> the pattern should repeat at the bottom
23042 of the image.<wbr/></p></span>
23043                   </li>
23044                   <li>
23045                     <span class="entry_type_enum_name">PN9 (v3.2)</span>
23046                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
23047 generated from a PN9 512-bit sequence (typically implemented
23048 in hardware with a linear feedback shift register).<wbr/></p>
23049 <p>The generator should be reset at the beginning of each frame,<wbr/>
23050 and thus each subsequent raw frame with this test pattern should
23051 be exactly the same as the last.<wbr/></p></span>
23052                   </li>
23053                   <li>
23054                     <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
23055                     <span class="entry_type_enum_value">256</span>
23056                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
23057 available only on this camera device are at least this numeric
23058 value.<wbr/></p>
23059 <p>All of the custom test patterns will be static
23060 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
23061                   </li>
23062                 </ul>
23063
23064             </td> <!-- entry_type -->
23065
23066             <td class="entry_description">
23067               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
23068 doing a real exposure from the camera.<wbr/></p>
23069             </td>
23070
23071             <td class="entry_units">
23072             </td>
23073
23074             <td class="entry_range">
23075               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
23076             </td>
23077
23078             <td class="entry_hal_version">
23079               <p>3.<wbr/>2</p>
23080             </td>
23081
23082             <td class="entry_tags">
23083             </td>
23084
23085           </tr>
23086           <tr class="entries_header">
23087             <th class="th_details" colspan="6">Details</th>
23088           </tr>
23089           <tr class="entry_cont">
23090             <td class="entry_details" colspan="6">
23091               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
23092 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
23093 work as normal.<wbr/></p>
23094 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
23095 occur (and that the test pattern remain unmodified,<wbr/> since the flash
23096 would not actually affect it).<wbr/></p>
23097 <p>Defaults to OFF.<wbr/></p>
23098             </td>
23099           </tr>
23100
23101           <tr class="entries_header">
23102             <th class="th_details" colspan="6">HAL Implementation Details</th>
23103           </tr>
23104           <tr class="entry_cont">
23105             <td class="entry_details" colspan="6">
23106               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
23107 <p>The HAL may choose to substitute test patterns from the sensor
23108 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
23109 indistinguishable to the ISP whether the data came from the
23110 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
23111             </td>
23112           </tr>
23113
23114           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23115            <!-- end of entry -->
23116         
23117                 
23118           <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
23119             <td class="entry_name
23120              " rowspan="5">
23121               android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
23122             </td>
23123             <td class="entry_type">
23124                 <span class="entry_type_name">int64</span>
23125
23126               <span class="entry_type_visibility"> [public]</span>
23127
23128
23129               <span class="entry_type_hwlevel">[limited] </span>
23130
23131
23132
23133
23134             </td> <!-- entry_type -->
23135
23136             <td class="entry_description">
23137               <p>Duration between the start of first row exposure
23138 and the start of last row exposure.<wbr/></p>
23139             </td>
23140
23141             <td class="entry_units">
23142               Nanoseconds
23143             </td>
23144
23145             <td class="entry_range">
23146               <p>&gt;= 0 and &lt;
23147 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
23148             </td>
23149
23150             <td class="entry_hal_version">
23151               <p>3.<wbr/>2</p>
23152             </td>
23153
23154             <td class="entry_tags">
23155               <ul class="entry_tags">
23156                   <li><a href="#tag_V1">V1</a></li>
23157               </ul>
23158             </td>
23159
23160           </tr>
23161           <tr class="entries_header">
23162             <th class="th_details" colspan="6">Details</th>
23163           </tr>
23164           <tr class="entry_cont">
23165             <td class="entry_details" colspan="6">
23166               <p>This is the exposure time skew between the first and last
23167 row exposure start times.<wbr/> The first row and the last row are
23168 the first and last rows inside of the
23169 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23170 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
23171 to the frame readout time.<wbr/></p>
23172             </td>
23173           </tr>
23174
23175           <tr class="entries_header">
23176             <th class="th_details" colspan="6">HAL Implementation Details</th>
23177           </tr>
23178           <tr class="entry_cont">
23179             <td class="entry_details" colspan="6">
23180               <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
23181 exposure at the same time.<wbr/></p>
23182             </td>
23183           </tr>
23184
23185           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23186            <!-- end of entry -->
23187         
23188                 
23189           <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
23190             <td class="entry_name
23191              " rowspan="5">
23192               android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
23193             </td>
23194             <td class="entry_type">
23195                 <span class="entry_type_name">float</span>
23196                 <span class="entry_type_container">x</span>
23197
23198                 <span class="entry_type_array">
23199                   4
23200                 </span>
23201               <span class="entry_type_visibility"> [public]</span>
23202
23203
23204
23205
23206                 <div class="entry_type_notes">2x2 raw count block</div>
23207
23208
23209             </td> <!-- entry_type -->
23210
23211             <td class="entry_description">
23212               <p>A per-frame dynamic black level offset for each of the color filter
23213 arrangement (CFA) mosaic channels.<wbr/></p>
23214             </td>
23215
23216             <td class="entry_units">
23217             </td>
23218
23219             <td class="entry_range">
23220               <p>&gt;= 0 for each.<wbr/></p>
23221             </td>
23222
23223             <td class="entry_hal_version">
23224               <p>3.<wbr/>2</p>
23225             </td>
23226
23227             <td class="entry_tags">
23228               <ul class="entry_tags">
23229                   <li><a href="#tag_RAW">RAW</a></li>
23230               </ul>
23231             </td>
23232
23233           </tr>
23234           <tr class="entries_header">
23235             <th class="th_details" colspan="6">Details</th>
23236           </tr>
23237           <tr class="entry_cont">
23238             <td class="entry_details" colspan="6">
23239               <p>Camera sensor black levels may vary dramatically for different
23240 capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
23241 level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
23242 inaccurate to represent the actual value on a per-frame basis.<wbr/> The
23243 camera device internal pipeline relies on reliable black level values
23244 to process the raw images appropriately.<wbr/> To get the best image
23245 quality,<wbr/> the camera device may choose to estimate the per frame black
23246 level values either based on optically shielded black regions
23247 (<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
23248 <p>This key reports the camera device estimated per-frame zero light
23249 value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
23250 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
23251 approximation of the actual black level values.<wbr/> This value is the
23252 black level used in camera device internal image processing pipeline
23253 and generally more accurate than the fixed black level values.<wbr/>
23254 However,<wbr/> since they are estimated values by the camera device,<wbr/> they
23255 may not be as accurate as the black level values calculated from the
23256 optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
23257 <p>The values are given in the same order as channels listed for the CFA
23258 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
23259 nth value given corresponds to the black level offset for the nth
23260 color channel listed in the CFA.<wbr/></p>
23261 <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
23262 camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
23263             </td>
23264           </tr>
23265
23266           <tr class="entries_header">
23267             <th class="th_details" colspan="6">HAL Implementation Details</th>
23268           </tr>
23269           <tr class="entry_cont">
23270             <td class="entry_details" colspan="6">
23271               <p>The values are given in row-column scan order,<wbr/> with the first value
23272 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
23273             </td>
23274           </tr>
23275
23276           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23277            <!-- end of entry -->
23278         
23279                 
23280           <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
23281             <td class="entry_name
23282              " rowspan="5">
23283               android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
23284             </td>
23285             <td class="entry_type">
23286                 <span class="entry_type_name">int32</span>
23287
23288               <span class="entry_type_visibility"> [public]</span>
23289
23290
23291
23292
23293
23294
23295             </td> <!-- entry_type -->
23296
23297             <td class="entry_description">
23298               <p>Maximum raw value output by sensor for this frame.<wbr/></p>
23299             </td>
23300
23301             <td class="entry_units">
23302             </td>
23303
23304             <td class="entry_range">
23305               <p>&gt;= 0</p>
23306             </td>
23307
23308             <td class="entry_hal_version">
23309               <p>3.<wbr/>2</p>
23310             </td>
23311
23312             <td class="entry_tags">
23313               <ul class="entry_tags">
23314                   <li><a href="#tag_RAW">RAW</a></li>
23315               </ul>
23316             </td>
23317
23318           </tr>
23319           <tr class="entries_header">
23320             <th class="th_details" colspan="6">Details</th>
23321           </tr>
23322           <tr class="entry_cont">
23323             <td class="entry_details" colspan="6">
23324               <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
23325 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
23326 level will change accordingly.<wbr/> This key is similar to
23327 <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
23328 estimated white level for each frame.<wbr/></p>
23329 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
23330 available or the camera device advertises this key via
23331 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
23332             </td>
23333           </tr>
23334
23335           <tr class="entries_header">
23336             <th class="th_details" colspan="6">HAL Implementation Details</th>
23337           </tr>
23338           <tr class="entry_cont">
23339             <td class="entry_details" colspan="6">
23340               <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
23341 so the value for linear sensors should not be significantly lower
23342 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
23343             </td>
23344           </tr>
23345
23346           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23347            <!-- end of entry -->
23348         
23349         
23350
23351       <!-- end of kind -->
23352       </tbody>
23353
23354   <!-- end of section -->
23355   <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
23356
23357
23358       <tr><td colspan="7" class="kind">controls</td></tr>
23359
23360       <thead class="entries_header">
23361         <tr>
23362           <th class="th_name">Property Name</th>
23363           <th class="th_type">Type</th>
23364           <th class="th_description">Description</th>
23365           <th class="th_units">Units</th>
23366           <th class="th_range">Range</th>
23367           <th class="th_hal_version">Initial HIDL HAL version</th>
23368           <th class="th_tags">Tags</th>
23369         </tr>
23370       </thead>
23371
23372       <tbody>
23373
23374         
23375
23376         
23377
23378         
23379
23380         
23381
23382                 
23383           <tr class="entry" id="controls_android.shading.mode">
23384             <td class="entry_name
23385              " rowspan="3">
23386               android.<wbr/>shading.<wbr/>mode
23387             </td>
23388             <td class="entry_type">
23389                 <span class="entry_type_name entry_type_name_enum">byte</span>
23390
23391               <span class="entry_type_visibility"> [public]</span>
23392
23393
23394               <span class="entry_type_hwlevel">[full] </span>
23395
23396
23397
23398                 <ul class="entry_type_enum">
23399                   <li>
23400                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23401                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23402                   </li>
23403                   <li>
23404                     <span class="entry_type_enum_name">FAST (v3.2)</span>
23405                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23406 frame rate relative to sensor raw output</p></span>
23407                   </li>
23408                   <li>
23409                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23410                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23411 cost of possibly reduced frame rate.<wbr/></p></span>
23412                   </li>
23413                 </ul>
23414
23415             </td> <!-- entry_type -->
23416
23417             <td class="entry_description">
23418               <p>Quality of lens shading correction applied
23419 to the image data.<wbr/></p>
23420             </td>
23421
23422             <td class="entry_units">
23423             </td>
23424
23425             <td class="entry_range">
23426               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23427             </td>
23428
23429             <td class="entry_hal_version">
23430               <p>3.<wbr/>2</p>
23431             </td>
23432
23433             <td class="entry_tags">
23434             </td>
23435
23436           </tr>
23437           <tr class="entries_header">
23438             <th class="th_details" colspan="6">Details</th>
23439           </tr>
23440           <tr class="entry_cont">
23441             <td class="entry_details" colspan="6">
23442               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23443 camera device,<wbr/> and an identity lens shading map data will be provided
23444 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
23445 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23446 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
23447 map shown below:</p>
23448 <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/>
23449  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/>
23450  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/>
23451  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/>
23452  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/>
23453  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 ]
23454 </code></pre>
23455 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23456 device.<wbr/> Applications can request lens shading map data by setting
23457 <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
23458 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
23459 data will be the one applied by the camera device for this capture request.<wbr/></p>
23460 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23461 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23462 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>
23463 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23464 to be converged before using the returned shading map data.<wbr/></p>
23465             </td>
23466           </tr>
23467
23468
23469           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23470            <!-- end of entry -->
23471         
23472                 
23473           <tr class="entry" id="controls_android.shading.strength">
23474             <td class="entry_name
23475              " rowspan="1">
23476               android.<wbr/>shading.<wbr/>strength
23477             </td>
23478             <td class="entry_type">
23479                 <span class="entry_type_name">byte</span>
23480
23481               <span class="entry_type_visibility"> [system]</span>
23482
23483
23484
23485
23486
23487
23488             </td> <!-- entry_type -->
23489
23490             <td class="entry_description">
23491               <p>Control the amount of shading correction
23492 applied to the images</p>
23493             </td>
23494
23495             <td class="entry_units">
23496               unitless: 1-10; 10 is full shading
23497           compensation
23498             </td>
23499
23500             <td class="entry_range">
23501             </td>
23502
23503             <td class="entry_hal_version">
23504               <p>3.<wbr/>2</p>
23505             </td>
23506
23507             <td class="entry_tags">
23508               <ul class="entry_tags">
23509                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23510               </ul>
23511             </td>
23512
23513           </tr>
23514
23515
23516           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23517            <!-- end of entry -->
23518         
23519         
23520
23521       <!-- end of kind -->
23522       </tbody>
23523       <tr><td colspan="7" class="kind">dynamic</td></tr>
23524
23525       <thead class="entries_header">
23526         <tr>
23527           <th class="th_name">Property Name</th>
23528           <th class="th_type">Type</th>
23529           <th class="th_description">Description</th>
23530           <th class="th_units">Units</th>
23531           <th class="th_range">Range</th>
23532           <th class="th_hal_version">Initial HIDL HAL version</th>
23533           <th class="th_tags">Tags</th>
23534         </tr>
23535       </thead>
23536
23537       <tbody>
23538
23539         
23540
23541         
23542
23543         
23544
23545         
23546
23547                 
23548           <tr class="entry" id="dynamic_android.shading.mode">
23549             <td class="entry_name
23550              " rowspan="3">
23551               android.<wbr/>shading.<wbr/>mode
23552             </td>
23553             <td class="entry_type">
23554                 <span class="entry_type_name entry_type_name_enum">byte</span>
23555
23556               <span class="entry_type_visibility"> [public]</span>
23557
23558
23559               <span class="entry_type_hwlevel">[full] </span>
23560
23561
23562
23563                 <ul class="entry_type_enum">
23564                   <li>
23565                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23566                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23567                   </li>
23568                   <li>
23569                     <span class="entry_type_enum_name">FAST (v3.2)</span>
23570                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23571 frame rate relative to sensor raw output</p></span>
23572                   </li>
23573                   <li>
23574                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23575                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23576 cost of possibly reduced frame rate.<wbr/></p></span>
23577                   </li>
23578                 </ul>
23579
23580             </td> <!-- entry_type -->
23581
23582             <td class="entry_description">
23583               <p>Quality of lens shading correction applied
23584 to the image data.<wbr/></p>
23585             </td>
23586
23587             <td class="entry_units">
23588             </td>
23589
23590             <td class="entry_range">
23591               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23592             </td>
23593
23594             <td class="entry_hal_version">
23595               <p>3.<wbr/>2</p>
23596             </td>
23597
23598             <td class="entry_tags">
23599             </td>
23600
23601           </tr>
23602           <tr class="entries_header">
23603             <th class="th_details" colspan="6">Details</th>
23604           </tr>
23605           <tr class="entry_cont">
23606             <td class="entry_details" colspan="6">
23607               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23608 camera device,<wbr/> and an identity lens shading map data will be provided
23609 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
23610 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23611 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
23612 map shown below:</p>
23613 <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/>
23614  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/>
23615  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/>
23616  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/>
23617  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/>
23618  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 ]
23619 </code></pre>
23620 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23621 device.<wbr/> Applications can request lens shading map data by setting
23622 <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
23623 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
23624 data will be the one applied by the camera device for this capture request.<wbr/></p>
23625 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23626 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23627 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>
23628 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23629 to be converged before using the returned shading map data.<wbr/></p>
23630             </td>
23631           </tr>
23632
23633
23634           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23635            <!-- end of entry -->
23636         
23637         
23638
23639       <!-- end of kind -->
23640       </tbody>
23641       <tr><td colspan="7" class="kind">static</td></tr>
23642
23643       <thead class="entries_header">
23644         <tr>
23645           <th class="th_name">Property Name</th>
23646           <th class="th_type">Type</th>
23647           <th class="th_description">Description</th>
23648           <th class="th_units">Units</th>
23649           <th class="th_range">Range</th>
23650           <th class="th_hal_version">Initial HIDL HAL version</th>
23651           <th class="th_tags">Tags</th>
23652         </tr>
23653       </thead>
23654
23655       <tbody>
23656
23657         
23658
23659         
23660
23661         
23662
23663         
23664
23665                 
23666           <tr class="entry" id="static_android.shading.availableModes">
23667             <td class="entry_name
23668              " rowspan="5">
23669               android.<wbr/>shading.<wbr/>available<wbr/>Modes
23670             </td>
23671             <td class="entry_type">
23672                 <span class="entry_type_name">byte</span>
23673                 <span class="entry_type_container">x</span>
23674
23675                 <span class="entry_type_array">
23676                   n
23677                 </span>
23678               <span class="entry_type_visibility"> [public as enumList]</span>
23679
23680
23681               <span class="entry_type_hwlevel">[legacy] </span>
23682
23683
23684                 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
23685
23686
23687             </td> <!-- entry_type -->
23688
23689             <td class="entry_description">
23690               <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>
23691             </td>
23692
23693             <td class="entry_units">
23694             </td>
23695
23696             <td class="entry_range">
23697               <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
23698             </td>
23699
23700             <td class="entry_hal_version">
23701               <p>3.<wbr/>2</p>
23702             </td>
23703
23704             <td class="entry_tags">
23705             </td>
23706
23707           </tr>
23708           <tr class="entries_header">
23709             <th class="th_details" colspan="6">Details</th>
23710           </tr>
23711           <tr class="entry_cont">
23712             <td class="entry_details" colspan="6">
23713               <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
23714 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
23715 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
23716 LEGACY devices will always only support FAST mode.<wbr/></p>
23717             </td>
23718           </tr>
23719
23720           <tr class="entries_header">
23721             <th class="th_details" colspan="6">HAL Implementation Details</th>
23722           </tr>
23723           <tr class="entry_cont">
23724             <td class="entry_details" colspan="6">
23725               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
23726 available on the camera device,<wbr/> but the underlying implementation can be the same for
23727 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
23728 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
23729             </td>
23730           </tr>
23731
23732           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23733            <!-- end of entry -->
23734         
23735         
23736
23737       <!-- end of kind -->
23738       </tbody>
23739
23740   <!-- end of section -->
23741   <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
23742
23743
23744       <tr><td colspan="7" class="kind">controls</td></tr>
23745
23746       <thead class="entries_header">
23747         <tr>
23748           <th class="th_name">Property Name</th>
23749           <th class="th_type">Type</th>
23750           <th class="th_description">Description</th>
23751           <th class="th_units">Units</th>
23752           <th class="th_range">Range</th>
23753           <th class="th_hal_version">Initial HIDL HAL version</th>
23754           <th class="th_tags">Tags</th>
23755         </tr>
23756       </thead>
23757
23758       <tbody>
23759
23760         
23761
23762         
23763
23764         
23765
23766         
23767
23768                 
23769           <tr class="entry" id="controls_android.statistics.faceDetectMode">
23770             <td class="entry_name
23771              " rowspan="5">
23772               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
23773             </td>
23774             <td class="entry_type">
23775                 <span class="entry_type_name entry_type_name_enum">byte</span>
23776
23777               <span class="entry_type_visibility"> [public]</span>
23778
23779
23780               <span class="entry_type_hwlevel">[legacy] </span>
23781
23782
23783
23784                 <ul class="entry_type_enum">
23785                   <li>
23786                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23787                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
23788 results.<wbr/></p></span>
23789                   </li>
23790                   <li>
23791                     <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
23792                     <span class="entry_type_enum_optional">[optional]</span>
23793                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
23794                   </li>
23795                   <li>
23796                     <span class="entry_type_enum_name">FULL (v3.2)</span>
23797                     <span class="entry_type_enum_optional">[optional]</span>
23798                     <span class="entry_type_enum_notes"><p>Return all face
23799 metadata.<wbr/></p>
23800 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
23801                   </li>
23802                 </ul>
23803
23804             </td> <!-- entry_type -->
23805
23806             <td class="entry_description">
23807               <p>Operating mode for the face detector
23808 unit.<wbr/></p>
23809             </td>
23810
23811             <td class="entry_units">
23812             </td>
23813
23814             <td class="entry_range">
23815               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
23816             </td>
23817
23818             <td class="entry_hal_version">
23819               <p>3.<wbr/>2</p>
23820             </td>
23821
23822             <td class="entry_tags">
23823               <ul class="entry_tags">
23824                   <li><a href="#tag_BC">BC</a></li>
23825               </ul>
23826             </td>
23827
23828           </tr>
23829           <tr class="entries_header">
23830             <th class="th_details" colspan="6">Details</th>
23831           </tr>
23832           <tr class="entry_cont">
23833             <td class="entry_details" colspan="6">
23834               <p>Whether face detection is enabled,<wbr/> and whether it
23835 should output just the basic fields or the full set of
23836 fields.<wbr/></p>
23837             </td>
23838           </tr>
23839
23840           <tr class="entries_header">
23841             <th class="th_details" colspan="6">HAL Implementation Details</th>
23842           </tr>
23843           <tr class="entry_cont">
23844             <td class="entry_details" colspan="6">
23845               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
23846 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
23847 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
23848 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
23849             </td>
23850           </tr>
23851
23852           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23853            <!-- end of entry -->
23854         
23855                 
23856           <tr class="entry" id="controls_android.statistics.histogramMode">
23857             <td class="entry_name
23858              " rowspan="1">
23859               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
23860             </td>
23861             <td class="entry_type">
23862                 <span class="entry_type_name entry_type_name_enum">byte</span>
23863
23864               <span class="entry_type_visibility"> [system as boolean]</span>
23865
23866
23867
23868
23869
23870                 <ul class="entry_type_enum">
23871                   <li>
23872                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23873                   </li>
23874                   <li>
23875                     <span class="entry_type_enum_name">ON (v3.2)</span>
23876                   </li>
23877                 </ul>
23878
23879             </td> <!-- entry_type -->
23880
23881             <td class="entry_description">
23882               <p>Operating mode for histogram
23883 generation</p>
23884             </td>
23885
23886             <td class="entry_units">
23887             </td>
23888
23889             <td class="entry_range">
23890             </td>
23891
23892             <td class="entry_hal_version">
23893               <p>3.<wbr/>2</p>
23894             </td>
23895
23896             <td class="entry_tags">
23897               <ul class="entry_tags">
23898                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23899               </ul>
23900             </td>
23901
23902           </tr>
23903
23904
23905           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23906            <!-- end of entry -->
23907         
23908                 
23909           <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
23910             <td class="entry_name
23911              " rowspan="1">
23912               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
23913             </td>
23914             <td class="entry_type">
23915                 <span class="entry_type_name entry_type_name_enum">byte</span>
23916
23917               <span class="entry_type_visibility"> [system as boolean]</span>
23918
23919
23920
23921
23922
23923                 <ul class="entry_type_enum">
23924                   <li>
23925                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23926                   </li>
23927                   <li>
23928                     <span class="entry_type_enum_name">ON (v3.2)</span>
23929                   </li>
23930                 </ul>
23931
23932             </td> <!-- entry_type -->
23933
23934             <td class="entry_description">
23935               <p>Operating mode for sharpness map
23936 generation</p>
23937             </td>
23938
23939             <td class="entry_units">
23940             </td>
23941
23942             <td class="entry_range">
23943             </td>
23944
23945             <td class="entry_hal_version">
23946               <p>3.<wbr/>2</p>
23947             </td>
23948
23949             <td class="entry_tags">
23950               <ul class="entry_tags">
23951                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23952               </ul>
23953             </td>
23954
23955           </tr>
23956
23957
23958           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23959            <!-- end of entry -->
23960         
23961                 
23962           <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
23963             <td class="entry_name
23964              " rowspan="3">
23965               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
23966             </td>
23967             <td class="entry_type">
23968                 <span class="entry_type_name entry_type_name_enum">byte</span>
23969
23970               <span class="entry_type_visibility"> [public as boolean]</span>
23971
23972
23973
23974
23975
23976                 <ul class="entry_type_enum">
23977                   <li>
23978                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23979                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
23980                   </li>
23981                   <li>
23982                     <span class="entry_type_enum_name">ON (v3.2)</span>
23983                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
23984                   </li>
23985                 </ul>
23986
23987             </td> <!-- entry_type -->
23988
23989             <td class="entry_description">
23990               <p>Operating mode for hot pixel map generation.<wbr/></p>
23991             </td>
23992
23993             <td class="entry_units">
23994             </td>
23995
23996             <td class="entry_range">
23997               <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>
23998             </td>
23999
24000             <td class="entry_hal_version">
24001               <p>3.<wbr/>2</p>
24002             </td>
24003
24004             <td class="entry_tags">
24005               <ul class="entry_tags">
24006                   <li><a href="#tag_V1">V1</a></li>
24007                   <li><a href="#tag_RAW">RAW</a></li>
24008               </ul>
24009             </td>
24010
24011           </tr>
24012           <tr class="entries_header">
24013             <th class="th_details" colspan="6">Details</th>
24014           </tr>
24015           <tr class="entry_cont">
24016             <td class="entry_details" colspan="6">
24017               <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/>
24018 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
24019             </td>
24020           </tr>
24021
24022
24023           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24024            <!-- end of entry -->
24025         
24026                 
24027           <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
24028             <td class="entry_name
24029              " rowspan="3">
24030               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
24031             </td>
24032             <td class="entry_type">
24033                 <span class="entry_type_name entry_type_name_enum">byte</span>
24034
24035               <span class="entry_type_visibility"> [public]</span>
24036
24037
24038               <span class="entry_type_hwlevel">[full] </span>
24039
24040
24041
24042                 <ul class="entry_type_enum">
24043                   <li>
24044                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24045                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
24046                   </li>
24047                   <li>
24048                     <span class="entry_type_enum_name">ON (v3.2)</span>
24049                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
24050                   </li>
24051                 </ul>
24052
24053             </td> <!-- entry_type -->
24054
24055             <td class="entry_description">
24056               <p>Whether the camera device will output the lens
24057 shading map in output result metadata.<wbr/></p>
24058             </td>
24059
24060             <td class="entry_units">
24061             </td>
24062
24063             <td class="entry_range">
24064               <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>
24065             </td>
24066
24067             <td class="entry_hal_version">
24068               <p>3.<wbr/>2</p>
24069             </td>
24070
24071             <td class="entry_tags">
24072               <ul class="entry_tags">
24073                   <li><a href="#tag_RAW">RAW</a></li>
24074               </ul>
24075             </td>
24076
24077           </tr>
24078           <tr class="entries_header">
24079             <th class="th_details" colspan="6">Details</th>
24080           </tr>
24081           <tr class="entry_cont">
24082             <td class="entry_details" colspan="6">
24083               <p>When set to ON,<wbr/>
24084 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
24085 the output result metadata.<wbr/></p>
24086 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24087             </td>
24088           </tr>
24089
24090
24091           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24092            <!-- end of entry -->
24093         
24094                 
24095           <tr class="entry" id="controls_android.statistics.oisDataMode">
24096             <td class="entry_name
24097              " rowspan="3">
24098               android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
24099             </td>
24100             <td class="entry_type">
24101                 <span class="entry_type_name entry_type_name_enum">byte</span>
24102
24103               <span class="entry_type_visibility"> [public]</span>
24104
24105
24106
24107
24108
24109                 <ul class="entry_type_enum">
24110                   <li>
24111                     <span class="entry_type_enum_name">OFF (v3.3)</span>
24112                     <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
24113                   </li>
24114                   <li>
24115                     <span class="entry_type_enum_name">ON (v3.3)</span>
24116                     <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
24117                   </li>
24118                 </ul>
24119
24120             </td> <!-- entry_type -->
24121
24122             <td class="entry_description">
24123               <p>A control for selecting whether OIS position information is included in output
24124 result metadata.<wbr/></p>
24125             </td>
24126
24127             <td class="entry_units">
24128             </td>
24129
24130             <td class="entry_range">
24131               <p>android.<wbr/>Statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</p>
24132             </td>
24133
24134             <td class="entry_hal_version">
24135               <p>3.<wbr/>3</p>
24136             </td>
24137
24138             <td class="entry_tags">
24139             </td>
24140
24141           </tr>
24142           <tr class="entries_header">
24143             <th class="th_details" colspan="6">Details</th>
24144           </tr>
24145           <tr class="entry_cont">
24146             <td class="entry_details" colspan="6">
24147               <p>When set to ON,<wbr/>
24148 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>,<wbr/> android.<wbr/>statistics.<wbr/>ois<wbr/>Shift<wbr/>Pixel<wbr/>X,<wbr/>
24149 and android.<wbr/>statistics.<wbr/>ois<wbr/>Shift<wbr/>Pixel<wbr/>Y provide OIS data in the output result metadata.<wbr/></p>
24150             </td>
24151           </tr>
24152
24153
24154           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24155            <!-- end of entry -->
24156         
24157         
24158
24159       <!-- end of kind -->
24160       </tbody>
24161       <tr><td colspan="7" class="kind">static</td></tr>
24162
24163       <thead class="entries_header">
24164         <tr>
24165           <th class="th_name">Property Name</th>
24166           <th class="th_type">Type</th>
24167           <th class="th_description">Description</th>
24168           <th class="th_units">Units</th>
24169           <th class="th_range">Range</th>
24170           <th class="th_hal_version">Initial HIDL HAL version</th>
24171           <th class="th_tags">Tags</th>
24172         </tr>
24173       </thead>
24174
24175       <tbody>
24176
24177         
24178
24179         
24180
24181         
24182
24183         
24184                 
24185             
24186
24187                 
24188           <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
24189             <td class="entry_name
24190              " rowspan="3">
24191               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
24192             </td>
24193             <td class="entry_type">
24194                 <span class="entry_type_name">byte</span>
24195                 <span class="entry_type_container">x</span>
24196
24197                 <span class="entry_type_array">
24198                   n
24199                 </span>
24200               <span class="entry_type_visibility"> [public as enumList]</span>
24201
24202
24203               <span class="entry_type_hwlevel">[legacy] </span>
24204
24205
24206                 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
24207
24208
24209             </td> <!-- entry_type -->
24210
24211             <td class="entry_description">
24212               <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
24213 supported by this camera device.<wbr/></p>
24214             </td>
24215
24216             <td class="entry_units">
24217             </td>
24218
24219             <td class="entry_range">
24220               <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
24221             </td>
24222
24223             <td class="entry_hal_version">
24224               <p>3.<wbr/>2</p>
24225             </td>
24226
24227             <td class="entry_tags">
24228             </td>
24229
24230           </tr>
24231           <tr class="entries_header">
24232             <th class="th_details" colspan="6">Details</th>
24233           </tr>
24234           <tr class="entry_cont">
24235             <td class="entry_details" colspan="6">
24236               <p>OFF is always supported.<wbr/></p>
24237             </td>
24238           </tr>
24239
24240
24241           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24242            <!-- end of entry -->
24243         
24244                 
24245           <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
24246             <td class="entry_name
24247              " rowspan="1">
24248               android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
24249             </td>
24250             <td class="entry_type">
24251                 <span class="entry_type_name">int32</span>
24252
24253               <span class="entry_type_visibility"> [system]</span>
24254
24255
24256
24257
24258
24259
24260             </td> <!-- entry_type -->
24261
24262             <td class="entry_description">
24263               <p>Number of histogram buckets
24264 supported</p>
24265             </td>
24266
24267             <td class="entry_units">
24268             </td>
24269
24270             <td class="entry_range">
24271               <p>&gt;= 64</p>
24272             </td>
24273
24274             <td class="entry_hal_version">
24275               <p>3.<wbr/>2</p>
24276             </td>
24277
24278             <td class="entry_tags">
24279               <ul class="entry_tags">
24280                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24281               </ul>
24282             </td>
24283
24284           </tr>
24285
24286
24287           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24288            <!-- end of entry -->
24289         
24290                 
24291           <tr class="entry" id="static_android.statistics.info.maxFaceCount">
24292             <td class="entry_name
24293              " rowspan="1">
24294               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
24295             </td>
24296             <td class="entry_type">
24297                 <span class="entry_type_name">int32</span>
24298
24299               <span class="entry_type_visibility"> [public]</span>
24300
24301
24302               <span class="entry_type_hwlevel">[legacy] </span>
24303
24304
24305
24306
24307             </td> <!-- entry_type -->
24308
24309             <td class="entry_description">
24310               <p>The maximum number of simultaneously detectable
24311 faces.<wbr/></p>
24312             </td>
24313
24314             <td class="entry_units">
24315             </td>
24316
24317             <td class="entry_range">
24318               <p>0 for cameras without available face detection; otherwise:
24319 <code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
24320 <code>&gt;0</code> for LEGACY devices.<wbr/></p>
24321             </td>
24322
24323             <td class="entry_hal_version">
24324               <p>3.<wbr/>2</p>
24325             </td>
24326
24327             <td class="entry_tags">
24328               <ul class="entry_tags">
24329                   <li><a href="#tag_BC">BC</a></li>
24330               </ul>
24331             </td>
24332
24333           </tr>
24334
24335
24336           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24337            <!-- end of entry -->
24338         
24339                 
24340           <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
24341             <td class="entry_name
24342              " rowspan="1">
24343               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
24344             </td>
24345             <td class="entry_type">
24346                 <span class="entry_type_name">int32</span>
24347
24348               <span class="entry_type_visibility"> [system]</span>
24349
24350
24351
24352
24353
24354
24355             </td> <!-- entry_type -->
24356
24357             <td class="entry_description">
24358               <p>Maximum value possible for a histogram
24359 bucket</p>
24360             </td>
24361
24362             <td class="entry_units">
24363             </td>
24364
24365             <td class="entry_range">
24366             </td>
24367
24368             <td class="entry_hal_version">
24369               <p>3.<wbr/>2</p>
24370             </td>
24371
24372             <td class="entry_tags">
24373               <ul class="entry_tags">
24374                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24375               </ul>
24376             </td>
24377
24378           </tr>
24379
24380
24381           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24382            <!-- end of entry -->
24383         
24384                 
24385           <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
24386             <td class="entry_name
24387              " rowspan="1">
24388               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
24389             </td>
24390             <td class="entry_type">
24391                 <span class="entry_type_name">int32</span>
24392
24393               <span class="entry_type_visibility"> [system]</span>
24394
24395
24396
24397
24398
24399
24400             </td> <!-- entry_type -->
24401
24402             <td class="entry_description">
24403               <p>Maximum value possible for a sharpness map
24404 region.<wbr/></p>
24405             </td>
24406
24407             <td class="entry_units">
24408             </td>
24409
24410             <td class="entry_range">
24411             </td>
24412
24413             <td class="entry_hal_version">
24414               <p>3.<wbr/>2</p>
24415             </td>
24416
24417             <td class="entry_tags">
24418               <ul class="entry_tags">
24419                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24420               </ul>
24421             </td>
24422
24423           </tr>
24424
24425
24426           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24427            <!-- end of entry -->
24428         
24429                 
24430           <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
24431             <td class="entry_name
24432              " rowspan="1">
24433               android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
24434             </td>
24435             <td class="entry_type">
24436                 <span class="entry_type_name">int32</span>
24437                 <span class="entry_type_container">x</span>
24438
24439                 <span class="entry_type_array">
24440                   2
24441                 </span>
24442               <span class="entry_type_visibility"> [system as size]</span>
24443
24444
24445
24446
24447                 <div class="entry_type_notes">width x height</div>
24448
24449
24450             </td> <!-- entry_type -->
24451
24452             <td class="entry_description">
24453               <p>Dimensions of the sharpness
24454 map</p>
24455             </td>
24456
24457             <td class="entry_units">
24458             </td>
24459
24460             <td class="entry_range">
24461               <p>Must be at least 32 x 32</p>
24462             </td>
24463
24464             <td class="entry_hal_version">
24465               <p>3.<wbr/>2</p>
24466             </td>
24467
24468             <td class="entry_tags">
24469               <ul class="entry_tags">
24470                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24471               </ul>
24472             </td>
24473
24474           </tr>
24475
24476
24477           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24478            <!-- end of entry -->
24479         
24480                 
24481           <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
24482             <td class="entry_name
24483              " rowspan="3">
24484               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
24485             </td>
24486             <td class="entry_type">
24487                 <span class="entry_type_name">byte</span>
24488                 <span class="entry_type_container">x</span>
24489
24490                 <span class="entry_type_array">
24491                   n
24492                 </span>
24493               <span class="entry_type_visibility"> [public as boolean]</span>
24494
24495
24496
24497
24498                 <div class="entry_type_notes">list of enums</div>
24499
24500
24501             </td> <!-- entry_type -->
24502
24503             <td class="entry_description">
24504               <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
24505 supported by this camera device.<wbr/></p>
24506             </td>
24507
24508             <td class="entry_units">
24509             </td>
24510
24511             <td class="entry_range">
24512               <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
24513             </td>
24514
24515             <td class="entry_hal_version">
24516               <p>3.<wbr/>2</p>
24517             </td>
24518
24519             <td class="entry_tags">
24520               <ul class="entry_tags">
24521                   <li><a href="#tag_V1">V1</a></li>
24522                   <li><a href="#tag_RAW">RAW</a></li>
24523               </ul>
24524             </td>
24525
24526           </tr>
24527           <tr class="entries_header">
24528             <th class="th_details" colspan="6">Details</th>
24529           </tr>
24530           <tr class="entry_cont">
24531             <td class="entry_details" colspan="6">
24532               <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
24533 <code>false</code>.<wbr/></p>
24534 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24535             </td>
24536           </tr>
24537
24538
24539           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24540            <!-- end of entry -->
24541         
24542                 
24543           <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
24544             <td class="entry_name
24545              " rowspan="3">
24546               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
24547             </td>
24548             <td class="entry_type">
24549                 <span class="entry_type_name">byte</span>
24550                 <span class="entry_type_container">x</span>
24551
24552                 <span class="entry_type_array">
24553                   n
24554                 </span>
24555               <span class="entry_type_visibility"> [public as enumList]</span>
24556
24557
24558
24559
24560                 <div class="entry_type_notes">list of enums</div>
24561
24562
24563             </td> <!-- entry_type -->
24564
24565             <td class="entry_description">
24566               <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
24567 are supported by this camera device.<wbr/></p>
24568             </td>
24569
24570             <td class="entry_units">
24571             </td>
24572
24573             <td class="entry_range">
24574               <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
24575             </td>
24576
24577             <td class="entry_hal_version">
24578               <p>3.<wbr/>2</p>
24579             </td>
24580
24581             <td class="entry_tags">
24582             </td>
24583
24584           </tr>
24585           <tr class="entries_header">
24586             <th class="th_details" colspan="6">Details</th>
24587           </tr>
24588           <tr class="entry_cont">
24589             <td class="entry_details" colspan="6">
24590               <p>If no lens shading map output is available for this camera device,<wbr/> this key will
24591 contain only OFF.<wbr/></p>
24592 <p>ON is always supported on devices with the RAW capability.<wbr/>
24593 LEGACY mode devices will always only support OFF.<wbr/></p>
24594             </td>
24595           </tr>
24596
24597
24598           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24599            <!-- end of entry -->
24600         
24601                 
24602           <tr class="entry" id="static_android.statistics.info.availableOisDataModes">
24603             <td class="entry_name
24604              " rowspan="3">
24605               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes
24606             </td>
24607             <td class="entry_type">
24608                 <span class="entry_type_name">byte</span>
24609                 <span class="entry_type_container">x</span>
24610
24611                 <span class="entry_type_array">
24612                   n
24613                 </span>
24614               <span class="entry_type_visibility"> [public as enumList]</span>
24615
24616
24617
24618
24619                 <div class="entry_type_notes">list of enums</div>
24620
24621
24622             </td> <!-- entry_type -->
24623
24624             <td class="entry_description">
24625               <p>List of OIS data output modes for <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a> that
24626 are supported by this camera device.<wbr/></p>
24627             </td>
24628
24629             <td class="entry_units">
24630             </td>
24631
24632             <td class="entry_range">
24633               <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p>
24634             </td>
24635
24636             <td class="entry_hal_version">
24637               <p>3.<wbr/>3</p>
24638             </td>
24639
24640             <td class="entry_tags">
24641             </td>
24642
24643           </tr>
24644           <tr class="entries_header">
24645             <th class="th_details" colspan="6">Details</th>
24646           </tr>
24647           <tr class="entry_cont">
24648             <td class="entry_details" colspan="6">
24649               <p>If no OIS data output is available for this camera device,<wbr/> this key will
24650 contain only OFF.<wbr/></p>
24651             </td>
24652           </tr>
24653
24654
24655           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24656            <!-- end of entry -->
24657         
24658         
24659         
24660
24661         
24662
24663       <!-- end of kind -->
24664       </tbody>
24665       <tr><td colspan="7" class="kind">dynamic</td></tr>
24666
24667       <thead class="entries_header">
24668         <tr>
24669           <th class="th_name">Property Name</th>
24670           <th class="th_type">Type</th>
24671           <th class="th_description">Description</th>
24672           <th class="th_units">Units</th>
24673           <th class="th_range">Range</th>
24674           <th class="th_hal_version">Initial HIDL HAL version</th>
24675           <th class="th_tags">Tags</th>
24676         </tr>
24677       </thead>
24678
24679       <tbody>
24680
24681         
24682
24683         
24684
24685         
24686
24687         
24688
24689                 
24690           <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
24691             <td class="entry_name
24692              " rowspan="5">
24693               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24694             </td>
24695             <td class="entry_type">
24696                 <span class="entry_type_name entry_type_name_enum">byte</span>
24697
24698               <span class="entry_type_visibility"> [public]</span>
24699
24700
24701               <span class="entry_type_hwlevel">[legacy] </span>
24702
24703
24704
24705                 <ul class="entry_type_enum">
24706                   <li>
24707                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24708                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24709 results.<wbr/></p></span>
24710                   </li>
24711                   <li>
24712                     <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24713                     <span class="entry_type_enum_optional">[optional]</span>
24714                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24715                   </li>
24716                   <li>
24717                     <span class="entry_type_enum_name">FULL (v3.2)</span>
24718                     <span class="entry_type_enum_optional">[optional]</span>
24719                     <span class="entry_type_enum_notes"><p>Return all face
24720 metadata.<wbr/></p>
24721 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24722                   </li>
24723                 </ul>
24724
24725             </td> <!-- entry_type -->
24726
24727             <td class="entry_description">
24728               <p>Operating mode for the face detector
24729 unit.<wbr/></p>
24730             </td>
24731
24732             <td class="entry_units">
24733             </td>
24734
24735             <td class="entry_range">
24736               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24737             </td>
24738
24739             <td class="entry_hal_version">
24740               <p>3.<wbr/>2</p>
24741             </td>
24742
24743             <td class="entry_tags">
24744               <ul class="entry_tags">
24745                   <li><a href="#tag_BC">BC</a></li>
24746               </ul>
24747             </td>
24748
24749           </tr>
24750           <tr class="entries_header">
24751             <th class="th_details" colspan="6">Details</th>
24752           </tr>
24753           <tr class="entry_cont">
24754             <td class="entry_details" colspan="6">
24755               <p>Whether face detection is enabled,<wbr/> and whether it
24756 should output just the basic fields or the full set of
24757 fields.<wbr/></p>
24758             </td>
24759           </tr>
24760
24761           <tr class="entries_header">
24762             <th class="th_details" colspan="6">HAL Implementation Details</th>
24763           </tr>
24764           <tr class="entry_cont">
24765             <td class="entry_details" colspan="6">
24766               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
24767 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
24768 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
24769 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
24770             </td>
24771           </tr>
24772
24773           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24774            <!-- end of entry -->
24775         
24776                 
24777           <tr class="entry" id="dynamic_android.statistics.faceIds">
24778             <td class="entry_name
24779              " rowspan="3">
24780               android.<wbr/>statistics.<wbr/>face<wbr/>Ids
24781             </td>
24782             <td class="entry_type">
24783                 <span class="entry_type_name">int32</span>
24784                 <span class="entry_type_container">x</span>
24785
24786                 <span class="entry_type_array">
24787                   n
24788                 </span>
24789               <span class="entry_type_visibility"> [ndk_public]</span>
24790
24791
24792               <span class="entry_type_hwlevel">[legacy] </span>
24793
24794
24795
24796
24797             </td> <!-- entry_type -->
24798
24799             <td class="entry_description">
24800               <p>List of unique IDs for detected faces.<wbr/></p>
24801             </td>
24802
24803             <td class="entry_units">
24804             </td>
24805
24806             <td class="entry_range">
24807             </td>
24808
24809             <td class="entry_hal_version">
24810               <p>3.<wbr/>2</p>
24811             </td>
24812
24813             <td class="entry_tags">
24814               <ul class="entry_tags">
24815                   <li><a href="#tag_BC">BC</a></li>
24816               </ul>
24817             </td>
24818
24819           </tr>
24820           <tr class="entries_header">
24821             <th class="th_details" colspan="6">Details</th>
24822           </tr>
24823           <tr class="entry_cont">
24824             <td class="entry_details" colspan="6">
24825               <p>Each detected face is given a unique ID that is valid for as long as the face is visible
24826 to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
24827 assigned a new ID.<wbr/></p>
24828 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
24829             </td>
24830           </tr>
24831
24832
24833           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24834            <!-- end of entry -->
24835         
24836                 
24837           <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
24838             <td class="entry_name
24839              " rowspan="3">
24840               android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
24841             </td>
24842             <td class="entry_type">
24843                 <span class="entry_type_name">int32</span>
24844                 <span class="entry_type_container">x</span>
24845
24846                 <span class="entry_type_array">
24847                   n x 6
24848                 </span>
24849               <span class="entry_type_visibility"> [ndk_public]</span>
24850
24851
24852               <span class="entry_type_hwlevel">[legacy] </span>
24853
24854
24855                 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
24856
24857
24858             </td> <!-- entry_type -->
24859
24860             <td class="entry_description">
24861               <p>List of landmarks for detected
24862 faces.<wbr/></p>
24863             </td>
24864
24865             <td class="entry_units">
24866             </td>
24867
24868             <td class="entry_range">
24869             </td>
24870
24871             <td class="entry_hal_version">
24872               <p>3.<wbr/>2</p>
24873             </td>
24874
24875             <td class="entry_tags">
24876               <ul class="entry_tags">
24877                   <li><a href="#tag_BC">BC</a></li>
24878               </ul>
24879             </td>
24880
24881           </tr>
24882           <tr class="entries_header">
24883             <th class="th_details" colspan="6">Details</th>
24884           </tr>
24885           <tr class="entry_cont">
24886             <td class="entry_details" colspan="6">
24887               <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
24888 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
24889 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
24890             </td>
24891           </tr>
24892
24893
24894           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24895            <!-- end of entry -->
24896         
24897                 
24898           <tr class="entry" id="dynamic_android.statistics.faceRectangles">
24899             <td class="entry_name
24900              " rowspan="3">
24901               android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
24902             </td>
24903             <td class="entry_type">
24904                 <span class="entry_type_name">int32</span>
24905                 <span class="entry_type_container">x</span>
24906
24907                 <span class="entry_type_array">
24908                   n x 4
24909                 </span>
24910               <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
24911
24912
24913               <span class="entry_type_hwlevel">[legacy] </span>
24914
24915
24916                 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
24917
24918
24919             </td> <!-- entry_type -->
24920
24921             <td class="entry_description">
24922               <p>List of the bounding rectangles for detected
24923 faces.<wbr/></p>
24924             </td>
24925
24926             <td class="entry_units">
24927             </td>
24928
24929             <td class="entry_range">
24930             </td>
24931
24932             <td class="entry_hal_version">
24933               <p>3.<wbr/>2</p>
24934             </td>
24935
24936             <td class="entry_tags">
24937               <ul class="entry_tags">
24938                   <li><a href="#tag_BC">BC</a></li>
24939               </ul>
24940             </td>
24941
24942           </tr>
24943           <tr class="entries_header">
24944             <th class="th_details" colspan="6">Details</th>
24945           </tr>
24946           <tr class="entry_cont">
24947             <td class="entry_details" colspan="6">
24948               <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
24949 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
24950 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
24951             </td>
24952           </tr>
24953
24954
24955           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24956            <!-- end of entry -->
24957         
24958                 
24959           <tr class="entry" id="dynamic_android.statistics.faceScores">
24960             <td class="entry_name
24961              " rowspan="5">
24962               android.<wbr/>statistics.<wbr/>face<wbr/>Scores
24963             </td>
24964             <td class="entry_type">
24965                 <span class="entry_type_name">byte</span>
24966                 <span class="entry_type_container">x</span>
24967
24968                 <span class="entry_type_array">
24969                   n
24970                 </span>
24971               <span class="entry_type_visibility"> [ndk_public]</span>
24972
24973
24974               <span class="entry_type_hwlevel">[legacy] </span>
24975
24976
24977
24978
24979             </td> <!-- entry_type -->
24980
24981             <td class="entry_description">
24982               <p>List of the face confidence scores for
24983 detected faces</p>
24984             </td>
24985
24986             <td class="entry_units">
24987             </td>
24988
24989             <td class="entry_range">
24990               <p>1-100</p>
24991             </td>
24992
24993             <td class="entry_hal_version">
24994               <p>3.<wbr/>2</p>
24995             </td>
24996
24997             <td class="entry_tags">
24998               <ul class="entry_tags">
24999                   <li><a href="#tag_BC">BC</a></li>
25000               </ul>
25001             </td>
25002
25003           </tr>
25004           <tr class="entries_header">
25005             <th class="th_details" colspan="6">Details</th>
25006           </tr>
25007           <tr class="entry_cont">
25008             <td class="entry_details" colspan="6">
25009               <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
25010             </td>
25011           </tr>
25012
25013           <tr class="entries_header">
25014             <th class="th_details" colspan="6">HAL Implementation Details</th>
25015           </tr>
25016           <tr class="entry_cont">
25017             <td class="entry_details" colspan="6">
25018               <p>The value should be meaningful (for example,<wbr/> setting 100 at
25019 all times is illegal).<wbr/></p>
25020             </td>
25021           </tr>
25022
25023           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25024            <!-- end of entry -->
25025         
25026                 
25027           <tr class="entry" id="dynamic_android.statistics.faces">
25028             <td class="entry_name
25029              " rowspan="3">
25030               android.<wbr/>statistics.<wbr/>faces
25031             </td>
25032             <td class="entry_type">
25033                 <span class="entry_type_name">int32</span>
25034                 <span class="entry_type_container">x</span>
25035
25036                 <span class="entry_type_array">
25037                   n
25038                 </span>
25039               <span class="entry_type_visibility"> [java_public as face]</span>
25040
25041               <span class="entry_type_synthetic">[synthetic] </span>
25042
25043               <span class="entry_type_hwlevel">[legacy] </span>
25044
25045
25046
25047
25048             </td> <!-- entry_type -->
25049
25050             <td class="entry_description">
25051               <p>List of the faces detected through camera face detection
25052 in this capture.<wbr/></p>
25053             </td>
25054
25055             <td class="entry_units">
25056             </td>
25057
25058             <td class="entry_range">
25059             </td>
25060
25061             <td class="entry_hal_version">
25062               <p>3.<wbr/>2</p>
25063             </td>
25064
25065             <td class="entry_tags">
25066             </td>
25067
25068           </tr>
25069           <tr class="entries_header">
25070             <th class="th_details" colspan="6">Details</th>
25071           </tr>
25072           <tr class="entry_cont">
25073             <td class="entry_details" colspan="6">
25074               <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>
25075             </td>
25076           </tr>
25077
25078
25079           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25080            <!-- end of entry -->
25081         
25082                 
25083           <tr class="entry" id="dynamic_android.statistics.histogram">
25084             <td class="entry_name
25085              " rowspan="3">
25086               android.<wbr/>statistics.<wbr/>histogram
25087             </td>
25088             <td class="entry_type">
25089                 <span class="entry_type_name">int32</span>
25090                 <span class="entry_type_container">x</span>
25091
25092                 <span class="entry_type_array">
25093                   n x 3
25094                 </span>
25095               <span class="entry_type_visibility"> [system]</span>
25096
25097
25098
25099
25100                 <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>
25101
25102
25103             </td> <!-- entry_type -->
25104
25105             <td class="entry_description">
25106               <p>A 3-channel histogram based on the raw
25107 sensor data</p>
25108             </td>
25109
25110             <td class="entry_units">
25111             </td>
25112
25113             <td class="entry_range">
25114             </td>
25115
25116             <td class="entry_hal_version">
25117               <p>3.<wbr/>2</p>
25118             </td>
25119
25120             <td class="entry_tags">
25121               <ul class="entry_tags">
25122                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25123               </ul>
25124             </td>
25125
25126           </tr>
25127           <tr class="entries_header">
25128             <th class="th_details" colspan="6">Details</th>
25129           </tr>
25130           <tr class="entry_cont">
25131             <td class="entry_details" colspan="6">
25132               <p>The k'th bucket (0-based) covers the input range
25133 (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/>
25134 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
25135 supported,<wbr/> all channels should have the same data</p>
25136             </td>
25137           </tr>
25138
25139
25140           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25141            <!-- end of entry -->
25142         
25143                 
25144           <tr class="entry" id="dynamic_android.statistics.histogramMode">
25145             <td class="entry_name
25146              " rowspan="1">
25147               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
25148             </td>
25149             <td class="entry_type">
25150                 <span class="entry_type_name entry_type_name_enum">byte</span>
25151
25152               <span class="entry_type_visibility"> [system as boolean]</span>
25153
25154
25155
25156
25157
25158                 <ul class="entry_type_enum">
25159                   <li>
25160                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25161                   </li>
25162                   <li>
25163                     <span class="entry_type_enum_name">ON (v3.2)</span>
25164                   </li>
25165                 </ul>
25166
25167             </td> <!-- entry_type -->
25168
25169             <td class="entry_description">
25170               <p>Operating mode for histogram
25171 generation</p>
25172             </td>
25173
25174             <td class="entry_units">
25175             </td>
25176
25177             <td class="entry_range">
25178             </td>
25179
25180             <td class="entry_hal_version">
25181               <p>3.<wbr/>2</p>
25182             </td>
25183
25184             <td class="entry_tags">
25185               <ul class="entry_tags">
25186                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25187               </ul>
25188             </td>
25189
25190           </tr>
25191
25192
25193           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25194            <!-- end of entry -->
25195         
25196                 
25197           <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
25198             <td class="entry_name
25199              " rowspan="3">
25200               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
25201             </td>
25202             <td class="entry_type">
25203                 <span class="entry_type_name">int32</span>
25204                 <span class="entry_type_container">x</span>
25205
25206                 <span class="entry_type_array">
25207                   n x m x 3
25208                 </span>
25209               <span class="entry_type_visibility"> [system]</span>
25210
25211
25212
25213
25214                 <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>
25215
25216
25217             </td> <!-- entry_type -->
25218
25219             <td class="entry_description">
25220               <p>A 3-channel sharpness map,<wbr/> based on the raw
25221 sensor data</p>
25222             </td>
25223
25224             <td class="entry_units">
25225             </td>
25226
25227             <td class="entry_range">
25228             </td>
25229
25230             <td class="entry_hal_version">
25231               <p>3.<wbr/>2</p>
25232             </td>
25233
25234             <td class="entry_tags">
25235               <ul class="entry_tags">
25236                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25237               </ul>
25238             </td>
25239
25240           </tr>
25241           <tr class="entries_header">
25242             <th class="th_details" colspan="6">Details</th>
25243           </tr>
25244           <tr class="entry_cont">
25245             <td class="entry_details" colspan="6">
25246               <p>If only a monochrome sharpness map is supported,<wbr/>
25247 all channels should have the same data</p>
25248             </td>
25249           </tr>
25250
25251
25252           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25253            <!-- end of entry -->
25254         
25255                 
25256           <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
25257             <td class="entry_name
25258              " rowspan="1">
25259               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
25260             </td>
25261             <td class="entry_type">
25262                 <span class="entry_type_name entry_type_name_enum">byte</span>
25263
25264               <span class="entry_type_visibility"> [system as boolean]</span>
25265
25266
25267
25268
25269
25270                 <ul class="entry_type_enum">
25271                   <li>
25272                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25273                   </li>
25274                   <li>
25275                     <span class="entry_type_enum_name">ON (v3.2)</span>
25276                   </li>
25277                 </ul>
25278
25279             </td> <!-- entry_type -->
25280
25281             <td class="entry_description">
25282               <p>Operating mode for sharpness map
25283 generation</p>
25284             </td>
25285
25286             <td class="entry_units">
25287             </td>
25288
25289             <td class="entry_range">
25290             </td>
25291
25292             <td class="entry_hal_version">
25293               <p>3.<wbr/>2</p>
25294             </td>
25295
25296             <td class="entry_tags">
25297               <ul class="entry_tags">
25298                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25299               </ul>
25300             </td>
25301
25302           </tr>
25303
25304
25305           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25306            <!-- end of entry -->
25307         
25308                 
25309           <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
25310             <td class="entry_name
25311              " rowspan="3">
25312               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
25313             </td>
25314             <td class="entry_type">
25315                 <span class="entry_type_name">byte</span>
25316
25317               <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
25318
25319
25320               <span class="entry_type_hwlevel">[full] </span>
25321
25322
25323
25324
25325             </td> <!-- entry_type -->
25326
25327             <td class="entry_description">
25328               <p>The shading map is a low-resolution floating-point map
25329 that lists the coefficients used to correct for vignetting,<wbr/> for each
25330 Bayer color channel.<wbr/></p>
25331             </td>
25332
25333             <td class="entry_units">
25334             </td>
25335
25336             <td class="entry_range">
25337               <p>Each gain factor is &gt;= 1</p>
25338             </td>
25339
25340             <td class="entry_hal_version">
25341               <p>3.<wbr/>2</p>
25342             </td>
25343
25344             <td class="entry_tags">
25345             </td>
25346
25347           </tr>
25348           <tr class="entries_header">
25349             <th class="th_details" colspan="6">Details</th>
25350           </tr>
25351           <tr class="entry_cont">
25352             <td class="entry_details" colspan="6">
25353               <p>The map provided here is the same map that is used by the camera device to
25354 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25355 <p>When there is no lens shading correction applied to RAW
25356 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25357 false),<wbr/> this map is the complete lens shading correction
25358 map; when there is some lens shading correction applied to
25359 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
25360 correction map that needs to be applied to get shading
25361 corrected images that match the camera device's output for
25362 non-RAW formats.<wbr/></p>
25363 <p>For a complete shading correction map,<wbr/> the least shaded
25364 section of the image will have a gain factor of 1; all
25365 other sections will have gains above 1.<wbr/></p>
25366 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25367 will take into account the colorCorrection settings.<wbr/></p>
25368 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25369 affected by the crop region specified in the request.<wbr/> Each shading map
25370 entry is the value of the shading compensation map over a specific
25371 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
25372 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25373 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25374 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25375 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25376 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25377 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25378 The shading map is stored in a fully interleaved format.<wbr/></p>
25379 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25380 and will be smaller than 64x64.<wbr/></p>
25381 <p>As an example,<wbr/> given a very small map defined as:</p>
25382 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
25383 values =
25384 [ 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/>
25385     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/>
25386   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/>
25387     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/>
25388   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/>
25389     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 ]
25390 </code></pre>
25391 <p>The low-resolution scaling map images for each channel are
25392 (displayed using nearest-neighbor interpolation):</p>
25393 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25394 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25395 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25396 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25397 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25398 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
25399 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25400             </td>
25401           </tr>
25402
25403
25404           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25405            <!-- end of entry -->
25406         
25407                 
25408           <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
25409             <td class="entry_name
25410              " rowspan="5">
25411               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
25412             </td>
25413             <td class="entry_type">
25414                 <span class="entry_type_name">float</span>
25415                 <span class="entry_type_container">x</span>
25416
25417                 <span class="entry_type_array">
25418                   4 x n x m
25419                 </span>
25420               <span class="entry_type_visibility"> [ndk_public]</span>
25421
25422
25423               <span class="entry_type_hwlevel">[full] </span>
25424
25425
25426                 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
25427
25428
25429             </td> <!-- entry_type -->
25430
25431             <td class="entry_description">
25432               <p>The shading map is a low-resolution floating-point map
25433 that lists the coefficients used to correct for vignetting and color shading,<wbr/>
25434 for each Bayer color channel of RAW image data.<wbr/></p>
25435             </td>
25436
25437             <td class="entry_units">
25438             </td>
25439
25440             <td class="entry_range">
25441               <p>Each gain factor is &gt;= 1</p>
25442             </td>
25443
25444             <td class="entry_hal_version">
25445               <p>3.<wbr/>2</p>
25446             </td>
25447
25448             <td class="entry_tags">
25449             </td>
25450
25451           </tr>
25452           <tr class="entries_header">
25453             <th class="th_details" colspan="6">Details</th>
25454           </tr>
25455           <tr class="entry_cont">
25456             <td class="entry_details" colspan="6">
25457               <p>The map provided here is the same map that is used by the camera device to
25458 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25459 <p>When there is no lens shading correction applied to RAW
25460 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25461 false),<wbr/> this map is the complete lens shading correction
25462 map; when there is some lens shading correction applied to
25463 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
25464 correction map that needs to be applied to get shading
25465 corrected images that match the camera device's output for
25466 non-RAW formats.<wbr/></p>
25467 <p>For a complete shading correction map,<wbr/> the least shaded
25468 section of the image will have a gain factor of 1; all
25469 other sections will have gains above 1.<wbr/></p>
25470 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25471 will take into account the colorCorrection settings.<wbr/></p>
25472 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25473 affected by the crop region specified in the request.<wbr/> Each shading map
25474 entry is the value of the shading compensation map over a specific
25475 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
25476 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25477 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25478 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25479 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25480 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25481 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25482 The shading map is stored in a fully interleaved format,<wbr/> and its size
25483 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>
25484 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25485 and will be smaller than 64x64.<wbr/></p>
25486 <p>As an example,<wbr/> given a very small map defined as:</p>
25487 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
25488 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
25489 [ 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/>
25490     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/>
25491   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/>
25492     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/>
25493   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/>
25494     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 ]
25495 </code></pre>
25496 <p>The low-resolution scaling map images for each channel are
25497 (displayed using nearest-neighbor interpolation):</p>
25498 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25499 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25500 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25501 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25502 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25503 image of a gray wall (using bicubic interpolation for visual quality)
25504 as captured by the sensor gives:</p>
25505 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25506 <p>Note that the RAW image data might be subject to lens shading
25507 correction not reported on this map.<wbr/> Query
25508 <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
25509 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>
25510 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
25511 correction.<wbr/> In the case full lens shading correction is applied to RAW
25512 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
25513 In other words,<wbr/> the map reported in this key is the remaining lens shading
25514 that needs to be applied on the RAW image to get images without lens shading
25515 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
25516 formats.<wbr/></p>
25517             </td>
25518           </tr>
25519
25520           <tr class="entries_header">
25521             <th class="th_details" colspan="6">HAL Implementation Details</th>
25522           </tr>
25523           <tr class="entry_cont">
25524             <td class="entry_details" colspan="6">
25525               <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
25526 When AE and AWB are in AUTO modes
25527 (<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
25528 may have all the information it need to generate most accurate lens shading map.<wbr/> When
25529 AE or AWB are in manual mode
25530 (<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
25531 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
25532 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
25533 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
25534             </td>
25535           </tr>
25536
25537           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25538            <!-- end of entry -->
25539         
25540                 
25541           <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
25542             <td class="entry_name
25543                 entry_name_deprecated
25544              " rowspan="3">
25545               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
25546             </td>
25547             <td class="entry_type">
25548                 <span class="entry_type_name">float</span>
25549                 <span class="entry_type_container">x</span>
25550
25551                 <span class="entry_type_array">
25552                   4
25553                 </span>
25554               <span class="entry_type_visibility"> [hidden]</span>
25555
25556
25557
25558               <span class="entry_type_deprecated">[deprecated] </span>
25559
25560                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
25561
25562
25563             </td> <!-- entry_type -->
25564
25565             <td class="entry_description">
25566               <p>The best-fit color channel gains calculated
25567 by the camera device's statistics units for the current output frame.<wbr/></p>
25568             </td>
25569
25570             <td class="entry_units">
25571             </td>
25572
25573             <td class="entry_range">
25574               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25575             </td>
25576
25577             <td class="entry_hal_version">
25578               <p>3.<wbr/>2</p>
25579             </td>
25580
25581             <td class="entry_tags">
25582             </td>
25583
25584           </tr>
25585           <tr class="entries_header">
25586             <th class="th_details" colspan="6">Details</th>
25587           </tr>
25588           <tr class="entry_cont">
25589             <td class="entry_details" colspan="6">
25590               <p>This may be different than the gains used for this frame,<wbr/>
25591 since statistics processing on data from a new frame
25592 typically completes after the transform has already been
25593 applied to that frame.<wbr/></p>
25594 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
25595 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
25596 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25597 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25598             </td>
25599           </tr>
25600
25601
25602           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25603            <!-- end of entry -->
25604         
25605                 
25606           <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
25607             <td class="entry_name
25608                 entry_name_deprecated
25609              " rowspan="3">
25610               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
25611             </td>
25612             <td class="entry_type">
25613                 <span class="entry_type_name">rational</span>
25614                 <span class="entry_type_container">x</span>
25615
25616                 <span class="entry_type_array">
25617                   3 x 3
25618                 </span>
25619               <span class="entry_type_visibility"> [hidden]</span>
25620
25621
25622
25623               <span class="entry_type_deprecated">[deprecated] </span>
25624
25625                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
25626
25627
25628             </td> <!-- entry_type -->
25629
25630             <td class="entry_description">
25631               <p>The best-fit color transform matrix estimate
25632 calculated by the camera device's statistics units for the current
25633 output frame.<wbr/></p>
25634             </td>
25635
25636             <td class="entry_units">
25637             </td>
25638
25639             <td class="entry_range">
25640               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25641             </td>
25642
25643             <td class="entry_hal_version">
25644               <p>3.<wbr/>2</p>
25645             </td>
25646
25647             <td class="entry_tags">
25648             </td>
25649
25650           </tr>
25651           <tr class="entries_header">
25652             <th class="th_details" colspan="6">Details</th>
25653           </tr>
25654           <tr class="entry_cont">
25655             <td class="entry_details" colspan="6">
25656               <p>The camera device will provide the estimate from its
25657 statistics unit on the white balance transforms to use
25658 for the next frame.<wbr/> These are the values the camera device believes
25659 are the best fit for the current output frame.<wbr/> This may
25660 be different than the transform used for this frame,<wbr/> since
25661 statistics processing on data from a new frame typically
25662 completes after the transform has already been applied to
25663 that frame.<wbr/></p>
25664 <p>These estimates must be provided for all frames,<wbr/> even if
25665 capture settings and color transforms are set by the application.<wbr/></p>
25666 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25667 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25668             </td>
25669           </tr>
25670
25671
25672           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25673            <!-- end of entry -->
25674         
25675                 
25676           <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
25677             <td class="entry_name
25678              " rowspan="3">
25679               android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
25680             </td>
25681             <td class="entry_type">
25682                 <span class="entry_type_name entry_type_name_enum">byte</span>
25683
25684               <span class="entry_type_visibility"> [public]</span>
25685
25686
25687               <span class="entry_type_hwlevel">[full] </span>
25688
25689
25690
25691                 <ul class="entry_type_enum">
25692                   <li>
25693                     <span class="entry_type_enum_name">NONE (v3.2)</span>
25694                     <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
25695 in the current scene.<wbr/></p></span>
25696                   </li>
25697                   <li>
25698                     <span class="entry_type_enum_name">50HZ (v3.2)</span>
25699                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
25700 in the current scene.<wbr/></p></span>
25701                   </li>
25702                   <li>
25703                     <span class="entry_type_enum_name">60HZ (v3.2)</span>
25704                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
25705 in the current scene.<wbr/></p></span>
25706                   </li>
25707                 </ul>
25708
25709             </td> <!-- entry_type -->
25710
25711             <td class="entry_description">
25712               <p>The camera device estimated scene illumination lighting
25713 frequency.<wbr/></p>
25714             </td>
25715
25716             <td class="entry_units">
25717             </td>
25718
25719             <td class="entry_range">
25720             </td>
25721
25722             <td class="entry_hal_version">
25723               <p>3.<wbr/>2</p>
25724             </td>
25725
25726             <td class="entry_tags">
25727             </td>
25728
25729           </tr>
25730           <tr class="entries_header">
25731             <th class="th_details" colspan="6">Details</th>
25732           </tr>
25733           <tr class="entry_cont">
25734             <td class="entry_details" colspan="6">
25735               <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
25736 that depends on the local utility power standards.<wbr/> This flicker must be
25737 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
25738 The camera device uses this entry to tell the application what the scene
25739 illuminant frequency is.<wbr/></p>
25740 <p>When manual exposure control is enabled
25741 (<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> ==
25742 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
25743 antibanding,<wbr/> and the application can ensure it selects
25744 exposure times that do not cause banding issues by looking
25745 into this metadata field.<wbr/> See
25746 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
25747 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
25748             </td>
25749           </tr>
25750
25751
25752           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25753            <!-- end of entry -->
25754         
25755                 
25756           <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
25757             <td class="entry_name
25758              " rowspan="3">
25759               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
25760             </td>
25761             <td class="entry_type">
25762                 <span class="entry_type_name entry_type_name_enum">byte</span>
25763
25764               <span class="entry_type_visibility"> [public as boolean]</span>
25765
25766
25767
25768
25769
25770                 <ul class="entry_type_enum">
25771                   <li>
25772                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25773                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
25774                   </li>
25775                   <li>
25776                     <span class="entry_type_enum_name">ON (v3.2)</span>
25777                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
25778                   </li>
25779                 </ul>
25780
25781             </td> <!-- entry_type -->
25782
25783             <td class="entry_description">
25784               <p>Operating mode for hot pixel map generation.<wbr/></p>
25785             </td>
25786
25787             <td class="entry_units">
25788             </td>
25789
25790             <td class="entry_range">
25791               <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>
25792             </td>
25793
25794             <td class="entry_hal_version">
25795               <p>3.<wbr/>2</p>
25796             </td>
25797
25798             <td class="entry_tags">
25799               <ul class="entry_tags">
25800                   <li><a href="#tag_V1">V1</a></li>
25801                   <li><a href="#tag_RAW">RAW</a></li>
25802               </ul>
25803             </td>
25804
25805           </tr>
25806           <tr class="entries_header">
25807             <th class="th_details" colspan="6">Details</th>
25808           </tr>
25809           <tr class="entry_cont">
25810             <td class="entry_details" colspan="6">
25811               <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/>
25812 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
25813             </td>
25814           </tr>
25815
25816
25817           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25818            <!-- end of entry -->
25819         
25820                 
25821           <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
25822             <td class="entry_name
25823              " rowspan="5">
25824               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
25825             </td>
25826             <td class="entry_type">
25827                 <span class="entry_type_name">int32</span>
25828                 <span class="entry_type_container">x</span>
25829
25830                 <span class="entry_type_array">
25831                   2 x n
25832                 </span>
25833               <span class="entry_type_visibility"> [public as point]</span>
25834
25835
25836
25837
25838                 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
25839
25840
25841             </td> <!-- entry_type -->
25842
25843             <td class="entry_description">
25844               <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
25845             </td>
25846
25847             <td class="entry_units">
25848             </td>
25849
25850             <td class="entry_range">
25851               <p>n &lt;= number of pixels on the sensor.<wbr/>
25852 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
25853 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25854             </td>
25855
25856             <td class="entry_hal_version">
25857               <p>3.<wbr/>2</p>
25858             </td>
25859
25860             <td class="entry_tags">
25861               <ul class="entry_tags">
25862                   <li><a href="#tag_V1">V1</a></li>
25863                   <li><a href="#tag_RAW">RAW</a></li>
25864               </ul>
25865             </td>
25866
25867           </tr>
25868           <tr class="entries_header">
25869             <th class="th_details" colspan="6">Details</th>
25870           </tr>
25871           <tr class="entry_cont">
25872             <td class="entry_details" colspan="6">
25873               <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
25874 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
25875 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
25876 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/>
25877 This may include hot pixels that lie outside of the active array
25878 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25879             </td>
25880           </tr>
25881
25882           <tr class="entries_header">
25883             <th class="th_details" colspan="6">HAL Implementation Details</th>
25884           </tr>
25885           <tr class="entry_cont">
25886             <td class="entry_details" colspan="6">
25887               <p>A hotpixel map contains the coordinates of pixels on the camera
25888 sensor that do report valid values (usually due to defects in
25889 the camera sensor).<wbr/> This includes pixels that are stuck at certain
25890 values,<wbr/> or have a response that does not accuractly encode the
25891 incoming light from the scene.<wbr/></p>
25892 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
25893 pixels than actual pixels on the camera sensor.<wbr/></p>
25894             </td>
25895           </tr>
25896
25897           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25898            <!-- end of entry -->
25899         
25900                 
25901           <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
25902             <td class="entry_name
25903              " rowspan="3">
25904               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
25905             </td>
25906             <td class="entry_type">
25907                 <span class="entry_type_name entry_type_name_enum">byte</span>
25908
25909               <span class="entry_type_visibility"> [public]</span>
25910
25911
25912               <span class="entry_type_hwlevel">[full] </span>
25913
25914
25915
25916                 <ul class="entry_type_enum">
25917                   <li>
25918                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25919                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
25920                   </li>
25921                   <li>
25922                     <span class="entry_type_enum_name">ON (v3.2)</span>
25923                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
25924                   </li>
25925                 </ul>
25926
25927             </td> <!-- entry_type -->
25928
25929             <td class="entry_description">
25930               <p>Whether the camera device will output the lens
25931 shading map in output result metadata.<wbr/></p>
25932             </td>
25933
25934             <td class="entry_units">
25935             </td>
25936
25937             <td class="entry_range">
25938               <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>
25939             </td>
25940
25941             <td class="entry_hal_version">
25942               <p>3.<wbr/>2</p>
25943             </td>
25944
25945             <td class="entry_tags">
25946               <ul class="entry_tags">
25947                   <li><a href="#tag_RAW">RAW</a></li>
25948               </ul>
25949             </td>
25950
25951           </tr>
25952           <tr class="entries_header">
25953             <th class="th_details" colspan="6">Details</th>
25954           </tr>
25955           <tr class="entry_cont">
25956             <td class="entry_details" colspan="6">
25957               <p>When set to ON,<wbr/>
25958 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
25959 the output result metadata.<wbr/></p>
25960 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
25961             </td>
25962           </tr>
25963
25964
25965           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25966            <!-- end of entry -->
25967         
25968                 
25969           <tr class="entry" id="dynamic_android.statistics.oisDataMode">
25970             <td class="entry_name
25971              " rowspan="3">
25972               android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
25973             </td>
25974             <td class="entry_type">
25975                 <span class="entry_type_name entry_type_name_enum">byte</span>
25976
25977               <span class="entry_type_visibility"> [public]</span>
25978
25979
25980
25981
25982
25983                 <ul class="entry_type_enum">
25984                   <li>
25985                     <span class="entry_type_enum_name">OFF (v3.3)</span>
25986                     <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
25987                   </li>
25988                   <li>
25989                     <span class="entry_type_enum_name">ON (v3.3)</span>
25990                     <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
25991                   </li>
25992                 </ul>
25993
25994             </td> <!-- entry_type -->
25995
25996             <td class="entry_description">
25997               <p>A control for selecting whether OIS position information is included in output
25998 result metadata.<wbr/></p>
25999             </td>
26000
26001             <td class="entry_units">
26002             </td>
26003
26004             <td class="entry_range">
26005               <p>android.<wbr/>Statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</p>
26006             </td>
26007
26008             <td class="entry_hal_version">
26009               <p>3.<wbr/>3</p>
26010             </td>
26011
26012             <td class="entry_tags">
26013             </td>
26014
26015           </tr>
26016           <tr class="entries_header">
26017             <th class="th_details" colspan="6">Details</th>
26018           </tr>
26019           <tr class="entry_cont">
26020             <td class="entry_details" colspan="6">
26021               <p>When set to ON,<wbr/>
26022 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>,<wbr/> android.<wbr/>statistics.<wbr/>ois<wbr/>Shift<wbr/>Pixel<wbr/>X,<wbr/>
26023 and android.<wbr/>statistics.<wbr/>ois<wbr/>Shift<wbr/>Pixel<wbr/>Y provide OIS data in the output result metadata.<wbr/></p>
26024             </td>
26025           </tr>
26026
26027
26028           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26029            <!-- end of entry -->
26030         
26031                 
26032           <tr class="entry" id="dynamic_android.statistics.oisTimestamps">
26033             <td class="entry_name
26034              " rowspan="3">
26035               android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps
26036             </td>
26037             <td class="entry_type">
26038                 <span class="entry_type_name">int64</span>
26039                 <span class="entry_type_container">x</span>
26040
26041                 <span class="entry_type_array">
26042                   n
26043                 </span>
26044               <span class="entry_type_visibility"> [public]</span>
26045
26046
26047
26048
26049
26050
26051             </td> <!-- entry_type -->
26052
26053             <td class="entry_description">
26054               <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p>
26055             </td>
26056
26057             <td class="entry_units">
26058               nanoseconds
26059             </td>
26060
26061             <td class="entry_range">
26062             </td>
26063
26064             <td class="entry_hal_version">
26065               <p>3.<wbr/>3</p>
26066             </td>
26067
26068             <td class="entry_tags">
26069             </td>
26070
26071           </tr>
26072           <tr class="entries_header">
26073             <th class="th_details" colspan="6">Details</th>
26074           </tr>
26075           <tr class="entry_cont">
26076             <td class="entry_details" colspan="6">
26077               <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same
26078 timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p>
26079             </td>
26080           </tr>
26081
26082
26083           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26084            <!-- end of entry -->
26085         
26086                 
26087           <tr class="entry" id="dynamic_android.statistics.oisXShifts">
26088             <td class="entry_name
26089              " rowspan="3">
26090               android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts
26091             </td>
26092             <td class="entry_type">
26093                 <span class="entry_type_name">float</span>
26094                 <span class="entry_type_container">x</span>
26095
26096                 <span class="entry_type_array">
26097                   n
26098                 </span>
26099               <span class="entry_type_visibility"> [public]</span>
26100
26101
26102
26103
26104
26105
26106             </td> <!-- entry_type -->
26107
26108             <td class="entry_description">
26109               <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p>
26110             </td>
26111
26112             <td class="entry_units">
26113               Pixels in active array.<wbr/>
26114             </td>
26115
26116             <td class="entry_range">
26117             </td>
26118
26119             <td class="entry_hal_version">
26120               <p>3.<wbr/>3</p>
26121             </td>
26122
26123             <td class="entry_tags">
26124             </td>
26125
26126           </tr>
26127           <tr class="entries_header">
26128             <th class="th_details" colspan="6">Details</th>
26129           </tr>
26130           <tr class="entry_cont">
26131             <td class="entry_details" colspan="6">
26132               <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26133 A positive value is a shift from left to right in active array coordinate system.<wbr/> For
26134 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> an shift of
26135 (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
26136 <p>The number of shifts must match the number of timestamps in
26137 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26138             </td>
26139           </tr>
26140
26141
26142           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26143            <!-- end of entry -->
26144         
26145                 
26146           <tr class="entry" id="dynamic_android.statistics.oisYShifts">
26147             <td class="entry_name
26148              " rowspan="3">
26149               android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts
26150             </td>
26151             <td class="entry_type">
26152                 <span class="entry_type_name">float</span>
26153                 <span class="entry_type_container">x</span>
26154
26155                 <span class="entry_type_array">
26156                   n
26157                 </span>
26158               <span class="entry_type_visibility"> [public]</span>
26159
26160
26161
26162
26163
26164
26165             </td> <!-- entry_type -->
26166
26167             <td class="entry_description">
26168               <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p>
26169             </td>
26170
26171             <td class="entry_units">
26172               Pixels in active array.<wbr/>
26173             </td>
26174
26175             <td class="entry_range">
26176             </td>
26177
26178             <td class="entry_hal_version">
26179               <p>3.<wbr/>3</p>
26180             </td>
26181
26182             <td class="entry_tags">
26183             </td>
26184
26185           </tr>
26186           <tr class="entries_header">
26187             <th class="th_details" colspan="6">Details</th>
26188           </tr>
26189           <tr class="entry_cont">
26190             <td class="entry_details" colspan="6">
26191               <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26192 A positive value is a shift from top to bottom in active array coordinate system.<wbr/> For
26193 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> an shift of
26194 (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
26195 <p>The number of shifts must match the number of timestamps in
26196 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26197             </td>
26198           </tr>
26199
26200
26201           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26202            <!-- end of entry -->
26203         
26204         
26205
26206       <!-- end of kind -->
26207       </tbody>
26208
26209   <!-- end of section -->
26210   <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
26211
26212
26213       <tr><td colspan="7" class="kind">controls</td></tr>
26214
26215       <thead class="entries_header">
26216         <tr>
26217           <th class="th_name">Property Name</th>
26218           <th class="th_type">Type</th>
26219           <th class="th_description">Description</th>
26220           <th class="th_units">Units</th>
26221           <th class="th_range">Range</th>
26222           <th class="th_hal_version">Initial HIDL HAL version</th>
26223           <th class="th_tags">Tags</th>
26224         </tr>
26225       </thead>
26226
26227       <tbody>
26228
26229         
26230
26231         
26232
26233         
26234
26235         
26236
26237                 
26238           <tr class="entry" id="controls_android.tonemap.curveBlue">
26239             <td class="entry_name
26240              " rowspan="3">
26241               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26242             </td>
26243             <td class="entry_type">
26244                 <span class="entry_type_name">float</span>
26245                 <span class="entry_type_container">x</span>
26246
26247                 <span class="entry_type_array">
26248                   n x 2
26249                 </span>
26250               <span class="entry_type_visibility"> [ndk_public]</span>
26251
26252
26253               <span class="entry_type_hwlevel">[full] </span>
26254
26255
26256                 <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div>
26257
26258
26259             </td> <!-- entry_type -->
26260
26261             <td class="entry_description">
26262               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
26263 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26264 CONTRAST_<wbr/>CURVE.<wbr/></p>
26265             </td>
26266
26267             <td class="entry_units">
26268             </td>
26269
26270             <td class="entry_range">
26271             </td>
26272
26273             <td class="entry_hal_version">
26274               <p>3.<wbr/>2</p>
26275             </td>
26276
26277             <td class="entry_tags">
26278             </td>
26279
26280           </tr>
26281           <tr class="entries_header">
26282             <th class="th_details" colspan="6">Details</th>
26283           </tr>
26284           <tr class="entry_cont">
26285             <td class="entry_details" colspan="6">
26286               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26287             </td>
26288           </tr>
26289
26290
26291           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26292            <!-- end of entry -->
26293         
26294                 
26295           <tr class="entry" id="controls_android.tonemap.curveGreen">
26296             <td class="entry_name
26297              " rowspan="3">
26298               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
26299             </td>
26300             <td class="entry_type">
26301                 <span class="entry_type_name">float</span>
26302                 <span class="entry_type_container">x</span>
26303
26304                 <span class="entry_type_array">
26305                   n x 2
26306                 </span>
26307               <span class="entry_type_visibility"> [ndk_public]</span>
26308
26309
26310               <span class="entry_type_hwlevel">[full] </span>
26311
26312
26313                 <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>
26314
26315
26316             </td> <!-- entry_type -->
26317
26318             <td class="entry_description">
26319               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
26320 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26321 CONTRAST_<wbr/>CURVE.<wbr/></p>
26322             </td>
26323
26324             <td class="entry_units">
26325             </td>
26326
26327             <td class="entry_range">
26328             </td>
26329
26330             <td class="entry_hal_version">
26331               <p>3.<wbr/>2</p>
26332             </td>
26333
26334             <td class="entry_tags">
26335             </td>
26336
26337           </tr>
26338           <tr class="entries_header">
26339             <th class="th_details" colspan="6">Details</th>
26340           </tr>
26341           <tr class="entry_cont">
26342             <td class="entry_details" colspan="6">
26343               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26344             </td>
26345           </tr>
26346
26347
26348           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26349            <!-- end of entry -->
26350         
26351                 
26352           <tr class="entry" id="controls_android.tonemap.curveRed">
26353             <td class="entry_name
26354              " rowspan="5">
26355               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
26356             </td>
26357             <td class="entry_type">
26358                 <span class="entry_type_name">float</span>
26359                 <span class="entry_type_container">x</span>
26360
26361                 <span class="entry_type_array">
26362                   n x 2
26363                 </span>
26364               <span class="entry_type_visibility"> [ndk_public]</span>
26365
26366
26367               <span class="entry_type_hwlevel">[full] </span>
26368
26369
26370                 <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>
26371
26372
26373             </td> <!-- entry_type -->
26374
26375             <td class="entry_description">
26376               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
26377 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26378 CONTRAST_<wbr/>CURVE.<wbr/></p>
26379             </td>
26380
26381             <td class="entry_units">
26382             </td>
26383
26384             <td class="entry_range">
26385               <p>0-1 on both input and output coordinates,<wbr/> normalized
26386 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
26387             </td>
26388
26389             <td class="entry_hal_version">
26390               <p>3.<wbr/>2</p>
26391             </td>
26392
26393             <td class="entry_tags">
26394             </td>
26395
26396           </tr>
26397           <tr class="entries_header">
26398             <th class="th_details" colspan="6">Details</th>
26399           </tr>
26400           <tr class="entry_cont">
26401             <td class="entry_details" colspan="6">
26402               <p>Each channel's curve is defined by an array of control points:</p>
26403 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
26404   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
26405 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26406 <p>These are sorted in order of increasing <code>Pin</code>; it is
26407 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26408 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26409 the camera device must linearly interpolate between the control
26410 points.<wbr/></p>
26411 <p>Each curve can have an independent number of points,<wbr/> and the number
26412 of points can be less than max (that is,<wbr/> the request doesn't have to
26413 always provide a curve with number of points equivalent to
26414 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26415 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26416 only specify the red channel and the precision is limited to 4
26417 digits,<wbr/> for conciseness.<wbr/></p>
26418 <p>Linear mapping:</p>
26419 <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 ]
26420 </code></pre>
26421 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26422 <p>Invert mapping:</p>
26423 <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 ]
26424 </code></pre>
26425 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26426 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26427 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26428   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/>
26429   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/>
26430   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/>
26431   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 ]
26432 </code></pre>
26433 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26434 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26435 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26436   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/>
26437   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/>
26438   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/>
26439   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 ]
26440 </code></pre>
26441 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26442             </td>
26443           </tr>
26444
26445           <tr class="entries_header">
26446             <th class="th_details" colspan="6">HAL Implementation Details</th>
26447           </tr>
26448           <tr class="entry_cont">
26449             <td class="entry_details" colspan="6">
26450               <p>For good quality of mapping,<wbr/> at least 128 control points are
26451 preferred.<wbr/></p>
26452 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
26453 control points used as are available.<wbr/></p>
26454             </td>
26455           </tr>
26456
26457           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26458            <!-- end of entry -->
26459         
26460                 
26461           <tr class="entry" id="controls_android.tonemap.curve">
26462             <td class="entry_name
26463              " rowspan="5">
26464               android.<wbr/>tonemap.<wbr/>curve
26465             </td>
26466             <td class="entry_type">
26467                 <span class="entry_type_name">float</span>
26468
26469               <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
26470
26471               <span class="entry_type_synthetic">[synthetic] </span>
26472
26473               <span class="entry_type_hwlevel">[full] </span>
26474
26475
26476
26477
26478             </td> <!-- entry_type -->
26479
26480             <td class="entry_description">
26481               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
26482 is CONTRAST_<wbr/>CURVE.<wbr/></p>
26483             </td>
26484
26485             <td class="entry_units">
26486             </td>
26487
26488             <td class="entry_range">
26489             </td>
26490
26491             <td class="entry_hal_version">
26492               <p>3.<wbr/>2</p>
26493             </td>
26494
26495             <td class="entry_tags">
26496             </td>
26497
26498           </tr>
26499           <tr class="entries_header">
26500             <th class="th_details" colspan="6">Details</th>
26501           </tr>
26502           <tr class="entry_cont">
26503             <td class="entry_details" colspan="6">
26504               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
26505 channels respectively.<wbr/> The following example uses the red channel as an
26506 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
26507 Each channel's curve is defined by an array of control points:</p>
26508 <pre><code>curveRed =
26509   [ 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) ]
26510 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26511 <p>These are sorted in order of increasing <code>Pin</code>; it is always
26512 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26513 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26514 the camera device must linearly interpolate between the control
26515 points.<wbr/></p>
26516 <p>Each curve can have an independent number of points,<wbr/> and the number
26517 of points can be less than max (that is,<wbr/> the request doesn't have to
26518 always provide a curve with number of points equivalent to
26519 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26520 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26521 only specify the red channel and the precision is limited to 4
26522 digits,<wbr/> for conciseness.<wbr/></p>
26523 <p>Linear mapping:</p>
26524 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
26525 </code></pre>
26526 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26527 <p>Invert mapping:</p>
26528 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
26529 </code></pre>
26530 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26531 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26532 <pre><code>curveRed = [
26533   (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/>
26534   (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/>
26535   (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/>
26536   (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) ]
26537 </code></pre>
26538 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26539 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26540 <pre><code>curveRed = [
26541   (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/>
26542   (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/>
26543   (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/>
26544   (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) ]
26545 </code></pre>
26546 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26547             </td>
26548           </tr>
26549
26550           <tr class="entries_header">
26551             <th class="th_details" colspan="6">HAL Implementation Details</th>
26552           </tr>
26553           <tr class="entry_cont">
26554             <td class="entry_details" colspan="6">
26555               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
26556 curveBlue entries.<wbr/></p>
26557             </td>
26558           </tr>
26559
26560           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26561            <!-- end of entry -->
26562         
26563                 
26564           <tr class="entry" id="controls_android.tonemap.mode">
26565             <td class="entry_name
26566              " rowspan="3">
26567               android.<wbr/>tonemap.<wbr/>mode
26568             </td>
26569             <td class="entry_type">
26570                 <span class="entry_type_name entry_type_name_enum">byte</span>
26571
26572               <span class="entry_type_visibility"> [public]</span>
26573
26574
26575               <span class="entry_type_hwlevel">[full] </span>
26576
26577
26578
26579                 <ul class="entry_type_enum">
26580                   <li>
26581                     <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
26582                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
26583 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
26584 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26585 for applying the tonemapping curve specified by
26586 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26587 <p>Must not slow down frame rate relative to raw
26588 sensor output.<wbr/></p></span>
26589                   </li>
26590                   <li>
26591                     <span class="entry_type_enum_name">FAST (v3.2)</span>
26592                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
26593 reducing frame rate compared to raw sensor output.<wbr/></p></span>
26594                   </li>
26595                   <li>
26596                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
26597                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
26598 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
26599                   </li>
26600                   <li>
26601                     <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
26602                     <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
26603 tonemapping.<wbr/></p>
26604 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26605 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
26606 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26607                   </li>
26608                   <li>
26609                     <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
26610                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
26611 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
26612 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26613 for applying the tonemapping curve specified by
26614 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
26615 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26616                   </li>
26617                 </ul>
26618
26619             </td> <!-- entry_type -->
26620
26621             <td class="entry_description">
26622               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
26623             </td>
26624
26625             <td class="entry_units">
26626             </td>
26627
26628             <td class="entry_range">
26629               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
26630             </td>
26631
26632             <td class="entry_hal_version">
26633               <p>3.<wbr/>2</p>
26634             </td>
26635
26636             <td class="entry_tags">
26637             </td>
26638
26639           </tr>
26640           <tr class="entries_header">
26641             <th class="th_details" colspan="6">Details</th>
26642           </tr>
26643           <tr class="entry_cont">
26644             <td class="entry_details" colspan="6">
26645               <p>When switching to an application-defined contrast curve by setting
26646 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
26647 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
26648 mapping from input high-bit-depth pixel value to the output
26649 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
26650 and output may change depending on the camera pipeline,<wbr/> the values
26651 are specified by normalized floating-point numbers.<wbr/></p>
26652 <p>More-complex color mapping operations such as 3D color look-up
26653 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
26654 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26655 CONTRAST_<wbr/>CURVE.<wbr/></p>
26656 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
26657 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
26658 These values are always available,<wbr/> and as close as possible to the
26659 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
26660 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
26661 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
26662 roughly the same.<wbr/></p>
26663             </td>
26664           </tr>
26665
26666
26667           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26668            <!-- end of entry -->
26669         
26670                 
26671           <tr class="entry" id="controls_android.tonemap.gamma">
26672             <td class="entry_name
26673              " rowspan="3">
26674               android.<wbr/>tonemap.<wbr/>gamma
26675             </td>
26676             <td class="entry_type">
26677                 <span class="entry_type_name">float</span>
26678
26679               <span class="entry_type_visibility"> [public]</span>
26680
26681
26682
26683
26684
26685
26686             </td> <!-- entry_type -->
26687
26688             <td class="entry_description">
26689               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26690 GAMMA_<wbr/>VALUE</p>
26691             </td>
26692
26693             <td class="entry_units">
26694             </td>
26695
26696             <td class="entry_range">
26697             </td>
26698
26699             <td class="entry_hal_version">
26700               <p>3.<wbr/>2</p>
26701             </td>
26702
26703             <td class="entry_tags">
26704             </td>
26705
26706           </tr>
26707           <tr class="entries_header">
26708             <th class="th_details" colspan="6">Details</th>
26709           </tr>
26710           <tr class="entry_cont">
26711             <td class="entry_details" colspan="6">
26712               <p>The tonemap curve will be defined the following formula:
26713 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
26714 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
26715 pow is the power function and gamma is the gamma value specified by this
26716 key.<wbr/></p>
26717 <p>The same curve will be applied to all color channels.<wbr/> The camera device
26718 may clip the input gamma value to its supported range.<wbr/> The actual applied
26719 value will be returned in capture result.<wbr/></p>
26720 <p>The valid range of gamma value varies on different devices,<wbr/> but values
26721 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
26722             </td>
26723           </tr>
26724
26725
26726           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26727            <!-- end of entry -->
26728         
26729                 
26730           <tr class="entry" id="controls_android.tonemap.presetCurve">
26731             <td class="entry_name
26732              " rowspan="3">
26733               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
26734             </td>
26735             <td class="entry_type">
26736                 <span class="entry_type_name entry_type_name_enum">byte</span>
26737
26738               <span class="entry_type_visibility"> [public]</span>
26739
26740
26741
26742
26743
26744                 <ul class="entry_type_enum">
26745                   <li>
26746                     <span class="entry_type_enum_name">SRGB (v3.2)</span>
26747                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
26748                   </li>
26749                   <li>
26750                     <span class="entry_type_enum_name">REC709 (v3.2)</span>
26751                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
26752                   </li>
26753                 </ul>
26754
26755             </td> <!-- entry_type -->
26756
26757             <td class="entry_description">
26758               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26759 PRESET_<wbr/>CURVE</p>
26760             </td>
26761
26762             <td class="entry_units">
26763             </td>
26764
26765             <td class="entry_range">
26766             </td>
26767
26768             <td class="entry_hal_version">
26769               <p>3.<wbr/>2</p>
26770             </td>
26771
26772             <td class="entry_tags">
26773             </td>
26774
26775           </tr>
26776           <tr class="entries_header">
26777             <th class="th_details" colspan="6">Details</th>
26778           </tr>
26779           <tr class="entry_cont">
26780             <td class="entry_details" colspan="6">
26781               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
26782 <p>sRGB (approximated by 16 control points):</p>
26783 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26784 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
26785 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
26786 <p>Note that above figures show a 16 control points approximation of preset
26787 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
26788             </td>
26789           </tr>
26790
26791
26792           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26793            <!-- end of entry -->
26794         
26795         
26796
26797       <!-- end of kind -->
26798       </tbody>
26799       <tr><td colspan="7" class="kind">static</td></tr>
26800
26801       <thead class="entries_header">
26802         <tr>
26803           <th class="th_name">Property Name</th>
26804           <th class="th_type">Type</th>
26805           <th class="th_description">Description</th>
26806           <th class="th_units">Units</th>
26807           <th class="th_range">Range</th>
26808           <th class="th_hal_version">Initial HIDL HAL version</th>
26809           <th class="th_tags">Tags</th>
26810         </tr>
26811       </thead>
26812
26813       <tbody>
26814
26815         
26816
26817         
26818
26819         
26820
26821         
26822
26823                 
26824           <tr class="entry" id="static_android.tonemap.maxCurvePoints">
26825             <td class="entry_name
26826              " rowspan="5">
26827               android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
26828             </td>
26829             <td class="entry_type">
26830                 <span class="entry_type_name">int32</span>
26831
26832               <span class="entry_type_visibility"> [public]</span>
26833
26834
26835               <span class="entry_type_hwlevel">[full] </span>
26836
26837
26838
26839
26840             </td> <!-- entry_type -->
26841
26842             <td class="entry_description">
26843               <p>Maximum number of supported points in the
26844 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26845             </td>
26846
26847             <td class="entry_units">
26848             </td>
26849
26850             <td class="entry_range">
26851             </td>
26852
26853             <td class="entry_hal_version">
26854               <p>3.<wbr/>2</p>
26855             </td>
26856
26857             <td class="entry_tags">
26858             </td>
26859
26860           </tr>
26861           <tr class="entries_header">
26862             <th class="th_details" colspan="6">Details</th>
26863           </tr>
26864           <tr class="entry_cont">
26865             <td class="entry_details" colspan="6">
26866               <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
26867 less than this maximum,<wbr/> the camera device will resample the curve to its internal
26868 representation,<wbr/> using linear interpolation.<wbr/></p>
26869 <p>The output curves in the result metadata may have a different number
26870 of points than the input curves,<wbr/> and will represent the actual
26871 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
26872             </td>
26873           </tr>
26874
26875           <tr class="entries_header">
26876             <th class="th_details" colspan="6">HAL Implementation Details</th>
26877           </tr>
26878           <tr class="entry_cont">
26879             <td class="entry_details" colspan="6">
26880               <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
26881             </td>
26882           </tr>
26883
26884           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26885            <!-- end of entry -->
26886         
26887                 
26888           <tr class="entry" id="static_android.tonemap.availableToneMapModes">
26889             <td class="entry_name
26890              " rowspan="5">
26891               android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
26892             </td>
26893             <td class="entry_type">
26894                 <span class="entry_type_name">byte</span>
26895                 <span class="entry_type_container">x</span>
26896
26897                 <span class="entry_type_array">
26898                   n
26899                 </span>
26900               <span class="entry_type_visibility"> [public as enumList]</span>
26901
26902
26903               <span class="entry_type_hwlevel">[full] </span>
26904
26905
26906                 <div class="entry_type_notes">list of enums</div>
26907
26908
26909             </td> <!-- entry_type -->
26910
26911             <td class="entry_description">
26912               <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
26913 device.<wbr/></p>
26914             </td>
26915
26916             <td class="entry_units">
26917             </td>
26918
26919             <td class="entry_range">
26920               <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
26921             </td>
26922
26923             <td class="entry_hal_version">
26924               <p>3.<wbr/>2</p>
26925             </td>
26926
26927             <td class="entry_tags">
26928             </td>
26929
26930           </tr>
26931           <tr class="entries_header">
26932             <th class="th_details" colspan="6">Details</th>
26933           </tr>
26934           <tr class="entry_cont">
26935             <td class="entry_details" colspan="6">
26936               <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
26937 at least one of below mode combinations:</p>
26938 <ul>
26939 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
26940 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
26941 </ul>
26942 <p>This includes all FULL level devices.<wbr/></p>
26943             </td>
26944           </tr>
26945
26946           <tr class="entries_header">
26947             <th class="th_details" colspan="6">HAL Implementation Details</th>
26948           </tr>
26949           <tr class="entry_cont">
26950             <td class="entry_details" colspan="6">
26951               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
26952 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
26953 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
26954 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
26955             </td>
26956           </tr>
26957
26958           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26959            <!-- end of entry -->
26960         
26961         
26962
26963       <!-- end of kind -->
26964       </tbody>
26965       <tr><td colspan="7" class="kind">dynamic</td></tr>
26966
26967       <thead class="entries_header">
26968         <tr>
26969           <th class="th_name">Property Name</th>
26970           <th class="th_type">Type</th>
26971           <th class="th_description">Description</th>
26972           <th class="th_units">Units</th>
26973           <th class="th_range">Range</th>
26974           <th class="th_hal_version">Initial HIDL HAL version</th>
26975           <th class="th_tags">Tags</th>
26976         </tr>
26977       </thead>
26978
26979       <tbody>
26980
26981         
26982
26983         
26984
26985         
26986
26987         
26988
26989                 
26990           <tr class="entry" id="dynamic_android.tonemap.curveBlue">
26991             <td class="entry_name
26992              " rowspan="3">
26993               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26994             </td>
26995             <td class="entry_type">
26996                 <span class="entry_type_name">float</span>
26997                 <span class="entry_type_container">x</span>
26998
26999                 <span class="entry_type_array">
27000                   n x 2
27001                 </span>
27002               <span class="entry_type_visibility"> [ndk_public]</span>
27003
27004
27005               <span class="entry_type_hwlevel">[full] </span>
27006
27007
27008                 <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div>
27009
27010
27011             </td> <!-- entry_type -->
27012
27013             <td class="entry_description">
27014               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
27015 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27016 CONTRAST_<wbr/>CURVE.<wbr/></p>
27017             </td>
27018
27019             <td class="entry_units">
27020             </td>
27021
27022             <td class="entry_range">
27023             </td>
27024
27025             <td class="entry_hal_version">
27026               <p>3.<wbr/>2</p>
27027             </td>
27028
27029             <td class="entry_tags">
27030             </td>
27031
27032           </tr>
27033           <tr class="entries_header">
27034             <th class="th_details" colspan="6">Details</th>
27035           </tr>
27036           <tr class="entry_cont">
27037             <td class="entry_details" colspan="6">
27038               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27039             </td>
27040           </tr>
27041
27042
27043           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27044            <!-- end of entry -->
27045         
27046                 
27047           <tr class="entry" id="dynamic_android.tonemap.curveGreen">
27048             <td class="entry_name
27049              " rowspan="3">
27050               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
27051             </td>
27052             <td class="entry_type">
27053                 <span class="entry_type_name">float</span>
27054                 <span class="entry_type_container">x</span>
27055
27056                 <span class="entry_type_array">
27057                   n x 2
27058                 </span>
27059               <span class="entry_type_visibility"> [ndk_public]</span>
27060
27061
27062               <span class="entry_type_hwlevel">[full] </span>
27063
27064
27065                 <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>
27066
27067
27068             </td> <!-- entry_type -->
27069
27070             <td class="entry_description">
27071               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
27072 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27073 CONTRAST_<wbr/>CURVE.<wbr/></p>
27074             </td>
27075
27076             <td class="entry_units">
27077             </td>
27078
27079             <td class="entry_range">
27080             </td>
27081
27082             <td class="entry_hal_version">
27083               <p>3.<wbr/>2</p>
27084             </td>
27085
27086             <td class="entry_tags">
27087             </td>
27088
27089           </tr>
27090           <tr class="entries_header">
27091             <th class="th_details" colspan="6">Details</th>
27092           </tr>
27093           <tr class="entry_cont">
27094             <td class="entry_details" colspan="6">
27095               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27096             </td>
27097           </tr>
27098
27099
27100           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27101            <!-- end of entry -->
27102         
27103                 
27104           <tr class="entry" id="dynamic_android.tonemap.curveRed">
27105             <td class="entry_name
27106              " rowspan="5">
27107               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
27108             </td>
27109             <td class="entry_type">
27110                 <span class="entry_type_name">float</span>
27111                 <span class="entry_type_container">x</span>
27112
27113                 <span class="entry_type_array">
27114                   n x 2
27115                 </span>
27116               <span class="entry_type_visibility"> [ndk_public]</span>
27117
27118
27119               <span class="entry_type_hwlevel">[full] </span>
27120
27121
27122                 <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>
27123
27124
27125             </td> <!-- entry_type -->
27126
27127             <td class="entry_description">
27128               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
27129 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27130 CONTRAST_<wbr/>CURVE.<wbr/></p>
27131             </td>
27132
27133             <td class="entry_units">
27134             </td>
27135
27136             <td class="entry_range">
27137               <p>0-1 on both input and output coordinates,<wbr/> normalized
27138 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
27139             </td>
27140
27141             <td class="entry_hal_version">
27142               <p>3.<wbr/>2</p>
27143             </td>
27144
27145             <td class="entry_tags">
27146             </td>
27147
27148           </tr>
27149           <tr class="entries_header">
27150             <th class="th_details" colspan="6">Details</th>
27151           </tr>
27152           <tr class="entry_cont">
27153             <td class="entry_details" colspan="6">
27154               <p>Each channel's curve is defined by an array of control points:</p>
27155 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
27156   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
27157 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27158 <p>These are sorted in order of increasing <code>Pin</code>; it is
27159 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27160 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27161 the camera device must linearly interpolate between the control
27162 points.<wbr/></p>
27163 <p>Each curve can have an independent number of points,<wbr/> and the number
27164 of points can be less than max (that is,<wbr/> the request doesn't have to
27165 always provide a curve with number of points equivalent to
27166 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27167 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27168 only specify the red channel and the precision is limited to 4
27169 digits,<wbr/> for conciseness.<wbr/></p>
27170 <p>Linear mapping:</p>
27171 <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 ]
27172 </code></pre>
27173 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27174 <p>Invert mapping:</p>
27175 <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 ]
27176 </code></pre>
27177 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27178 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27179 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27180   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/>
27181   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/>
27182   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/>
27183   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 ]
27184 </code></pre>
27185 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27186 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27187 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27188   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/>
27189   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/>
27190   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/>
27191   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 ]
27192 </code></pre>
27193 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27194             </td>
27195           </tr>
27196
27197           <tr class="entries_header">
27198             <th class="th_details" colspan="6">HAL Implementation Details</th>
27199           </tr>
27200           <tr class="entry_cont">
27201             <td class="entry_details" colspan="6">
27202               <p>For good quality of mapping,<wbr/> at least 128 control points are
27203 preferred.<wbr/></p>
27204 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
27205 control points used as are available.<wbr/></p>
27206             </td>
27207           </tr>
27208
27209           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27210            <!-- end of entry -->
27211         
27212                 
27213           <tr class="entry" id="dynamic_android.tonemap.curve">
27214             <td class="entry_name
27215              " rowspan="5">
27216               android.<wbr/>tonemap.<wbr/>curve
27217             </td>
27218             <td class="entry_type">
27219                 <span class="entry_type_name">float</span>
27220
27221               <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
27222
27223               <span class="entry_type_synthetic">[synthetic] </span>
27224
27225               <span class="entry_type_hwlevel">[full] </span>
27226
27227
27228
27229
27230             </td> <!-- entry_type -->
27231
27232             <td class="entry_description">
27233               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
27234 is CONTRAST_<wbr/>CURVE.<wbr/></p>
27235             </td>
27236
27237             <td class="entry_units">
27238             </td>
27239
27240             <td class="entry_range">
27241             </td>
27242
27243             <td class="entry_hal_version">
27244               <p>3.<wbr/>2</p>
27245             </td>
27246
27247             <td class="entry_tags">
27248             </td>
27249
27250           </tr>
27251           <tr class="entries_header">
27252             <th class="th_details" colspan="6">Details</th>
27253           </tr>
27254           <tr class="entry_cont">
27255             <td class="entry_details" colspan="6">
27256               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
27257 channels respectively.<wbr/> The following example uses the red channel as an
27258 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
27259 Each channel's curve is defined by an array of control points:</p>
27260 <pre><code>curveRed =
27261   [ 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) ]
27262 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27263 <p>These are sorted in order of increasing <code>Pin</code>; it is always
27264 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27265 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27266 the camera device must linearly interpolate between the control
27267 points.<wbr/></p>
27268 <p>Each curve can have an independent number of points,<wbr/> and the number
27269 of points can be less than max (that is,<wbr/> the request doesn't have to
27270 always provide a curve with number of points equivalent to
27271 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27272 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27273 only specify the red channel and the precision is limited to 4
27274 digits,<wbr/> for conciseness.<wbr/></p>
27275 <p>Linear mapping:</p>
27276 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
27277 </code></pre>
27278 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27279 <p>Invert mapping:</p>
27280 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
27281 </code></pre>
27282 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27283 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27284 <pre><code>curveRed = [
27285   (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/>
27286   (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/>
27287   (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/>
27288   (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) ]
27289 </code></pre>
27290 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27291 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27292 <pre><code>curveRed = [
27293   (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/>
27294   (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/>
27295   (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/>
27296   (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) ]
27297 </code></pre>
27298 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27299             </td>
27300           </tr>
27301
27302           <tr class="entries_header">
27303             <th class="th_details" colspan="6">HAL Implementation Details</th>
27304           </tr>
27305           <tr class="entry_cont">
27306             <td class="entry_details" colspan="6">
27307               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
27308 curveBlue entries.<wbr/></p>
27309             </td>
27310           </tr>
27311
27312           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27313            <!-- end of entry -->
27314         
27315                 
27316           <tr class="entry" id="dynamic_android.tonemap.mode">
27317             <td class="entry_name
27318              " rowspan="3">
27319               android.<wbr/>tonemap.<wbr/>mode
27320             </td>
27321             <td class="entry_type">
27322                 <span class="entry_type_name entry_type_name_enum">byte</span>
27323
27324               <span class="entry_type_visibility"> [public]</span>
27325
27326
27327               <span class="entry_type_hwlevel">[full] </span>
27328
27329
27330
27331                 <ul class="entry_type_enum">
27332                   <li>
27333                     <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
27334                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
27335 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
27336 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27337 for applying the tonemapping curve specified by
27338 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
27339 <p>Must not slow down frame rate relative to raw
27340 sensor output.<wbr/></p></span>
27341                   </li>
27342                   <li>
27343                     <span class="entry_type_enum_name">FAST (v3.2)</span>
27344                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
27345 reducing frame rate compared to raw sensor output.<wbr/></p></span>
27346                   </li>
27347                   <li>
27348                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
27349                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
27350 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
27351                   </li>
27352                   <li>
27353                     <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
27354                     <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
27355 tonemapping.<wbr/></p>
27356 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27357 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
27358 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27359                   </li>
27360                   <li>
27361                     <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
27362                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
27363 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
27364 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27365 for applying the tonemapping curve specified by
27366 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
27367 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27368                   </li>
27369                 </ul>
27370
27371             </td> <!-- entry_type -->
27372
27373             <td class="entry_description">
27374               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
27375             </td>
27376
27377             <td class="entry_units">
27378             </td>
27379
27380             <td class="entry_range">
27381               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
27382             </td>
27383
27384             <td class="entry_hal_version">
27385               <p>3.<wbr/>2</p>
27386             </td>
27387
27388             <td class="entry_tags">
27389             </td>
27390
27391           </tr>
27392           <tr class="entries_header">
27393             <th class="th_details" colspan="6">Details</th>
27394           </tr>
27395           <tr class="entry_cont">
27396             <td class="entry_details" colspan="6">
27397               <p>When switching to an application-defined contrast curve by setting
27398 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
27399 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
27400 mapping from input high-bit-depth pixel value to the output
27401 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
27402 and output may change depending on the camera pipeline,<wbr/> the values
27403 are specified by normalized floating-point numbers.<wbr/></p>
27404 <p>More-complex color mapping operations such as 3D color look-up
27405 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
27406 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27407 CONTRAST_<wbr/>CURVE.<wbr/></p>
27408 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
27409 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
27410 These values are always available,<wbr/> and as close as possible to the
27411 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
27412 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
27413 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
27414 roughly the same.<wbr/></p>
27415             </td>
27416           </tr>
27417
27418
27419           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27420            <!-- end of entry -->
27421         
27422                 
27423           <tr class="entry" id="dynamic_android.tonemap.gamma">
27424             <td class="entry_name
27425              " rowspan="3">
27426               android.<wbr/>tonemap.<wbr/>gamma
27427             </td>
27428             <td class="entry_type">
27429                 <span class="entry_type_name">float</span>
27430
27431               <span class="entry_type_visibility"> [public]</span>
27432
27433
27434
27435
27436
27437
27438             </td> <!-- entry_type -->
27439
27440             <td class="entry_description">
27441               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27442 GAMMA_<wbr/>VALUE</p>
27443             </td>
27444
27445             <td class="entry_units">
27446             </td>
27447
27448             <td class="entry_range">
27449             </td>
27450
27451             <td class="entry_hal_version">
27452               <p>3.<wbr/>2</p>
27453             </td>
27454
27455             <td class="entry_tags">
27456             </td>
27457
27458           </tr>
27459           <tr class="entries_header">
27460             <th class="th_details" colspan="6">Details</th>
27461           </tr>
27462           <tr class="entry_cont">
27463             <td class="entry_details" colspan="6">
27464               <p>The tonemap curve will be defined the following formula:
27465 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
27466 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
27467 pow is the power function and gamma is the gamma value specified by this
27468 key.<wbr/></p>
27469 <p>The same curve will be applied to all color channels.<wbr/> The camera device
27470 may clip the input gamma value to its supported range.<wbr/> The actual applied
27471 value will be returned in capture result.<wbr/></p>
27472 <p>The valid range of gamma value varies on different devices,<wbr/> but values
27473 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
27474             </td>
27475           </tr>
27476
27477
27478           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27479            <!-- end of entry -->
27480         
27481                 
27482           <tr class="entry" id="dynamic_android.tonemap.presetCurve">
27483             <td class="entry_name
27484              " rowspan="3">
27485               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
27486             </td>
27487             <td class="entry_type">
27488                 <span class="entry_type_name entry_type_name_enum">byte</span>
27489
27490               <span class="entry_type_visibility"> [public]</span>
27491
27492
27493
27494
27495
27496                 <ul class="entry_type_enum">
27497                   <li>
27498                     <span class="entry_type_enum_name">SRGB (v3.2)</span>
27499                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
27500                   </li>
27501                   <li>
27502                     <span class="entry_type_enum_name">REC709 (v3.2)</span>
27503                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
27504                   </li>
27505                 </ul>
27506
27507             </td> <!-- entry_type -->
27508
27509             <td class="entry_description">
27510               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27511 PRESET_<wbr/>CURVE</p>
27512             </td>
27513
27514             <td class="entry_units">
27515             </td>
27516
27517             <td class="entry_range">
27518             </td>
27519
27520             <td class="entry_hal_version">
27521               <p>3.<wbr/>2</p>
27522             </td>
27523
27524             <td class="entry_tags">
27525             </td>
27526
27527           </tr>
27528           <tr class="entries_header">
27529             <th class="th_details" colspan="6">Details</th>
27530           </tr>
27531           <tr class="entry_cont">
27532             <td class="entry_details" colspan="6">
27533               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
27534 <p>sRGB (approximated by 16 control points):</p>
27535 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27536 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
27537 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
27538 <p>Note that above figures show a 16 control points approximation of preset
27539 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
27540             </td>
27541           </tr>
27542
27543
27544           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27545            <!-- end of entry -->
27546         
27547         
27548
27549       <!-- end of kind -->
27550       </tbody>
27551
27552   <!-- end of section -->
27553   <tr><td colspan="7" id="section_led" class="section">led</td></tr>
27554
27555
27556       <tr><td colspan="7" class="kind">controls</td></tr>
27557
27558       <thead class="entries_header">
27559         <tr>
27560           <th class="th_name">Property Name</th>
27561           <th class="th_type">Type</th>
27562           <th class="th_description">Description</th>
27563           <th class="th_units">Units</th>
27564           <th class="th_range">Range</th>
27565           <th class="th_hal_version">Initial HIDL HAL version</th>
27566           <th class="th_tags">Tags</th>
27567         </tr>
27568       </thead>
27569
27570       <tbody>
27571
27572         
27573
27574         
27575
27576         
27577
27578         
27579
27580                 
27581           <tr class="entry" id="controls_android.led.transmit">
27582             <td class="entry_name
27583              " rowspan="1">
27584               android.<wbr/>led.<wbr/>transmit
27585             </td>
27586             <td class="entry_type">
27587                 <span class="entry_type_name entry_type_name_enum">byte</span>
27588
27589               <span class="entry_type_visibility"> [hidden as boolean]</span>
27590
27591
27592
27593
27594
27595                 <ul class="entry_type_enum">
27596                   <li>
27597                     <span class="entry_type_enum_name">OFF (v3.2)</span>
27598                   </li>
27599                   <li>
27600                     <span class="entry_type_enum_name">ON (v3.2)</span>
27601                   </li>
27602                 </ul>
27603
27604             </td> <!-- entry_type -->
27605
27606             <td class="entry_description">
27607               <p>This LED is nominally used to indicate to the user
27608 that the camera is powered on and may be streaming images back to the
27609 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27610 disable this when video is processed locally and not transmitted to
27611 any untrusted applications.<wbr/></p>
27612 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27613 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27614 data is stored locally on the device.<wbr/></p>
27615 <p>The LED <em>may</em> be off if a trusted application is using the data that
27616 doesn't violate the above rules.<wbr/></p>
27617             </td>
27618
27619             <td class="entry_units">
27620             </td>
27621
27622             <td class="entry_range">
27623             </td>
27624
27625             <td class="entry_hal_version">
27626               <p>3.<wbr/>2</p>
27627             </td>
27628
27629             <td class="entry_tags">
27630             </td>
27631
27632           </tr>
27633
27634
27635           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27636            <!-- end of entry -->
27637         
27638         
27639
27640       <!-- end of kind -->
27641       </tbody>
27642       <tr><td colspan="7" class="kind">dynamic</td></tr>
27643
27644       <thead class="entries_header">
27645         <tr>
27646           <th class="th_name">Property Name</th>
27647           <th class="th_type">Type</th>
27648           <th class="th_description">Description</th>
27649           <th class="th_units">Units</th>
27650           <th class="th_range">Range</th>
27651           <th class="th_hal_version">Initial HIDL HAL version</th>
27652           <th class="th_tags">Tags</th>
27653         </tr>
27654       </thead>
27655
27656       <tbody>
27657
27658         
27659
27660         
27661
27662         
27663
27664         
27665
27666                 
27667           <tr class="entry" id="dynamic_android.led.transmit">
27668             <td class="entry_name
27669              " rowspan="1">
27670               android.<wbr/>led.<wbr/>transmit
27671             </td>
27672             <td class="entry_type">
27673                 <span class="entry_type_name entry_type_name_enum">byte</span>
27674
27675               <span class="entry_type_visibility"> [hidden as boolean]</span>
27676
27677
27678
27679
27680
27681                 <ul class="entry_type_enum">
27682                   <li>
27683                     <span class="entry_type_enum_name">OFF (v3.2)</span>
27684                   </li>
27685                   <li>
27686                     <span class="entry_type_enum_name">ON (v3.2)</span>
27687                   </li>
27688                 </ul>
27689
27690             </td> <!-- entry_type -->
27691
27692             <td class="entry_description">
27693               <p>This LED is nominally used to indicate to the user
27694 that the camera is powered on and may be streaming images back to the
27695 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27696 disable this when video is processed locally and not transmitted to
27697 any untrusted applications.<wbr/></p>
27698 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27699 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27700 data is stored locally on the device.<wbr/></p>
27701 <p>The LED <em>may</em> be off if a trusted application is using the data that
27702 doesn't violate the above rules.<wbr/></p>
27703             </td>
27704
27705             <td class="entry_units">
27706             </td>
27707
27708             <td class="entry_range">
27709             </td>
27710
27711             <td class="entry_hal_version">
27712               <p>3.<wbr/>2</p>
27713             </td>
27714
27715             <td class="entry_tags">
27716             </td>
27717
27718           </tr>
27719
27720
27721           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27722            <!-- end of entry -->
27723         
27724         
27725
27726       <!-- end of kind -->
27727       </tbody>
27728       <tr><td colspan="7" class="kind">static</td></tr>
27729
27730       <thead class="entries_header">
27731         <tr>
27732           <th class="th_name">Property Name</th>
27733           <th class="th_type">Type</th>
27734           <th class="th_description">Description</th>
27735           <th class="th_units">Units</th>
27736           <th class="th_range">Range</th>
27737           <th class="th_hal_version">Initial HIDL HAL version</th>
27738           <th class="th_tags">Tags</th>
27739         </tr>
27740       </thead>
27741
27742       <tbody>
27743
27744         
27745
27746         
27747
27748         
27749
27750         
27751
27752                 
27753           <tr class="entry" id="static_android.led.availableLeds">
27754             <td class="entry_name
27755              " rowspan="1">
27756               android.<wbr/>led.<wbr/>available<wbr/>Leds
27757             </td>
27758             <td class="entry_type">
27759                 <span class="entry_type_name entry_type_name_enum">byte</span>
27760                 <span class="entry_type_container">x</span>
27761
27762                 <span class="entry_type_array">
27763                   n
27764                 </span>
27765               <span class="entry_type_visibility"> [hidden]</span>
27766
27767
27768
27769
27770
27771                 <ul class="entry_type_enum">
27772                   <li>
27773                     <span class="entry_type_enum_name">TRANSMIT (v3.2)</span>
27774                     <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>
27775                   </li>
27776                 </ul>
27777
27778             </td> <!-- entry_type -->
27779
27780             <td class="entry_description">
27781               <p>A list of camera LEDs that are available on this system.<wbr/></p>
27782             </td>
27783
27784             <td class="entry_units">
27785             </td>
27786
27787             <td class="entry_range">
27788             </td>
27789
27790             <td class="entry_hal_version">
27791               <p>3.<wbr/>2</p>
27792             </td>
27793
27794             <td class="entry_tags">
27795             </td>
27796
27797           </tr>
27798
27799
27800           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27801            <!-- end of entry -->
27802         
27803         
27804
27805       <!-- end of kind -->
27806       </tbody>
27807
27808   <!-- end of section -->
27809   <tr><td colspan="7" id="section_info" class="section">info</td></tr>
27810
27811
27812       <tr><td colspan="7" class="kind">static</td></tr>
27813
27814       <thead class="entries_header">
27815         <tr>
27816           <th class="th_name">Property Name</th>
27817           <th class="th_type">Type</th>
27818           <th class="th_description">Description</th>
27819           <th class="th_units">Units</th>
27820           <th class="th_range">Range</th>
27821           <th class="th_hal_version">Initial HIDL HAL version</th>
27822           <th class="th_tags">Tags</th>
27823         </tr>
27824       </thead>
27825
27826       <tbody>
27827
27828         
27829
27830         
27831
27832         
27833
27834         
27835
27836                 
27837           <tr class="entry" id="static_android.info.supportedHardwareLevel">
27838             <td class="entry_name
27839              " rowspan="5">
27840               android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
27841             </td>
27842             <td class="entry_type">
27843                 <span class="entry_type_name entry_type_name_enum">byte</span>
27844
27845               <span class="entry_type_visibility"> [public]</span>
27846
27847
27848               <span class="entry_type_hwlevel">[legacy] </span>
27849
27850
27851
27852                 <ul class="entry_type_enum">
27853                   <li>
27854                     <span class="entry_type_enum_name">LIMITED (v3.2)</span>
27855                     <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
27856 better.<wbr/></p>
27857 <p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
27858 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27859 <p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
27860 support for color image capture.<wbr/> The only exception is that the device may
27861 alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
27862 measurements and not color images.<wbr/></p>
27863 <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>
27864 to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
27865 capturing a high-quality still image.<wbr/></p>
27866 <p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
27867 required to support full-automatic operation and post-processing (<code>OFF</code> is not
27868 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
27869 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
27870 <p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
27871 can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
27872                   </li>
27873                   <li>
27874                     <span class="entry_type_enum_name">FULL (v3.2)</span>
27875                     <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
27876 <p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
27877 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27878 <p>A <code>FULL</code> device will support below capabilities:</p>
27879 <ul>
27880 <li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27881   <code>BURST_<wbr/>CAPTURE</code>)</li>
27882 <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>
27883 <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>
27884 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27885   <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
27886 <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>
27887 <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>
27888 </ul>
27889 <p>Note:
27890 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
27891 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
27892 23,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
27893                   </li>
27894                   <li>
27895                     <span class="entry_type_enum_name">LEGACY (v3.2)</span>
27896                     <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
27897 <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>
27898 <p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
27899 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
27900 No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
27901 <code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
27902 <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>
27903 devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
27904 as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/>  This may
27905 fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
27906 for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
27907 enable the flash.<wbr/></p></span>
27908                   </li>
27909                   <li>
27910                     <span class="entry_type_enum_name">3 (v3.2)</span>
27911                     <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
27912 FULL-level capabilities.<wbr/></p>
27913 <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
27914 <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>
27915 <p>The following additional capabilities are guaranteed to be supported:</p>
27916 <ul>
27917 <li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27918   <code>YUV_<wbr/>REPROCESSING</code>)</li>
27919 <li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27920   <code>RAW</code>)</li>
27921 </ul></span>
27922                   </li>
27923                   <li>
27924                     <span class="entry_type_enum_name">EXTERNAL (v3.3)</span>
27925                     <span class="entry_type_enum_notes"><p>This camera device is backed by an external camera connected to this Android device.<wbr/></p>
27926 <p>The device has capability identical to a LIMITED level device,<wbr/> with the following
27927 exceptions:</p>
27928 <ul>
27929 <li>The device may not report lens/<wbr/>sensor related information such as<ul>
27930 <li><a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a></li>
27931 <li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li>
27932 <li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li>
27933 <li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li>
27934 <li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li>
27935 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li>
27936 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a></li>
27937 </ul>
27938 </li>
27939 <li>The device will report 0 for <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a></li>
27940 <li>The device has less guarantee on stable framerate,<wbr/> as the framerate partly depends
27941   on the external camera being used.<wbr/></li>
27942 </ul></span>
27943                   </li>
27944                 </ul>
27945
27946             </td> <!-- entry_type -->
27947
27948             <td class="entry_description">
27949               <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
27950             </td>
27951
27952             <td class="entry_units">
27953             </td>
27954
27955             <td class="entry_range">
27956             </td>
27957
27958             <td class="entry_hal_version">
27959               <p>3.<wbr/>2</p>
27960             </td>
27961
27962             <td class="entry_tags">
27963             </td>
27964
27965           </tr>
27966           <tr class="entries_header">
27967             <th class="th_details" colspan="6">Details</th>
27968           </tr>
27969           <tr class="entry_cont">
27970             <td class="entry_details" colspan="6">
27971               <p>The supported hardware level is a high-level description of the camera device's
27972 capabilities,<wbr/> summarizing several capabilities into one field.<wbr/>  Each level adds additional
27973 features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
27974 The ordering is <code>LEGACY &lt; LIMITED &lt; FULL &lt; LEVEL_<wbr/>3</code>.<wbr/></p>
27975 <p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
27976 numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
27977 the following code snippet can be used:</p>
27978 <pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
27979 boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
27980     int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
27981     if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
27982         return requiredLevel == deviceLevel;
27983     }
27984     //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
27985     return requiredLevel &lt;= deviceLevel;
27986 }
27987 </code></pre>
27988 <p>At a high level,<wbr/> the levels are:</p>
27989 <ul>
27990 <li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
27991   Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
27992 <li><code>LIMITED</code> devices represent the
27993   baseline feature set,<wbr/> and may also include additional capabilities that are
27994   subsets of <code>FULL</code>.<wbr/></li>
27995 <li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
27996   post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
27997 <li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
27998   with additional output stream configurations.<wbr/></li>
27999 </ul>
28000 <p>See the individual level enums for full descriptions of the supported capabilities.<wbr/>  The
28001 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
28002 finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
28003 ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
28004 <p>Some features are not part of any particular hardware level or capability and must be
28005 queried separately.<wbr/> These include:</p>
28006 <ul>
28007 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
28008 <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>
28009 <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>
28010 <li>Optical or electrical image stabilization
28011   (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
28012    <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
28013 </ul>
28014             </td>
28015           </tr>
28016
28017           <tr class="entries_header">
28018             <th class="th_details" colspan="6">HAL Implementation Details</th>
28019           </tr>
28020           <tr class="entry_cont">
28021             <td class="entry_details" colspan="6">
28022               <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
28023 FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
28024 <p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
28025 mode has hardware requirements roughly in line with those for a camera HAL device v1
28026 implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
28027 superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
28028 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
28029 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
28030 the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
28031 implemented by the camera framework code.<wbr/></p>
28032 <p>EXTERNAL level devices have lower peformance bar in CTS since the peformance might depend
28033 on the external camera being used and is not fully controlled by the device manufacturer.<wbr/>
28034 The ITS test suite is exempted for the same reason.<wbr/></p>
28035             </td>
28036           </tr>
28037
28038           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28039            <!-- end of entry -->
28040         
28041                 
28042           <tr class="entry" id="static_android.info.version">
28043             <td class="entry_name
28044              " rowspan="5">
28045               android.<wbr/>info.<wbr/>version
28046             </td>
28047             <td class="entry_type">
28048                 <span class="entry_type_name">byte</span>
28049
28050               <span class="entry_type_visibility"> [public as string]</span>
28051
28052
28053
28054
28055
28056
28057             </td> <!-- entry_type -->
28058
28059             <td class="entry_description">
28060               <p>A short string for manufacturer version information about the camera device,<wbr/> such as
28061 ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p>
28062             </td>
28063
28064             <td class="entry_units">
28065             </td>
28066
28067             <td class="entry_range">
28068             </td>
28069
28070             <td class="entry_hal_version">
28071               <p>3.<wbr/>3</p>
28072             </td>
28073
28074             <td class="entry_tags">
28075             </td>
28076
28077           </tr>
28078           <tr class="entries_header">
28079             <th class="th_details" colspan="6">Details</th>
28080           </tr>
28081           <tr class="entry_cont">
28082             <td class="entry_details" colspan="6">
28083               <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>
28084 in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the
28085 device.<wbr/></p>
28086             </td>
28087           </tr>
28088
28089           <tr class="entries_header">
28090             <th class="th_details" colspan="6">HAL Implementation Details</th>
28091           </tr>
28092           <tr class="entry_cont">
28093             <td class="entry_details" colspan="6">
28094               <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and
28095 whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/>
28096 It must not exceed 256 characters.<wbr/></p>
28097             </td>
28098           </tr>
28099
28100           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28101            <!-- end of entry -->
28102         
28103         
28104
28105       <!-- end of kind -->
28106       </tbody>
28107
28108   <!-- end of section -->
28109   <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
28110
28111
28112       <tr><td colspan="7" class="kind">controls</td></tr>
28113
28114       <thead class="entries_header">
28115         <tr>
28116           <th class="th_name">Property Name</th>
28117           <th class="th_type">Type</th>
28118           <th class="th_description">Description</th>
28119           <th class="th_units">Units</th>
28120           <th class="th_range">Range</th>
28121           <th class="th_hal_version">Initial HIDL HAL version</th>
28122           <th class="th_tags">Tags</th>
28123         </tr>
28124       </thead>
28125
28126       <tbody>
28127
28128         
28129
28130         
28131
28132         
28133
28134         
28135
28136                 
28137           <tr class="entry" id="controls_android.blackLevel.lock">
28138             <td class="entry_name
28139              " rowspan="5">
28140               android.<wbr/>black<wbr/>Level.<wbr/>lock
28141             </td>
28142             <td class="entry_type">
28143                 <span class="entry_type_name entry_type_name_enum">byte</span>
28144
28145               <span class="entry_type_visibility"> [public as boolean]</span>
28146
28147
28148               <span class="entry_type_hwlevel">[full] </span>
28149
28150
28151
28152                 <ul class="entry_type_enum">
28153                   <li>
28154                     <span class="entry_type_enum_name">OFF (v3.2)</span>
28155                   </li>
28156                   <li>
28157                     <span class="entry_type_enum_name">ON (v3.2)</span>
28158                   </li>
28159                 </ul>
28160
28161             </td> <!-- entry_type -->
28162
28163             <td class="entry_description">
28164               <p>Whether black-level compensation is locked
28165 to its current values,<wbr/> or is free to vary.<wbr/></p>
28166             </td>
28167
28168             <td class="entry_units">
28169             </td>
28170
28171             <td class="entry_range">
28172             </td>
28173
28174             <td class="entry_hal_version">
28175               <p>3.<wbr/>2</p>
28176             </td>
28177
28178             <td class="entry_tags">
28179               <ul class="entry_tags">
28180                   <li><a href="#tag_HAL2">HAL2</a></li>
28181               </ul>
28182             </td>
28183
28184           </tr>
28185           <tr class="entries_header">
28186             <th class="th_details" colspan="6">Details</th>
28187           </tr>
28188           <tr class="entry_cont">
28189             <td class="entry_details" colspan="6">
28190               <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
28191 compensation will not change until the lock is set to
28192 <code>false</code> (OFF).<wbr/></p>
28193 <p>Since changes to certain capture parameters (such as
28194 exposure time) may require resetting of black level
28195 compensation,<wbr/> the camera device must report whether setting
28196 the black level lock was successful in the output result
28197 metadata.<wbr/></p>
28198 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
28199 <ul>
28200 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28201 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28202 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28203 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28204 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28205 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28206 </ul>
28207 <p>And the exposure change in Request 4 requires the camera
28208 device to reset the black level offsets,<wbr/> then the output
28209 result metadata is expected to be:</p>
28210 <ul>
28211 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28212 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28213 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28214 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
28215 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28216 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28217 </ul>
28218 <p>This indicates to the application that on frame 4,<wbr/> black
28219 levels were reset due to exposure value changes,<wbr/> and pixel
28220 values may not be consistent across captures.<wbr/></p>
28221 <p>The camera device will maintain the lock to the extent
28222 possible,<wbr/> only overriding the lock to OFF when changes to
28223 other request parameters require a black level recalculation
28224 or reset.<wbr/></p>
28225             </td>
28226           </tr>
28227
28228           <tr class="entries_header">
28229             <th class="th_details" colspan="6">HAL Implementation Details</th>
28230           </tr>
28231           <tr class="entry_cont">
28232             <td class="entry_details" colspan="6">
28233               <p>If for some reason black level locking is no longer possible
28234 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28235 black level offsets to be recalculated),<wbr/> then the HAL must
28236 override this request (and it must report 'OFF' when this
28237 does happen) until the next capture for which locking is
28238 possible again.<wbr/></p>
28239             </td>
28240           </tr>
28241
28242           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28243            <!-- end of entry -->
28244         
28245         
28246
28247       <!-- end of kind -->
28248       </tbody>
28249       <tr><td colspan="7" class="kind">dynamic</td></tr>
28250
28251       <thead class="entries_header">
28252         <tr>
28253           <th class="th_name">Property Name</th>
28254           <th class="th_type">Type</th>
28255           <th class="th_description">Description</th>
28256           <th class="th_units">Units</th>
28257           <th class="th_range">Range</th>
28258           <th class="th_hal_version">Initial HIDL HAL version</th>
28259           <th class="th_tags">Tags</th>
28260         </tr>
28261       </thead>
28262
28263       <tbody>
28264
28265         
28266
28267         
28268
28269         
28270
28271         
28272
28273                 
28274           <tr class="entry" id="dynamic_android.blackLevel.lock">
28275             <td class="entry_name
28276              " rowspan="5">
28277               android.<wbr/>black<wbr/>Level.<wbr/>lock
28278             </td>
28279             <td class="entry_type">
28280                 <span class="entry_type_name entry_type_name_enum">byte</span>
28281
28282               <span class="entry_type_visibility"> [public as boolean]</span>
28283
28284
28285               <span class="entry_type_hwlevel">[full] </span>
28286
28287
28288
28289                 <ul class="entry_type_enum">
28290                   <li>
28291                     <span class="entry_type_enum_name">OFF (v3.2)</span>
28292                   </li>
28293                   <li>
28294                     <span class="entry_type_enum_name">ON (v3.2)</span>
28295                   </li>
28296                 </ul>
28297
28298             </td> <!-- entry_type -->
28299
28300             <td class="entry_description">
28301               <p>Whether black-level compensation is locked
28302 to its current values,<wbr/> or is free to vary.<wbr/></p>
28303             </td>
28304
28305             <td class="entry_units">
28306             </td>
28307
28308             <td class="entry_range">
28309             </td>
28310
28311             <td class="entry_hal_version">
28312               <p>3.<wbr/>2</p>
28313             </td>
28314
28315             <td class="entry_tags">
28316               <ul class="entry_tags">
28317                   <li><a href="#tag_HAL2">HAL2</a></li>
28318               </ul>
28319             </td>
28320
28321           </tr>
28322           <tr class="entries_header">
28323             <th class="th_details" colspan="6">Details</th>
28324           </tr>
28325           <tr class="entry_cont">
28326             <td class="entry_details" colspan="6">
28327               <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
28328 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
28329 a change in other capture settings forced the camera device to
28330 perform a black level reset.<wbr/></p>
28331             </td>
28332           </tr>
28333
28334           <tr class="entries_header">
28335             <th class="th_details" colspan="6">HAL Implementation Details</th>
28336           </tr>
28337           <tr class="entry_cont">
28338             <td class="entry_details" colspan="6">
28339               <p>If for some reason black level locking is no longer possible
28340 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28341 black level offsets to be recalculated),<wbr/> then the HAL must
28342 override this request (and it must report 'OFF' when this
28343 does happen) until the next capture for which locking is
28344 possible again.<wbr/></p>
28345             </td>
28346           </tr>
28347
28348           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28349            <!-- end of entry -->
28350         
28351         
28352
28353       <!-- end of kind -->
28354       </tbody>
28355
28356   <!-- end of section -->
28357   <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
28358
28359
28360       <tr><td colspan="7" class="kind">dynamic</td></tr>
28361
28362       <thead class="entries_header">
28363         <tr>
28364           <th class="th_name">Property Name</th>
28365           <th class="th_type">Type</th>
28366           <th class="th_description">Description</th>
28367           <th class="th_units">Units</th>
28368           <th class="th_range">Range</th>
28369           <th class="th_hal_version">Initial HIDL HAL version</th>
28370           <th class="th_tags">Tags</th>
28371         </tr>
28372       </thead>
28373
28374       <tbody>
28375
28376         
28377
28378         
28379
28380         
28381
28382         
28383
28384                 
28385           <tr class="entry" id="dynamic_android.sync.frameNumber">
28386             <td class="entry_name
28387              " rowspan="5">
28388               android.<wbr/>sync.<wbr/>frame<wbr/>Number
28389             </td>
28390             <td class="entry_type">
28391                 <span class="entry_type_name entry_type_name_enum">int64</span>
28392
28393               <span class="entry_type_visibility"> [ndk_public]</span>
28394
28395
28396               <span class="entry_type_hwlevel">[legacy] </span>
28397
28398
28399
28400                 <ul class="entry_type_enum">
28401                   <li>
28402                     <span class="entry_type_enum_name">CONVERGING (v3.2)</span>
28403                     <span class="entry_type_enum_value">-1</span>
28404                     <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
28405 <p>Synchronization is in progress,<wbr/> and reading metadata from this
28406 result may include a mix of data that have taken effect since the
28407 last synchronization time.<wbr/></p>
28408 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
28409 this value will update to the actual frame number frame number
28410 the result is guaranteed to be synchronized to (as long as the
28411 request settings remain constant).<wbr/></p></span>
28412                   </li>
28413                   <li>
28414                     <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28415                     <span class="entry_type_enum_value">-2</span>
28416                     <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
28417 <p>The result may have already converged,<wbr/> or it may be in
28418 progress.<wbr/>  Reading from this result may include some mix
28419 of settings from past requests.<wbr/></p>
28420 <p>After a settings change,<wbr/> the new settings will eventually all
28421 take effect for the output buffers and results.<wbr/> However,<wbr/> this
28422 value will not change when that happens.<wbr/> Altering settings
28423 rapidly may provide outcomes using mixes of settings from recent
28424 requests.<wbr/></p>
28425 <p>This value is intended primarily for backwards compatibility with
28426 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
28427                   </li>
28428                 </ul>
28429
28430             </td> <!-- entry_type -->
28431
28432             <td class="entry_description">
28433               <p>The frame number corresponding to the last request
28434 with which the output result (metadata + buffers) has been fully
28435 synchronized.<wbr/></p>
28436             </td>
28437
28438             <td class="entry_units">
28439             </td>
28440
28441             <td class="entry_range">
28442               <p>Either a non-negative value corresponding to a
28443 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
28444             </td>
28445
28446             <td class="entry_hal_version">
28447               <p>3.<wbr/>2</p>
28448             </td>
28449
28450             <td class="entry_tags">
28451               <ul class="entry_tags">
28452                   <li><a href="#tag_V1">V1</a></li>
28453               </ul>
28454             </td>
28455
28456           </tr>
28457           <tr class="entries_header">
28458             <th class="th_details" colspan="6">Details</th>
28459           </tr>
28460           <tr class="entry_cont">
28461             <td class="entry_details" colspan="6">
28462               <p>When a request is submitted to the camera device,<wbr/> there is usually a
28463 delay of several frames before the controls get applied.<wbr/> A camera
28464 device may either choose to account for this delay by implementing a
28465 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
28466 it may start streaming control changes that span over several frame
28467 boundaries.<wbr/></p>
28468 <p>In the latter case,<wbr/> whenever a request's settings change relative to
28469 the previous submitted request,<wbr/> the full set of changes may take
28470 multiple frame durations to fully take effect.<wbr/> Some settings may
28471 take effect sooner (in less frame durations) than others.<wbr/></p>
28472 <p>While a set of control changes are being propagated,<wbr/> this value
28473 will be CONVERGING.<wbr/></p>
28474 <p>Once it is fully known that a set of control changes have been
28475 finished propagating,<wbr/> and the resulting updated control settings
28476 have been read back by the camera device,<wbr/> this value will be set
28477 to a non-negative frame number (corresponding to the request to
28478 which the results have synchronized to).<wbr/></p>
28479 <p>Older camera device implementations may not have a way to detect
28480 when all camera controls have been applied,<wbr/> and will always set this
28481 value to UNKNOWN.<wbr/></p>
28482 <p>FULL capability devices will always have this value set to the
28483 frame number of the request corresponding to this result.<wbr/></p>
28484 <p><em>Further details</em>:</p>
28485 <ul>
28486 <li>Whenever a request differs from the last request,<wbr/> any future
28487 results not yet returned may have this value set to CONVERGING (this
28488 could include any in-progress captures not yet returned by the camera
28489 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
28490 <li>Submitting a series of multiple requests that differ from the
28491 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
28492 moves the new synchronization frame to the last non-repeating
28493 request (using the smallest frame number from the contiguous list of
28494 repeating requests).<wbr/></li>
28495 <li>Submitting the same request repeatedly will not change this value
28496 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
28497 <li>When this value changes to non-negative,<wbr/> that means that all of the
28498 metadata controls from the request have been applied,<wbr/> all of the
28499 metadata controls from the camera device have been read to the
28500 updated values (into the result),<wbr/> and all of the graphics buffers
28501 corresponding to this result are also synchronized to the request.<wbr/></li>
28502 </ul>
28503 <p><em>Pipeline considerations</em>:</p>
28504 <p>Submitting a request with updated controls relative to the previously
28505 submitted requests may also invalidate the synchronization state
28506 of all the results corresponding to currently in-flight requests.<wbr/></p>
28507 <p>In other words,<wbr/> results for this current request and up to
28508 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
28509 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
28510             </td>
28511           </tr>
28512
28513           <tr class="entries_header">
28514             <th class="th_details" colspan="6">HAL Implementation Details</th>
28515           </tr>
28516           <tr class="entry_cont">
28517             <td class="entry_details" colspan="6">
28518               <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
28519 is also UNKNOWN.<wbr/></p>
28520 <p>FULL capability devices should simply set this value to the
28521 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
28522             </td>
28523           </tr>
28524
28525           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28526            <!-- end of entry -->
28527         
28528         
28529
28530       <!-- end of kind -->
28531       </tbody>
28532       <tr><td colspan="7" class="kind">static</td></tr>
28533
28534       <thead class="entries_header">
28535         <tr>
28536           <th class="th_name">Property Name</th>
28537           <th class="th_type">Type</th>
28538           <th class="th_description">Description</th>
28539           <th class="th_units">Units</th>
28540           <th class="th_range">Range</th>
28541           <th class="th_hal_version">Initial HIDL HAL version</th>
28542           <th class="th_tags">Tags</th>
28543         </tr>
28544       </thead>
28545
28546       <tbody>
28547
28548         
28549
28550         
28551
28552         
28553
28554         
28555
28556                 
28557           <tr class="entry" id="static_android.sync.maxLatency">
28558             <td class="entry_name
28559              " rowspan="5">
28560               android.<wbr/>sync.<wbr/>max<wbr/>Latency
28561             </td>
28562             <td class="entry_type">
28563                 <span class="entry_type_name entry_type_name_enum">int32</span>
28564
28565               <span class="entry_type_visibility"> [public]</span>
28566
28567
28568               <span class="entry_type_hwlevel">[legacy] </span>
28569
28570
28571
28572                 <ul class="entry_type_enum">
28573                   <li>
28574                     <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span>
28575                     <span class="entry_type_enum_value">0</span>
28576                     <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
28577 <p>Changing controls over multiple requests one after another will
28578 produce results that have those controls applied atomically
28579 each frame.<wbr/></p>
28580 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
28581                   </li>
28582                   <li>
28583                     <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28584                     <span class="entry_type_enum_value">-1</span>
28585                     <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
28586 of the past requests applied to the camera settings.<wbr/></p>
28587 <p>By submitting a series of identical requests,<wbr/> the camera device
28588 will eventually have the camera settings applied,<wbr/> but it is
28589 unknown when that exact point will be.<wbr/></p>
28590 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
28591                   </li>
28592                 </ul>
28593
28594             </td> <!-- entry_type -->
28595
28596             <td class="entry_description">
28597               <p>The maximum number of frames that can occur after a request
28598 (different than the previous) has been submitted,<wbr/> and before the
28599 result's state becomes synchronized.<wbr/></p>
28600             </td>
28601
28602             <td class="entry_units">
28603               Frame counts
28604             </td>
28605
28606             <td class="entry_range">
28607               <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
28608             </td>
28609
28610             <td class="entry_hal_version">
28611               <p>3.<wbr/>2</p>
28612             </td>
28613
28614             <td class="entry_tags">
28615               <ul class="entry_tags">
28616                   <li><a href="#tag_V1">V1</a></li>
28617               </ul>
28618             </td>
28619
28620           </tr>
28621           <tr class="entries_header">
28622             <th class="th_details" colspan="6">Details</th>
28623           </tr>
28624           <tr class="entry_cont">
28625             <td class="entry_details" colspan="6">
28626               <p>This defines the maximum distance (in number of metadata results),<wbr/>
28627 between the frame number of the request that has new controls to apply
28628 and the frame number of the result that has all the controls applied.<wbr/></p>
28629 <p>In other words this acts as an upper boundary for how many frames
28630 must occur before the camera device knows for a fact that the new
28631 submitted camera settings have been applied in outgoing frames.<wbr/></p>
28632             </td>
28633           </tr>
28634
28635           <tr class="entries_header">
28636             <th class="th_details" colspan="6">HAL Implementation Details</th>
28637           </tr>
28638           <tr class="entry_cont">
28639             <td class="entry_details" colspan="6">
28640               <p>For example if maxLatency was 2,<wbr/></p>
28641 <pre><code>initial request = X (repeating)
28642 request1 = X
28643 request2 = Y
28644 request3 = Y
28645 request4 = Y
28646
28647 where requestN has frameNumber N,<wbr/> and the first of the repeating
28648 initial request's has frameNumber F (and F &lt; 1).<wbr/>
28649
28650 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28651 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28652 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28653 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28654 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
28655
28656 where resultN has frameNumber N.<wbr/>
28657 </code></pre>
28658 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
28659 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
28660 <code>4 - 2 = 2</code>.<wbr/></p>
28661 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
28662 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
28663 <code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
28664 <p>LIMITED devices are strongly encouraged to use a non-negative
28665 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
28666 to know when sensor settings have been applied.<wbr/></p>
28667             </td>
28668           </tr>
28669
28670           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28671            <!-- end of entry -->
28672         
28673         
28674
28675       <!-- end of kind -->
28676       </tbody>
28677
28678   <!-- end of section -->
28679   <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
28680
28681
28682       <tr><td colspan="7" class="kind">controls</td></tr>
28683
28684       <thead class="entries_header">
28685         <tr>
28686           <th class="th_name">Property Name</th>
28687           <th class="th_type">Type</th>
28688           <th class="th_description">Description</th>
28689           <th class="th_units">Units</th>
28690           <th class="th_range">Range</th>
28691           <th class="th_hal_version">Initial HIDL HAL version</th>
28692           <th class="th_tags">Tags</th>
28693         </tr>
28694       </thead>
28695
28696       <tbody>
28697
28698         
28699
28700         
28701
28702         
28703
28704         
28705
28706                 
28707           <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
28708             <td class="entry_name
28709              " rowspan="3">
28710               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
28711             </td>
28712             <td class="entry_type">
28713                 <span class="entry_type_name">float</span>
28714
28715               <span class="entry_type_visibility"> [java_public]</span>
28716
28717
28718               <span class="entry_type_hwlevel">[limited] </span>
28719
28720
28721
28722
28723             </td> <!-- entry_type -->
28724
28725             <td class="entry_description">
28726               <p>The amount of exposure time increase factor applied to the original output
28727 frame by the application processing before sending for reprocessing.<wbr/></p>
28728             </td>
28729
28730             <td class="entry_units">
28731               Relative exposure time increase factor.<wbr/>
28732             </td>
28733
28734             <td class="entry_range">
28735               <p>&gt;= 1.<wbr/>0</p>
28736             </td>
28737
28738             <td class="entry_hal_version">
28739               <p>3.<wbr/>2</p>
28740             </td>
28741
28742             <td class="entry_tags">
28743               <ul class="entry_tags">
28744                   <li><a href="#tag_REPROC">REPROC</a></li>
28745               </ul>
28746             </td>
28747
28748           </tr>
28749           <tr class="entries_header">
28750             <th class="th_details" colspan="6">Details</th>
28751           </tr>
28752           <tr class="entry_cont">
28753             <td class="entry_details" colspan="6">
28754               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
28755 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
28756 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
28757 output frames to effectively reduce the noise to the same level as a frame that was
28758 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
28759 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
28760 the camera device is that the amount of noise in the image would be approximately what
28761 would be expected if the original capture parameters had been a sensitivity of
28762 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
28763 than S and T respectively.<wbr/> If the captured images were processed by the application
28764 before being sent for reprocessing,<wbr/> then the application may have used image processing
28765 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
28766 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
28767 control,<wbr/> the application can communicate to the camera device the actual noise level
28768 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
28769 device can select appropriate noise reduction and edge enhancement parameters to avoid
28770 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
28771 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
28772 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
28773 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
28774 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
28775 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
28776 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
28777 produce the best quality images.<wbr/></p>
28778 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
28779 buffer in a way that affects its effective exposure time.<wbr/></p>
28780 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
28781 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/>
28782 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
28783 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
28784             </td>
28785           </tr>
28786
28787
28788           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28789            <!-- end of entry -->
28790         
28791         
28792
28793       <!-- end of kind -->
28794       </tbody>
28795       <tr><td colspan="7" class="kind">dynamic</td></tr>
28796
28797       <thead class="entries_header">
28798         <tr>
28799           <th class="th_name">Property Name</th>
28800           <th class="th_type">Type</th>
28801           <th class="th_description">Description</th>
28802           <th class="th_units">Units</th>
28803           <th class="th_range">Range</th>
28804           <th class="th_hal_version">Initial HIDL HAL version</th>
28805           <th class="th_tags">Tags</th>
28806         </tr>
28807       </thead>
28808
28809       <tbody>
28810
28811         
28812
28813         
28814
28815         
28816
28817         
28818
28819                 
28820           <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
28821             <td class="entry_name
28822              " rowspan="3">
28823               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
28824             </td>
28825             <td class="entry_type">
28826                 <span class="entry_type_name">float</span>
28827
28828               <span class="entry_type_visibility"> [java_public]</span>
28829
28830
28831               <span class="entry_type_hwlevel">[limited] </span>
28832
28833
28834
28835
28836             </td> <!-- entry_type -->
28837
28838             <td class="entry_description">
28839               <p>The amount of exposure time increase factor applied to the original output
28840 frame by the application processing before sending for reprocessing.<wbr/></p>
28841             </td>
28842
28843             <td class="entry_units">
28844               Relative exposure time increase factor.<wbr/>
28845             </td>
28846
28847             <td class="entry_range">
28848               <p>&gt;= 1.<wbr/>0</p>
28849             </td>
28850
28851             <td class="entry_hal_version">
28852               <p>3.<wbr/>2</p>
28853             </td>
28854
28855             <td class="entry_tags">
28856               <ul class="entry_tags">
28857                   <li><a href="#tag_REPROC">REPROC</a></li>
28858               </ul>
28859             </td>
28860
28861           </tr>
28862           <tr class="entries_header">
28863             <th class="th_details" colspan="6">Details</th>
28864           </tr>
28865           <tr class="entry_cont">
28866             <td class="entry_details" colspan="6">
28867               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
28868 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
28869 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
28870 output frames to effectively reduce the noise to the same level as a frame that was
28871 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
28872 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
28873 the camera device is that the amount of noise in the image would be approximately what
28874 would be expected if the original capture parameters had been a sensitivity of
28875 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
28876 than S and T respectively.<wbr/> If the captured images were processed by the application
28877 before being sent for reprocessing,<wbr/> then the application may have used image processing
28878 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
28879 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
28880 control,<wbr/> the application can communicate to the camera device the actual noise level
28881 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
28882 device can select appropriate noise reduction and edge enhancement parameters to avoid
28883 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
28884 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
28885 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
28886 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
28887 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
28888 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
28889 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
28890 produce the best quality images.<wbr/></p>
28891 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
28892 buffer in a way that affects its effective exposure time.<wbr/></p>
28893 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
28894 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/>
28895 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
28896 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
28897             </td>
28898           </tr>
28899
28900
28901           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28902            <!-- end of entry -->
28903         
28904         
28905
28906       <!-- end of kind -->
28907       </tbody>
28908       <tr><td colspan="7" class="kind">static</td></tr>
28909
28910       <thead class="entries_header">
28911         <tr>
28912           <th class="th_name">Property Name</th>
28913           <th class="th_type">Type</th>
28914           <th class="th_description">Description</th>
28915           <th class="th_units">Units</th>
28916           <th class="th_range">Range</th>
28917           <th class="th_hal_version">Initial HIDL HAL version</th>
28918           <th class="th_tags">Tags</th>
28919         </tr>
28920       </thead>
28921
28922       <tbody>
28923
28924         
28925
28926         
28927
28928         
28929
28930         
28931
28932                 
28933           <tr class="entry" id="static_android.reprocess.maxCaptureStall">
28934             <td class="entry_name
28935              " rowspan="3">
28936               android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
28937             </td>
28938             <td class="entry_type">
28939                 <span class="entry_type_name">int32</span>
28940
28941               <span class="entry_type_visibility"> [java_public]</span>
28942
28943
28944               <span class="entry_type_hwlevel">[limited] </span>
28945
28946
28947
28948
28949             </td> <!-- entry_type -->
28950
28951             <td class="entry_description">
28952               <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
28953 reprocess capture request.<wbr/></p>
28954             </td>
28955
28956             <td class="entry_units">
28957               Number of frames.<wbr/>
28958             </td>
28959
28960             <td class="entry_range">
28961               <p>&lt;= 4</p>
28962             </td>
28963
28964             <td class="entry_hal_version">
28965               <p>3.<wbr/>2</p>
28966             </td>
28967
28968             <td class="entry_tags">
28969               <ul class="entry_tags">
28970                   <li><a href="#tag_REPROC">REPROC</a></li>
28971               </ul>
28972             </td>
28973
28974           </tr>
28975           <tr class="entries_header">
28976             <th class="th_details" colspan="6">Details</th>
28977           </tr>
28978           <tr class="entry_cont">
28979             <td class="entry_details" colspan="6">
28980               <p>The key describes the maximal interference that one reprocess (input) request
28981 can introduce to the camera simultaneous streaming of regular (output) capture
28982 requests,<wbr/> including repeating requests.<wbr/></p>
28983 <p>When a reprocessing capture request is submitted while a camera output repeating request
28984 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
28985 pipeline for at least one frame duration so that the camera device is unable to process
28986 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
28987 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
28988 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
28989 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
28990 the worst-case number of frame stall introduced by one reprocess request with any kind of
28991 formats/<wbr/>sizes combination.<wbr/></p>
28992 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
28993 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
28994 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
28995 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
28996 YUV_<wbr/>REPROCESSING).<wbr/></p>
28997             </td>
28998           </tr>
28999
29000
29001           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29002            <!-- end of entry -->
29003         
29004         
29005
29006       <!-- end of kind -->
29007       </tbody>
29008
29009   <!-- end of section -->
29010   <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
29011
29012
29013       <tr><td colspan="7" class="kind">static</td></tr>
29014
29015       <thead class="entries_header">
29016         <tr>
29017           <th class="th_name">Property Name</th>
29018           <th class="th_type">Type</th>
29019           <th class="th_description">Description</th>
29020           <th class="th_units">Units</th>
29021           <th class="th_range">Range</th>
29022           <th class="th_hal_version">Initial HIDL HAL version</th>
29023           <th class="th_tags">Tags</th>
29024         </tr>
29025       </thead>
29026
29027       <tbody>
29028
29029         
29030
29031         
29032
29033         
29034
29035         
29036
29037                 
29038           <tr class="entry" id="static_android.depth.maxDepthSamples">
29039             <td class="entry_name
29040              " rowspan="3">
29041               android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
29042             </td>
29043             <td class="entry_type">
29044                 <span class="entry_type_name">int32</span>
29045
29046               <span class="entry_type_visibility"> [system]</span>
29047
29048
29049               <span class="entry_type_hwlevel">[limited] </span>
29050
29051
29052
29053
29054             </td> <!-- entry_type -->
29055
29056             <td class="entry_description">
29057               <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
29058             </td>
29059
29060             <td class="entry_units">
29061             </td>
29062
29063             <td class="entry_range">
29064             </td>
29065
29066             <td class="entry_hal_version">
29067               <p>3.<wbr/>2</p>
29068             </td>
29069
29070             <td class="entry_tags">
29071               <ul class="entry_tags">
29072                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29073               </ul>
29074             </td>
29075
29076           </tr>
29077           <tr class="entries_header">
29078             <th class="th_details" colspan="6">Details</th>
29079           </tr>
29080           <tr class="entry_cont">
29081             <td class="entry_details" colspan="6">
29082               <p>If a camera device supports outputting depth range data in the form of a depth point
29083 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
29084 number of points an output buffer may contain.<wbr/></p>
29085 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
29086 If output in the depth point cloud format is not supported,<wbr/> this entry will
29087 not be defined.<wbr/></p>
29088             </td>
29089           </tr>
29090
29091
29092           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29093            <!-- end of entry -->
29094         
29095                 
29096           <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
29097             <td class="entry_name
29098              " rowspan="3">
29099               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
29100             </td>
29101             <td class="entry_type">
29102                 <span class="entry_type_name entry_type_name_enum">int32</span>
29103                 <span class="entry_type_container">x</span>
29104
29105                 <span class="entry_type_array">
29106                   n x 4
29107                 </span>
29108               <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
29109
29110
29111               <span class="entry_type_hwlevel">[limited] </span>
29112
29113
29114
29115                 <ul class="entry_type_enum">
29116                   <li>
29117                     <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
29118                   </li>
29119                   <li>
29120                     <span class="entry_type_enum_name">INPUT (v3.2)</span>
29121                   </li>
29122                 </ul>
29123
29124             </td> <!-- entry_type -->
29125
29126             <td class="entry_description">
29127               <p>The available depth dataspace stream
29128 configurations that this camera device supports
29129 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
29130             </td>
29131
29132             <td class="entry_units">
29133             </td>
29134
29135             <td class="entry_range">
29136             </td>
29137
29138             <td class="entry_hal_version">
29139               <p>3.<wbr/>2</p>
29140             </td>
29141
29142             <td class="entry_tags">
29143               <ul class="entry_tags">
29144                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29145               </ul>
29146             </td>
29147
29148           </tr>
29149           <tr class="entries_header">
29150             <th class="th_details" colspan="6">Details</th>
29151           </tr>
29152           <tr class="entry_cont">
29153             <td class="entry_details" colspan="6">
29154               <p>These are output stream configurations for use with
29155 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
29156 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
29157 <p>Only devices that support depth output for at least
29158 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
29159 this entry.<wbr/></p>
29160 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
29161 sparse depth point cloud must report a single entry for
29162 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
29163 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
29164 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
29165             </td>
29166           </tr>
29167
29168
29169           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29170            <!-- end of entry -->
29171         
29172                 
29173           <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
29174             <td class="entry_name
29175              " rowspan="3">
29176               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
29177             </td>
29178             <td class="entry_type">
29179                 <span class="entry_type_name">int64</span>
29180                 <span class="entry_type_container">x</span>
29181
29182                 <span class="entry_type_array">
29183                   4 x n
29184                 </span>
29185               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29186
29187
29188               <span class="entry_type_hwlevel">[limited] </span>
29189
29190
29191
29192
29193             </td> <!-- entry_type -->
29194
29195             <td class="entry_description">
29196               <p>This lists the minimum frame duration for each
29197 format/<wbr/>size combination for depth output formats.<wbr/></p>
29198             </td>
29199
29200             <td class="entry_units">
29201               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29202             </td>
29203
29204             <td class="entry_range">
29205             </td>
29206
29207             <td class="entry_hal_version">
29208               <p>3.<wbr/>2</p>
29209             </td>
29210
29211             <td class="entry_tags">
29212               <ul class="entry_tags">
29213                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29214               </ul>
29215             </td>
29216
29217           </tr>
29218           <tr class="entries_header">
29219             <th class="th_details" colspan="6">Details</th>
29220           </tr>
29221           <tr class="entry_cont">
29222             <td class="entry_details" colspan="6">
29223               <p>This should correspond to the frame duration when only that
29224 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
29225 set to either OFF or FAST.<wbr/></p>
29226 <p>When multiple streams are used in a request,<wbr/> the minimum frame
29227 duration will be max(individual stream min durations).<wbr/></p>
29228 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
29229 is the same regardless of whether the stream is input or output.<wbr/></p>
29230 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
29231 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
29232 calculating the max frame rate.<wbr/></p>
29233             </td>
29234           </tr>
29235
29236
29237           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29238            <!-- end of entry -->
29239         
29240                 
29241           <tr class="entry" id="static_android.depth.availableDepthStallDurations">
29242             <td class="entry_name
29243              " rowspan="3">
29244               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
29245             </td>
29246             <td class="entry_type">
29247                 <span class="entry_type_name">int64</span>
29248                 <span class="entry_type_container">x</span>
29249
29250                 <span class="entry_type_array">
29251                   4 x n
29252                 </span>
29253               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29254
29255
29256               <span class="entry_type_hwlevel">[limited] </span>
29257
29258
29259
29260
29261             </td> <!-- entry_type -->
29262
29263             <td class="entry_description">
29264               <p>This lists the maximum stall duration for each
29265 output format/<wbr/>size combination for depth streams.<wbr/></p>
29266             </td>
29267
29268             <td class="entry_units">
29269               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29270             </td>
29271
29272             <td class="entry_range">
29273             </td>
29274
29275             <td class="entry_hal_version">
29276               <p>3.<wbr/>2</p>
29277             </td>
29278
29279             <td class="entry_tags">
29280               <ul class="entry_tags">
29281                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29282               </ul>
29283             </td>
29284
29285           </tr>
29286           <tr class="entries_header">
29287             <th class="th_details" colspan="6">Details</th>
29288           </tr>
29289           <tr class="entry_cont">
29290             <td class="entry_details" colspan="6">
29291               <p>A stall duration is how much extra time would get added
29292 to the normal minimum frame duration for a repeating request
29293 that has streams with non-zero stall.<wbr/></p>
29294 <p>This functions similarly to
29295 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
29296 streams.<wbr/></p>
29297 <p>All depth output stream formats may have a nonzero stall
29298 duration.<wbr/></p>
29299             </td>
29300           </tr>
29301
29302
29303           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29304            <!-- end of entry -->
29305         
29306                 
29307           <tr class="entry" id="static_android.depth.depthIsExclusive">
29308             <td class="entry_name
29309              " rowspan="3">
29310               android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
29311             </td>
29312             <td class="entry_type">
29313                 <span class="entry_type_name entry_type_name_enum">byte</span>
29314
29315               <span class="entry_type_visibility"> [public as boolean]</span>
29316
29317
29318               <span class="entry_type_hwlevel">[limited] </span>
29319
29320
29321
29322                 <ul class="entry_type_enum">
29323                   <li>
29324                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
29325                   </li>
29326                   <li>
29327                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
29328                   </li>
29329                 </ul>
29330
29331             </td> <!-- entry_type -->
29332
29333             <td class="entry_description">
29334               <p>Indicates whether a capture request may target both a
29335 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
29336 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
29337             </td>
29338
29339             <td class="entry_units">
29340             </td>
29341
29342             <td class="entry_range">
29343             </td>
29344
29345             <td class="entry_hal_version">
29346               <p>3.<wbr/>2</p>
29347             </td>
29348
29349             <td class="entry_tags">
29350             </td>
29351
29352           </tr>
29353           <tr class="entries_header">
29354             <th class="th_details" colspan="6">Details</th>
29355           </tr>
29356           <tr class="entry_cont">
29357             <td class="entry_details" colspan="6">
29358               <p>If TRUE,<wbr/> including both depth and color outputs in a single
29359 capture request is not supported.<wbr/> An application must interleave color
29360 and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
29361 of output.<wbr/></p>
29362 <p>Typically,<wbr/> this restriction exists on camera devices that
29363 need to emit a specific pattern or wavelength of light to
29364 measure depth values,<wbr/> which causes the color image to be
29365 corrupted during depth measurement.<wbr/></p>
29366             </td>
29367           </tr>
29368
29369
29370           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29371            <!-- end of entry -->
29372         
29373         
29374
29375       <!-- end of kind -->
29376       </tbody>
29377
29378   <!-- end of section -->
29379   <tr><td colspan="7" id="section_logicalMultiCamera" class="section">logicalMultiCamera</td></tr>
29380
29381
29382       <tr><td colspan="7" class="kind">static</td></tr>
29383
29384       <thead class="entries_header">
29385         <tr>
29386           <th class="th_name">Property Name</th>
29387           <th class="th_type">Type</th>
29388           <th class="th_description">Description</th>
29389           <th class="th_units">Units</th>
29390           <th class="th_range">Range</th>
29391           <th class="th_hal_version">Initial HIDL HAL version</th>
29392           <th class="th_tags">Tags</th>
29393         </tr>
29394       </thead>
29395
29396       <tbody>
29397
29398         
29399
29400         
29401
29402         
29403
29404         
29405
29406                 
29407           <tr class="entry" id="static_android.logicalMultiCamera.physicalIds">
29408             <td class="entry_name
29409              " rowspan="3">
29410               android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids
29411             </td>
29412             <td class="entry_type">
29413                 <span class="entry_type_name">byte</span>
29414                 <span class="entry_type_container">x</span>
29415
29416                 <span class="entry_type_array">
29417                   n
29418                 </span>
29419               <span class="entry_type_visibility"> [hidden]</span>
29420
29421
29422               <span class="entry_type_hwlevel">[limited] </span>
29423
29424
29425
29426
29427             </td> <!-- entry_type -->
29428
29429             <td class="entry_description">
29430               <p>String containing the ids of the underlying physical cameras.<wbr/></p>
29431             </td>
29432
29433             <td class="entry_units">
29434               UTF-8 null-terminated string
29435             </td>
29436
29437             <td class="entry_range">
29438             </td>
29439
29440             <td class="entry_hal_version">
29441               <p>3.<wbr/>3</p>
29442             </td>
29443
29444             <td class="entry_tags">
29445               <ul class="entry_tags">
29446                   <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
29447               </ul>
29448             </td>
29449
29450           </tr>
29451           <tr class="entries_header">
29452             <th class="th_details" colspan="6">Details</th>
29453           </tr>
29454           <tr class="entry_cont">
29455             <td class="entry_details" colspan="6">
29456               <p>For a logical camera,<wbr/> this is concatenation of all underlying physical camera ids.<wbr/>
29457 The null terminator for physical camera id must be preserved so that the whole string
29458 can be tokenized using '\0' to generate list of physical camera ids.<wbr/></p>
29459 <p>For example,<wbr/> if the physical camera ids of the logical camera are "2" and "3",<wbr/> the
29460 value of this tag will be ['2',<wbr/> '\0',<wbr/> '3',<wbr/> '\0'].<wbr/></p>
29461 <p>The number of physical camera ids must be no less than 2.<wbr/></p>
29462             </td>
29463           </tr>
29464
29465
29466           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29467            <!-- end of entry -->
29468         
29469                 
29470           <tr class="entry" id="static_android.logicalMultiCamera.sensorSyncType">
29471             <td class="entry_name
29472              " rowspan="3">
29473               android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type
29474             </td>
29475             <td class="entry_type">
29476                 <span class="entry_type_name entry_type_name_enum">byte</span>
29477
29478               <span class="entry_type_visibility"> [public]</span>
29479
29480
29481               <span class="entry_type_hwlevel">[limited] </span>
29482
29483
29484
29485                 <ul class="entry_type_enum">
29486                   <li>
29487                     <span class="entry_type_enum_name">APPROXIMATE (v3.3)</span>
29488                     <span class="entry_type_enum_notes"><p>A software mechanism is used to synchronize between the physical cameras.<wbr/> As a result,<wbr/>
29489 the timestamp of an image from a physical stream is only an approximation of the
29490 image sensor start-of-exposure time.<wbr/></p></span>
29491                   </li>
29492                   <li>
29493                     <span class="entry_type_enum_name">CALIBRATED (v3.3)</span>
29494                     <span class="entry_type_enum_notes"><p>The camera device supports frame timestamp synchronization at the hardware level,<wbr/>
29495 and the timestamp of a physical stream image accurately reflects its
29496 start-of-exposure time.<wbr/></p></span>
29497                   </li>
29498                 </ul>
29499
29500             </td> <!-- entry_type -->
29501
29502             <td class="entry_description">
29503               <p>The accuracy of frame timestamp synchronization between physical cameras</p>
29504             </td>
29505
29506             <td class="entry_units">
29507             </td>
29508
29509             <td class="entry_range">
29510             </td>
29511
29512             <td class="entry_hal_version">
29513               <p>3.<wbr/>3</p>
29514             </td>
29515
29516             <td class="entry_tags">
29517               <ul class="entry_tags">
29518                   <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
29519               </ul>
29520             </td>
29521
29522           </tr>
29523           <tr class="entries_header">
29524             <th class="th_details" colspan="6">Details</th>
29525           </tr>
29526           <tr class="entry_cont">
29527             <td class="entry_details" colspan="6">
29528               <p>The accuracy of the frame timestamp synchronization determines the physical cameras'
29529 ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/>
29530 the physical camera sensors usually run in master-slave mode so that their shutter
29531 time is synchronized.<wbr/> For APPROXIMATE sensorSyncType,<wbr/> the camera sensors usually run in
29532 master-master mode,<wbr/> and there could be offset between their start of exposure.<wbr/></p>
29533 <p>In both cases,<wbr/> all images generated for a particular capture request still carry the same
29534 timestamps,<wbr/> so that they can be used to look up the matching frame number and
29535 onCaptureStarted callback.<wbr/></p>
29536             </td>
29537           </tr>
29538
29539
29540           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29541            <!-- end of entry -->
29542         
29543         
29544
29545       <!-- end of kind -->
29546       </tbody>
29547
29548   <!-- end of section -->
29549 <!-- </namespace> -->
29550   </table>
29551
29552   <div class="tags" id="tag_index">
29553     <h2>Tags</h2>
29554     <ul>
29555       <li id="tag_BC">BC - 
29556         Needed for backwards compatibility with old Java API
29557     
29558         <ul class="tags_entries">
29559           <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
29560           <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
29561           <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
29562           <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
29563           <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
29564           <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
29565           <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
29566           <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
29567           <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
29568           <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
29569           <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
29570           <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
29571           <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
29572           <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
29573           <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
29574           <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
29575           <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
29576           <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
29577           <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
29578           <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
29579           <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
29580           <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
29581           <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
29582           <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
29583           <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
29584           <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
29585           <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
29586           <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
29587           <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
29588           <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
29589           <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
29590           <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
29591           <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
29592           <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
29593           <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
29594           <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
29595           <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
29596           <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
29597           <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
29598           <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
29599           <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
29600           <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
29601           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
29602           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
29603           <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
29604           <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
29605           <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
29606           <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
29607           <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
29608           <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
29609           <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
29610           <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
29611           <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
29612           <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
29613           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
29614           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
29615           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
29616           <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
29617           <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
29618           <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
29619           <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
29620           <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
29621           <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
29622           <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
29623           <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
29624           <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
29625           <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
29626         </ul>
29627       </li> <!-- tag_BC -->
29628       <li id="tag_V1">V1 - 
29629         New features for first camera 2 release (API1)
29630     
29631         <ul class="tags_entries">
29632           <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
29633           <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
29634           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
29635           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
29636           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
29637           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
29638           <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
29639           <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
29640           <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
29641           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
29642           <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
29643           <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
29644           <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
29645           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
29646           <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
29647           <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
29648           <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
29649           <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
29650           <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
29651           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
29652           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
29653           <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
29654           <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
29655           <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
29656           <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
29657           <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
29658           <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
29659           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
29660           <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
29661           <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
29662           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
29663           <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
29664           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
29665           <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
29666           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
29667           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
29668           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
29669           <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
29670           <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
29671           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
29672           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
29673           <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
29674           <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
29675           <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
29676           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
29677         </ul>
29678       </li> <!-- tag_V1 -->
29679       <li id="tag_RAW">RAW - 
29680         Needed for useful RAW image processing and DNG file support
29681     
29682         <ul class="tags_entries">
29683           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
29684           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
29685           <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
29686           <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
29687           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
29688           <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
29689           <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
29690           <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
29691           <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
29692           <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
29693           <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
29694           <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
29695           <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
29696           <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
29697           <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
29698           <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
29699           <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
29700           <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
29701           <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
29702           <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
29703           <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
29704           <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
29705           <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
29706           <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
29707           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
29708           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
29709           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
29710           <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
29711           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
29712         </ul>
29713       </li> <!-- tag_RAW -->
29714       <li id="tag_HAL2">HAL2 - 
29715         Entry is only used by camera device legacy HAL 2.x
29716     
29717         <ul class="tags_entries">
29718           <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
29719           <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
29720           <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
29721           <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
29722           <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
29723         </ul>
29724       </li> <!-- tag_HAL2 -->
29725       <li id="tag_FULL">FULL - 
29726         Entry is required for full hardware level devices, and optional for other hardware levels
29727     
29728         <ul class="tags_entries">
29729           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
29730         </ul>
29731       </li> <!-- tag_FULL -->
29732       <li id="tag_DEPTH">DEPTH - 
29733         Entry is required for the depth capability.
29734     
29735         <ul class="tags_entries">
29736           <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
29737           <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
29738           <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
29739           <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
29740           <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
29741           <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
29742           <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
29743           <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
29744         </ul>
29745       </li> <!-- tag_DEPTH -->
29746       <li id="tag_REPROC">REPROC - 
29747         Entry is required for the YUV or PRIVATE reprocessing capability.
29748     
29749         <ul class="tags_entries">
29750           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
29751           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
29752           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
29753           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
29754           <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
29755           <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
29756           <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
29757           <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
29758           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
29759           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
29760         </ul>
29761       </li> <!-- tag_REPROC -->
29762       <li id="tag_LOGICALCAMERA">LOGICALCAMERA - 
29763         Entry is required for logical multi-camera capability.
29764     
29765         <ul class="tags_entries">
29766           <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li>
29767           <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li>
29768         </ul>
29769       </li> <!-- tag_LOGICALCAMERA -->
29770       <li id="tag_FUTURE">FUTURE - 
29771         Entry is  under-specified and is not required for now. This is for book-keeping purpose,
29772         do not implement or use it, it may be revised for future.
29773     
29774         <ul class="tags_entries">
29775           <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
29776           <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
29777           <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
29778           <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
29779           <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
29780           <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
29781           <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
29782           <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
29783           <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
29784           <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
29785           <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
29786           <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
29787           <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
29788           <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
29789           <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
29790           <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
29791           <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
29792           <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
29793           <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
29794           <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
29795           <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
29796         </ul>
29797       </li> <!-- tag_FUTURE -->
29798     </ul>
29799   </div>
29800
29801   [ <a href="#">top</a> ]
29802
29803 </body>
29804 </html>