OSDN Git Service

Camera: Revise MOTION_TRACKING capability
[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 logical camera device must be LIMITED or higher device.<wbr/></li>
16892 </ul>
16893 <p>Both the logical camera device and its underlying physical devices support the
16894 mandatory stream combinations required for their device levels.<wbr/></p>
16895 <p>Additionally,<wbr/> for each guaranteed stream combination,<wbr/> the logical camera supports:</p>
16896 <ul>
16897 <li>Replacing one logical <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>
16898   or raw stream with two physical streams of the same size and format,<wbr/> each from a
16899   separate physical camera,<wbr/> given that the size and format are supported by both
16900   physical cameras.<wbr/></li>
16901 <li>Adding two raw streams,<wbr/> each from one physical camera,<wbr/> if the logical camera doesn't
16902   advertise RAW capability,<wbr/> but the underlying physical cameras do.<wbr/> This is usually
16903   the case when the physical cameras have different sensor sizes.<wbr/></li>
16904 </ul>
16905 <p>Using physical streams in place of a logical stream of the same size and format will
16906 not slow down the frame rate of the capture,<wbr/> as long as the minimum frame duration
16907 of the physical and logical streams are the same.<wbr/></p></span>
16908                   </li>
16909                 </ul>
16910
16911             </td> <!-- entry_type -->
16912
16913             <td class="entry_description">
16914               <p>List of capabilities that this camera device
16915 advertises as fully supporting.<wbr/></p>
16916             </td>
16917
16918             <td class="entry_units">
16919             </td>
16920
16921             <td class="entry_range">
16922             </td>
16923
16924             <td class="entry_hal_version">
16925               <p>3.<wbr/>2</p>
16926             </td>
16927
16928             <td class="entry_tags">
16929             </td>
16930
16931           </tr>
16932           <tr class="entries_header">
16933             <th class="th_details" colspan="6">Details</th>
16934           </tr>
16935           <tr class="entry_cont">
16936             <td class="entry_details" colspan="6">
16937               <p>A capability is a contract that the camera device makes in order
16938 to be able to satisfy one or more use cases.<wbr/></p>
16939 <p>Listing a capability guarantees that the whole set of features
16940 required to support a common use will all be available.<wbr/></p>
16941 <p>Using a subset of the functionality provided by an unsupported
16942 capability may be possible on a specific camera device implementation;
16943 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
16944 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
16945 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
16946 <p>The following capabilities are guaranteed to be available on
16947 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
16948 <ul>
16949 <li>MANUAL_<wbr/>SENSOR</li>
16950 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
16951 </ul>
16952 <p>Other capabilities may be available on either FULL or LIMITED
16953 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
16954             </td>
16955           </tr>
16956
16957           <tr class="entries_header">
16958             <th class="th_details" colspan="6">HAL Implementation Details</th>
16959           </tr>
16960           <tr class="entry_cont">
16961             <td class="entry_details" colspan="6">
16962               <p>Additional constraint details per-capability will be available
16963 in the Compatibility Test Suite.<wbr/></p>
16964 <p>Minimum baseline requirements required for the
16965 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
16966 Instead refer to "BC" tags and the camera CTS tests in the
16967 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
16968 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
16969 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
16970 request and the result in order to be considered to be
16971 capability-compliant.<wbr/></p>
16972 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
16973 then exposure time must be configurable via the request <em>and</em>
16974 the actual exposure applied must be available via
16975 the result.<wbr/></p>
16976 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
16977 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
16978 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
16979 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
16980 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
16981 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
16982 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
16983 YUV_<wbr/>REPROCESSING capability must support the
16984 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
16985 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
16986 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
16987 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
16988 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
16989 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
16990 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
16991 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
16992 DEPTH).<wbr/></p>
16993 <p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the
16994 same way as a physical camera device based on its hardware level and capabilities.<wbr/>
16995 It's recommended that its feature set is superset of that of individual physical cameras.<wbr/></p>
16996             </td>
16997           </tr>
16998
16999           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17000            <!-- end of entry -->
17001         
17002                 
17003           <tr class="entry" id="static_android.request.availableRequestKeys">
17004             <td class="entry_name
17005              " rowspan="5">
17006               android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
17007             </td>
17008             <td class="entry_type">
17009                 <span class="entry_type_name">int32</span>
17010                 <span class="entry_type_container">x</span>
17011
17012                 <span class="entry_type_array">
17013                   n
17014                 </span>
17015               <span class="entry_type_visibility"> [ndk_public]</span>
17016
17017
17018               <span class="entry_type_hwlevel">[legacy] </span>
17019
17020
17021
17022
17023             </td> <!-- entry_type -->
17024
17025             <td class="entry_description">
17026               <p>A list of all keys that the camera device has available
17027 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
17028             </td>
17029
17030             <td class="entry_units">
17031             </td>
17032
17033             <td class="entry_range">
17034             </td>
17035
17036             <td class="entry_hal_version">
17037               <p>3.<wbr/>2</p>
17038             </td>
17039
17040             <td class="entry_tags">
17041             </td>
17042
17043           </tr>
17044           <tr class="entries_header">
17045             <th class="th_details" colspan="6">Details</th>
17046           </tr>
17047           <tr class="entry_cont">
17048             <td class="entry_details" colspan="6">
17049               <p>Attempting to set a key into a CaptureRequest that is not
17050 listed here will result in an invalid request and will be rejected
17051 by the camera device.<wbr/></p>
17052 <p>This field can be used to query the feature set of a camera device
17053 at a more granular level than capabilities.<wbr/> This is especially
17054 important for optional keys that are not listed under any capability
17055 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17056             </td>
17057           </tr>
17058
17059           <tr class="entries_header">
17060             <th class="th_details" colspan="6">HAL Implementation Details</th>
17061           </tr>
17062           <tr class="entry_cont">
17063             <td class="entry_details" colspan="6">
17064               <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17065 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17066 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17067 vendor extensions API and not against this field.<wbr/></p>
17068 <p>The HAL must not consume any request tags that are not listed either
17069 here or in the vendor tag list.<wbr/></p>
17070 <p>The public camera2 API will always make the vendor tags visible
17071 via
17072 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
17073             </td>
17074           </tr>
17075
17076           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17077            <!-- end of entry -->
17078         
17079                 
17080           <tr class="entry" id="static_android.request.availableResultKeys">
17081             <td class="entry_name
17082              " rowspan="5">
17083               android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
17084             </td>
17085             <td class="entry_type">
17086                 <span class="entry_type_name">int32</span>
17087                 <span class="entry_type_container">x</span>
17088
17089                 <span class="entry_type_array">
17090                   n
17091                 </span>
17092               <span class="entry_type_visibility"> [ndk_public]</span>
17093
17094
17095               <span class="entry_type_hwlevel">[legacy] </span>
17096
17097
17098
17099
17100             </td> <!-- entry_type -->
17101
17102             <td class="entry_description">
17103               <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>
17104             </td>
17105
17106             <td class="entry_units">
17107             </td>
17108
17109             <td class="entry_range">
17110             </td>
17111
17112             <td class="entry_hal_version">
17113               <p>3.<wbr/>2</p>
17114             </td>
17115
17116             <td class="entry_tags">
17117             </td>
17118
17119           </tr>
17120           <tr class="entries_header">
17121             <th class="th_details" colspan="6">Details</th>
17122           </tr>
17123           <tr class="entry_cont">
17124             <td class="entry_details" colspan="6">
17125               <p>Attempting to get a key from a CaptureResult that is not
17126 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
17127 a CaptureResult that is listed here will generally never return a <code>null</code>
17128 value.<wbr/></p>
17129 <p>The following keys may return <code>null</code> unless they are enabled:</p>
17130 <ul>
17131 <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>
17132 </ul>
17133 <p>(Those sometimes-null keys will nevertheless be listed here
17134 if they are available.<wbr/>)</p>
17135 <p>This field can be used to query the feature set of a camera device
17136 at a more granular level than capabilities.<wbr/> This is especially
17137 important for optional keys that are not listed under any capability
17138 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17139             </td>
17140           </tr>
17141
17142           <tr class="entries_header">
17143             <th class="th_details" colspan="6">HAL Implementation Details</th>
17144           </tr>
17145           <tr class="entry_cont">
17146             <td class="entry_details" colspan="6">
17147               <p>Tags listed here must always have an entry in the result metadata,<wbr/>
17148 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17149 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17150 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17151 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17152 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17153 vendor extensions API and not against this field.<wbr/></p>
17154 <p>The HAL must not produce any result tags that are not listed either
17155 here or in the vendor tag list.<wbr/></p>
17156 <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>
17157             </td>
17158           </tr>
17159
17160           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17161            <!-- end of entry -->
17162         
17163                 
17164           <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
17165             <td class="entry_name
17166              " rowspan="5">
17167               android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
17168             </td>
17169             <td class="entry_type">
17170                 <span class="entry_type_name">int32</span>
17171                 <span class="entry_type_container">x</span>
17172
17173                 <span class="entry_type_array">
17174                   n
17175                 </span>
17176               <span class="entry_type_visibility"> [ndk_public]</span>
17177
17178
17179               <span class="entry_type_hwlevel">[legacy] </span>
17180
17181
17182
17183
17184             </td> <!-- entry_type -->
17185
17186             <td class="entry_description">
17187               <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>
17188             </td>
17189
17190             <td class="entry_units">
17191             </td>
17192
17193             <td class="entry_range">
17194             </td>
17195
17196             <td class="entry_hal_version">
17197               <p>3.<wbr/>2</p>
17198             </td>
17199
17200             <td class="entry_tags">
17201             </td>
17202
17203           </tr>
17204           <tr class="entries_header">
17205             <th class="th_details" colspan="6">Details</th>
17206           </tr>
17207           <tr class="entry_cont">
17208             <td class="entry_details" colspan="6">
17209               <p>This entry follows the same rules as
17210 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
17211 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
17212 details.<wbr/></p>
17213             </td>
17214           </tr>
17215
17216           <tr class="entries_header">
17217             <th class="th_details" colspan="6">HAL Implementation Details</th>
17218           </tr>
17219           <tr class="entry_cont">
17220             <td class="entry_details" colspan="6">
17221               <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
17222 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17223 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17224 <p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
17225 the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17226 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17227 vendor extensions API and not against this field.<wbr/></p>
17228 <p>The HAL must not have any tags in its static info that are not listed
17229 either here or in the vendor tag list.<wbr/></p>
17230 <p>The public camera2 API will always make the vendor tags visible
17231 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
17232             </td>
17233           </tr>
17234
17235           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17236            <!-- end of entry -->
17237         
17238                 
17239           <tr class="entry" id="static_android.request.availableSessionKeys">
17240             <td class="entry_name
17241              " rowspan="5">
17242               android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys
17243             </td>
17244             <td class="entry_type">
17245                 <span class="entry_type_name">int32</span>
17246                 <span class="entry_type_container">x</span>
17247
17248                 <span class="entry_type_array">
17249                   n
17250                 </span>
17251               <span class="entry_type_visibility"> [ndk_public]</span>
17252
17253
17254               <span class="entry_type_hwlevel">[legacy] </span>
17255
17256
17257
17258
17259             </td> <!-- entry_type -->
17260
17261             <td class="entry_description">
17262               <p>A subset of the available request keys that the camera device
17263 can pass as part of the capture session initialization.<wbr/></p>
17264             </td>
17265
17266             <td class="entry_units">
17267             </td>
17268
17269             <td class="entry_range">
17270             </td>
17271
17272             <td class="entry_hal_version">
17273               <p>3.<wbr/>3</p>
17274             </td>
17275
17276             <td class="entry_tags">
17277             </td>
17278
17279           </tr>
17280           <tr class="entries_header">
17281             <th class="th_details" colspan="6">Details</th>
17282           </tr>
17283           <tr class="entry_cont">
17284             <td class="entry_details" colspan="6">
17285               <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which
17286 contains a list of keys that are difficult to apply per-frame and
17287 can result in unexpected delays when modified during the capture session
17288 lifetime.<wbr/> Typical examples include parameters that require a
17289 time-consuming hardware re-configuration or internal camera pipeline
17290 change.<wbr/> For performance reasons we advise clients to pass their initial
17291 values as part of
17292 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17293 Once the camera capture session is enabled it is also recommended to avoid
17294 changing them from their initial values set in
17295 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17296 Control over session parameters can still be exerted in capture requests
17297 but clients should be aware and expect delays during their application.<wbr/>
17298 An example usage scenario could look like this:</p>
17299 <ul>
17300 <li>The camera client starts by quering the session parameter key list via
17301   <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li>
17302 <li>Before triggering the capture session create sequence,<wbr/> a capture request
17303   must be built via
17304   <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a>
17305   using an appropriate template matching the particular use case.<wbr/></li>
17306 <li>The client should go over the list of session parameters and check
17307   whether some of the keys listed matches with the parameters that
17308   they intend to modify as part of the first capture request.<wbr/></li>
17309 <li>If there is no such match,<wbr/> the capture request can be  passed
17310   unmodified to
17311   <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17312 <li>If matches do exist,<wbr/> the client should update the respective values
17313   and pass the request to
17314   <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17315 <li>After the capture session initialization completes the session parameter
17316   key list can continue to serve as reference when posting or updating
17317   further requests.<wbr/> As mentioned above further changes to session
17318   parameters should ideally be avoided,<wbr/> if updates are necessary
17319   however clients could expect a delay/<wbr/>glitch during the
17320   parameter switch.<wbr/></li>
17321 </ul>
17322             </td>
17323           </tr>
17324
17325           <tr class="entries_header">
17326             <th class="th_details" colspan="6">HAL Implementation Details</th>
17327           </tr>
17328           <tr class="entry_cont">
17329             <td class="entry_details" colspan="6">
17330               <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17331 use the extensions C api (refer to
17332 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p>
17333 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17334 vendor extensions API and not against this field.<wbr/></p>
17335 <p>The HAL must not consume any request tags in the session parameters that
17336 are not listed either here or in the vendor tag list.<wbr/></p>
17337 <p>The public camera2 API will always make the vendor tags visible
17338 via
17339 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
17340             </td>
17341           </tr>
17342
17343           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17344            <!-- end of entry -->
17345         
17346                 
17347           <tr class="entry" id="static_android.request.availablePhysicalCameraRequestKeys">
17348             <td class="entry_name
17349              " rowspan="5">
17350               android.<wbr/>request.<wbr/>available<wbr/>Physical<wbr/>Camera<wbr/>Request<wbr/>Keys
17351             </td>
17352             <td class="entry_type">
17353                 <span class="entry_type_name">int32</span>
17354                 <span class="entry_type_container">x</span>
17355
17356                 <span class="entry_type_array">
17357                   n
17358                 </span>
17359               <span class="entry_type_visibility"> [hidden]</span>
17360
17361
17362               <span class="entry_type_hwlevel">[limited] </span>
17363
17364
17365
17366
17367             </td> <!-- entry_type -->
17368
17369             <td class="entry_description">
17370               <p>A subset of the available request keys that can be overriden for
17371 physical devices backing a logical multi-camera.<wbr/></p>
17372             </td>
17373
17374             <td class="entry_units">
17375             </td>
17376
17377             <td class="entry_range">
17378             </td>
17379
17380             <td class="entry_hal_version">
17381               <p>3.<wbr/>3</p>
17382             </td>
17383
17384             <td class="entry_tags">
17385             </td>
17386
17387           </tr>
17388           <tr class="entries_header">
17389             <th class="th_details" colspan="6">Details</th>
17390           </tr>
17391           <tr class="entry_cont">
17392             <td class="entry_details" colspan="6">
17393               <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
17394 of keys that can be overriden using <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/>
17395 The respective value of such request key can be obtained by calling
17396 <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>.<wbr/> Capture requests that contain
17397 individual physical device requests must be built via
17398 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.<wbr/>
17399 Such extended capture requests can be passed only to
17400 <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
17401 not to <a href="https://developer.android.com/reference/CameraCaptureSession.html#setRepeatingRequest">CameraCaptureSession#setRepeatingRequest</a> or
17402 <a href="https://developer.android.com/reference/CameraCaptureSession.html#setRepeatingBurst">CameraCaptureSession#setRepeatingBurst</a>.<wbr/></p>
17403             </td>
17404           </tr>
17405
17406           <tr class="entries_header">
17407             <th class="th_details" colspan="6">HAL Implementation Details</th>
17408           </tr>
17409           <tr class="entry_cont">
17410             <td class="entry_details" colspan="6">
17411               <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17412 use the extensions C api (refer to
17413 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more
17414 details).<wbr/></p>
17415 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17416 vendor extensions API and not against this field.<wbr/></p>
17417 <p>The HAL must not consume any request tags in the session parameters that
17418 are not listed either here or in the vendor tag list.<wbr/></p>
17419 <p>The public camera2 API will always make the vendor tags visible
17420 via
17421 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailablePhysicalCameraRequestKeys">CameraCharacteristics#getAvailablePhysicalCameraRequestKeys</a>.<wbr/></p>
17422             </td>
17423           </tr>
17424
17425           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17426            <!-- end of entry -->
17427         
17428         
17429
17430       <!-- end of kind -->
17431       </tbody>
17432       <tr><td colspan="7" class="kind">dynamic</td></tr>
17433
17434       <thead class="entries_header">
17435         <tr>
17436           <th class="th_name">Property Name</th>
17437           <th class="th_type">Type</th>
17438           <th class="th_description">Description</th>
17439           <th class="th_units">Units</th>
17440           <th class="th_range">Range</th>
17441           <th class="th_hal_version">Initial HIDL HAL version</th>
17442           <th class="th_tags">Tags</th>
17443         </tr>
17444       </thead>
17445
17446       <tbody>
17447
17448         
17449
17450         
17451
17452         
17453
17454         
17455
17456                 
17457           <tr class="entry" id="dynamic_android.request.frameCount">
17458             <td class="entry_name
17459                 entry_name_deprecated
17460              " rowspan="3">
17461               android.<wbr/>request.<wbr/>frame<wbr/>Count
17462             </td>
17463             <td class="entry_type">
17464                 <span class="entry_type_name">int32</span>
17465
17466               <span class="entry_type_visibility"> [hidden]</span>
17467
17468
17469
17470               <span class="entry_type_deprecated">[deprecated] </span>
17471
17472
17473
17474             </td> <!-- entry_type -->
17475
17476             <td class="entry_description">
17477               <p>A frame counter set by the framework.<wbr/> This value monotonically
17478 increases with every new result (that is,<wbr/> each new result has a unique
17479 frameCount value).<wbr/></p>
17480             </td>
17481
17482             <td class="entry_units">
17483               count of frames
17484             </td>
17485
17486             <td class="entry_range">
17487               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17488               <p>&gt; 0</p>
17489             </td>
17490
17491             <td class="entry_hal_version">
17492               <p>3.<wbr/>2</p>
17493             </td>
17494
17495             <td class="entry_tags">
17496             </td>
17497
17498           </tr>
17499           <tr class="entries_header">
17500             <th class="th_details" colspan="6">Details</th>
17501           </tr>
17502           <tr class="entry_cont">
17503             <td class="entry_details" colspan="6">
17504               <p>Reset on release()</p>
17505             </td>
17506           </tr>
17507
17508
17509           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17510            <!-- end of entry -->
17511         
17512                 
17513           <tr class="entry" id="dynamic_android.request.id">
17514             <td class="entry_name
17515              " rowspan="1">
17516               android.<wbr/>request.<wbr/>id
17517             </td>
17518             <td class="entry_type">
17519                 <span class="entry_type_name">int32</span>
17520
17521               <span class="entry_type_visibility"> [hidden]</span>
17522
17523
17524
17525
17526
17527
17528             </td> <!-- entry_type -->
17529
17530             <td class="entry_description">
17531               <p>An application-specified ID for the current
17532 request.<wbr/> Must be maintained unchanged in output
17533 frame</p>
17534             </td>
17535
17536             <td class="entry_units">
17537               arbitrary integer assigned by application
17538             </td>
17539
17540             <td class="entry_range">
17541               <p>Any int</p>
17542             </td>
17543
17544             <td class="entry_hal_version">
17545               <p>3.<wbr/>2</p>
17546             </td>
17547
17548             <td class="entry_tags">
17549               <ul class="entry_tags">
17550                   <li><a href="#tag_V1">V1</a></li>
17551               </ul>
17552             </td>
17553
17554           </tr>
17555
17556
17557           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17558            <!-- end of entry -->
17559         
17560                 
17561           <tr class="entry" id="dynamic_android.request.metadataMode">
17562             <td class="entry_name
17563              " rowspan="1">
17564               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
17565             </td>
17566             <td class="entry_type">
17567                 <span class="entry_type_name entry_type_name_enum">byte</span>
17568
17569               <span class="entry_type_visibility"> [system]</span>
17570
17571
17572
17573
17574
17575                 <ul class="entry_type_enum">
17576                   <li>
17577                     <span class="entry_type_enum_name">NONE (v3.2)</span>
17578                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
17579 for application-bound buffer data.<wbr/> If no
17580 application-bound streams exist,<wbr/> no frame should be
17581 placed in the output frame queue.<wbr/> If such streams
17582 exist,<wbr/> a frame should be placed on the output queue
17583 with null metadata but with the necessary output buffer
17584 information.<wbr/> Timestamp information should still be
17585 included with any output stream buffers</p></span>
17586                   </li>
17587                   <li>
17588                     <span class="entry_type_enum_name">FULL (v3.2)</span>
17589                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
17590 only be produced if they are separately
17591 enabled</p></span>
17592                   </li>
17593                 </ul>
17594
17595             </td> <!-- entry_type -->
17596
17597             <td class="entry_description">
17598               <p>How much metadata to produce on
17599 output</p>
17600             </td>
17601
17602             <td class="entry_units">
17603             </td>
17604
17605             <td class="entry_range">
17606             </td>
17607
17608             <td class="entry_hal_version">
17609               <p>3.<wbr/>2</p>
17610             </td>
17611
17612             <td class="entry_tags">
17613               <ul class="entry_tags">
17614                   <li><a href="#tag_FUTURE">FUTURE</a></li>
17615               </ul>
17616             </td>
17617
17618           </tr>
17619
17620
17621           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17622            <!-- end of entry -->
17623         
17624                 
17625           <tr class="entry" id="dynamic_android.request.outputStreams">
17626             <td class="entry_name
17627                 entry_name_deprecated
17628              " rowspan="3">
17629               android.<wbr/>request.<wbr/>output<wbr/>Streams
17630             </td>
17631             <td class="entry_type">
17632                 <span class="entry_type_name">int32</span>
17633                 <span class="entry_type_container">x</span>
17634
17635                 <span class="entry_type_array">
17636                   n
17637                 </span>
17638               <span class="entry_type_visibility"> [system]</span>
17639
17640
17641
17642               <span class="entry_type_deprecated">[deprecated] </span>
17643
17644
17645
17646             </td> <!-- entry_type -->
17647
17648             <td class="entry_description">
17649               <p>Lists which camera output streams image data
17650 from this capture must be sent to</p>
17651             </td>
17652
17653             <td class="entry_units">
17654               List of camera stream IDs
17655             </td>
17656
17657             <td class="entry_range">
17658               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17659               <p>List must only include streams that have been
17660 created</p>
17661             </td>
17662
17663             <td class="entry_hal_version">
17664               <p>3.<wbr/>2</p>
17665             </td>
17666
17667             <td class="entry_tags">
17668               <ul class="entry_tags">
17669                   <li><a href="#tag_HAL2">HAL2</a></li>
17670               </ul>
17671             </td>
17672
17673           </tr>
17674           <tr class="entries_header">
17675             <th class="th_details" colspan="6">Details</th>
17676           </tr>
17677           <tr class="entry_cont">
17678             <td class="entry_details" colspan="6">
17679               <p>If no output streams are listed,<wbr/> then the image
17680 data should simply be discarded.<wbr/> The image data must
17681 still be captured for metadata and statistics production,<wbr/>
17682 and the lens and flash must operate as requested.<wbr/></p>
17683             </td>
17684           </tr>
17685
17686
17687           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17688            <!-- end of entry -->
17689         
17690                 
17691           <tr class="entry" id="dynamic_android.request.pipelineDepth">
17692             <td class="entry_name
17693              " rowspan="5">
17694               android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
17695             </td>
17696             <td class="entry_type">
17697                 <span class="entry_type_name">byte</span>
17698
17699               <span class="entry_type_visibility"> [public]</span>
17700
17701
17702               <span class="entry_type_hwlevel">[legacy] </span>
17703
17704
17705
17706
17707             </td> <!-- entry_type -->
17708
17709             <td class="entry_description">
17710               <p>Specifies the number of pipeline stages the frame went
17711 through from when it was exposed to when the final completed result
17712 was available to the framework.<wbr/></p>
17713             </td>
17714
17715             <td class="entry_units">
17716             </td>
17717
17718             <td class="entry_range">
17719               <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
17720             </td>
17721
17722             <td class="entry_hal_version">
17723               <p>3.<wbr/>2</p>
17724             </td>
17725
17726             <td class="entry_tags">
17727             </td>
17728
17729           </tr>
17730           <tr class="entries_header">
17731             <th class="th_details" colspan="6">Details</th>
17732           </tr>
17733           <tr class="entry_cont">
17734             <td class="entry_details" colspan="6">
17735               <p>Depending on what settings are used in the request,<wbr/> and
17736 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
17737 and some pipeline stages skipped.<wbr/></p>
17738 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
17739             </td>
17740           </tr>
17741
17742           <tr class="entries_header">
17743             <th class="th_details" colspan="6">HAL Implementation Details</th>
17744           </tr>
17745           <tr class="entry_cont">
17746             <td class="entry_details" colspan="6">
17747               <p>This value must always represent the accurate count of how many
17748 pipeline stages were actually used.<wbr/></p>
17749             </td>
17750           </tr>
17751
17752           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17753            <!-- end of entry -->
17754         
17755         
17756
17757       <!-- end of kind -->
17758       </tbody>
17759
17760   <!-- end of section -->
17761   <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
17762
17763
17764       <tr><td colspan="7" class="kind">controls</td></tr>
17765
17766       <thead class="entries_header">
17767         <tr>
17768           <th class="th_name">Property Name</th>
17769           <th class="th_type">Type</th>
17770           <th class="th_description">Description</th>
17771           <th class="th_units">Units</th>
17772           <th class="th_range">Range</th>
17773           <th class="th_hal_version">Initial HIDL HAL version</th>
17774           <th class="th_tags">Tags</th>
17775         </tr>
17776       </thead>
17777
17778       <tbody>
17779
17780         
17781
17782         
17783
17784         
17785
17786         
17787
17788                 
17789           <tr class="entry" id="controls_android.scaler.cropRegion">
17790             <td class="entry_name
17791              " rowspan="5">
17792               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
17793             </td>
17794             <td class="entry_type">
17795                 <span class="entry_type_name">int32</span>
17796                 <span class="entry_type_container">x</span>
17797
17798                 <span class="entry_type_array">
17799                   4
17800                 </span>
17801               <span class="entry_type_visibility"> [public as rectangle]</span>
17802
17803
17804               <span class="entry_type_hwlevel">[legacy] </span>
17805
17806
17807
17808
17809             </td> <!-- entry_type -->
17810
17811             <td class="entry_description">
17812               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
17813             </td>
17814
17815             <td class="entry_units">
17816               Pixel coordinates relative to
17817           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
17818             </td>
17819
17820             <td class="entry_range">
17821             </td>
17822
17823             <td class="entry_hal_version">
17824               <p>3.<wbr/>2</p>
17825             </td>
17826
17827             <td class="entry_tags">
17828               <ul class="entry_tags">
17829                   <li><a href="#tag_BC">BC</a></li>
17830               </ul>
17831             </td>
17832
17833           </tr>
17834           <tr class="entries_header">
17835             <th class="th_details" colspan="6">Details</th>
17836           </tr>
17837           <tr class="entry_cont">
17838             <td class="entry_details" colspan="6">
17839               <p>This control can be used to implement digital zoom.<wbr/></p>
17840 <p>The crop region coordinate system is based off
17841 <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
17842 top-left corner of the sensor active array.<wbr/></p>
17843 <p>Output streams use this rectangle to produce their output,<wbr/>
17844 cropping to a smaller region if necessary to maintain the
17845 stream's aspect ratio,<wbr/> then scaling the sensor input to
17846 match the output's configured resolution.<wbr/></p>
17847 <p>The crop region is applied after the RAW to other color
17848 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
17849 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
17850 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
17851 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
17852 be done to maximize the final pixel area of the stream.<wbr/></p>
17853 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
17854 ratio,<wbr/> then 4:3 streams will use the exact crop
17855 region.<wbr/> 16:9 streams will further crop vertically
17856 (letterbox).<wbr/></p>
17857 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
17858 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
17859 streams will match exactly.<wbr/> These additional crops will
17860 be centered within the crop region.<wbr/></p>
17861 <p>The width and height of the crop region cannot
17862 be set to be smaller than
17863 <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
17864 <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>
17865 <p>The camera device may adjust the crop region to account
17866 for rounding and other hardware requirements; the final
17867 crop region used will be included in the output capture
17868 result.<wbr/></p>
17869             </td>
17870           </tr>
17871
17872           <tr class="entries_header">
17873             <th class="th_details" colspan="6">HAL Implementation Details</th>
17874           </tr>
17875           <tr class="entry_cont">
17876             <td class="entry_details" colspan="6">
17877               <p>The output streams must maintain square pixels at all
17878 times,<wbr/> no matter what the relative aspect ratios of the
17879 crop region and the stream are.<wbr/>  Negative values for
17880 corner are allowed for raw output if full pixel array is
17881 larger than active pixel array.<wbr/> Width and height may be
17882 rounded to nearest larger supportable width,<wbr/> especially
17883 for raw output,<wbr/> where only a few fixed scales may be
17884 possible.<wbr/></p>
17885 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
17886 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
17887 <ul>
17888 <li>
17889 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
17890 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
17891 <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>
17892 <ol>
17893 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
17894 cropped pixel area by (tx,<wbr/> ty),<wbr/>
17895 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
17896 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
17897 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
17898 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
17899 <li>Scale the width and height of requested cropRegion with scaling factor of
17900 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
17901 respectively.<wbr/>
17902 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
17903 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
17904 follow the general cropping rule for this new cropRegion and effective active
17905 array size.<wbr/></li>
17906 </ol>
17907 </li>
17908 <li>
17909 <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/>
17910 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
17911 The reported cropRegion may be slightly different with the requested cropRegion since
17912 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
17913 hardware limitations.<wbr/></p>
17914 </li>
17915 </ul>
17916 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
17917             </td>
17918           </tr>
17919
17920           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17921            <!-- end of entry -->
17922         
17923         
17924
17925       <!-- end of kind -->
17926       </tbody>
17927       <tr><td colspan="7" class="kind">static</td></tr>
17928
17929       <thead class="entries_header">
17930         <tr>
17931           <th class="th_name">Property Name</th>
17932           <th class="th_type">Type</th>
17933           <th class="th_description">Description</th>
17934           <th class="th_units">Units</th>
17935           <th class="th_range">Range</th>
17936           <th class="th_hal_version">Initial HIDL HAL version</th>
17937           <th class="th_tags">Tags</th>
17938         </tr>
17939       </thead>
17940
17941       <tbody>
17942
17943         
17944
17945         
17946
17947         
17948
17949         
17950
17951                 
17952           <tr class="entry" id="static_android.scaler.availableFormats">
17953             <td class="entry_name
17954                 entry_name_deprecated
17955              " rowspan="5">
17956               android.<wbr/>scaler.<wbr/>available<wbr/>Formats
17957             </td>
17958             <td class="entry_type">
17959                 <span class="entry_type_name entry_type_name_enum">int32</span>
17960                 <span class="entry_type_container">x</span>
17961
17962                 <span class="entry_type_array">
17963                   n
17964                 </span>
17965               <span class="entry_type_visibility"> [hidden as imageFormat]</span>
17966
17967
17968
17969               <span class="entry_type_deprecated">[deprecated] </span>
17970
17971
17972                 <ul class="entry_type_enum">
17973                   <li>
17974                     <span class="entry_type_enum_name">RAW16 (v3.2)</span>
17975                     <span class="entry_type_enum_optional">[optional]</span>
17976                     <span class="entry_type_enum_value">0x20</span>
17977                     <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
17978 buffers with 16-bit pixels.<wbr/></p>
17979 <p>Buffers of this format are typically expected to have a
17980 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
17981 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
17982 CFAs that are not representable by a format in
17983 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
17984 use this format.<wbr/></p>
17985 <p>Buffers of this format will also follow the constraints given for
17986 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
17987 <p>This format is intended to give users access to the full contents
17988 of the buffers coming directly from the image sensor prior to any
17989 cropping or scaling operations,<wbr/> and all coordinate systems for
17990 metadata used for this format are relative to the size of the
17991 active region of the image sensor before any geometric distortion
17992 correction has been applied (i.<wbr/>e.<wbr/>
17993 <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
17994 dimensions for this format are limited to the full dimensions of
17995 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
17996 <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
17997 only supported output size).<wbr/></p>
17998 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
17999 the full set of performance guarantees.<wbr/></p></span>
18000                   </li>
18001                   <li>
18002                     <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span>
18003                     <span class="entry_type_enum_optional">[optional]</span>
18004                     <span class="entry_type_enum_value">0x24</span>
18005                     <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
18006 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
18007 as referred in public API) is a format for raw image buffers
18008 coming from an image sensor.<wbr/></p>
18009 <p>The actual structure of buffers of this format is
18010 platform-specific,<wbr/> but must follow several constraints:</p>
18011 <ol>
18012 <li>No image post-processing operations may have been applied to
18013 buffers of this type.<wbr/> These buffers contain raw image data coming
18014 directly from the image sensor.<wbr/></li>
18015 <li>If a buffer of this format is passed to the camera device for
18016 reprocessing,<wbr/> the resulting images will be identical to the images
18017 produced if the buffer had come directly from the sensor and was
18018 processed with the same settings.<wbr/></li>
18019 </ol>
18020 <p>The intended use for this format is to allow access to the native
18021 raw format buffers coming directly from the camera sensor without
18022 any additional conversions or decrease in framerate.<wbr/></p>
18023 <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
18024 performance guarantees.<wbr/></p></span>
18025                   </li>
18026                   <li>
18027                     <span class="entry_type_enum_name">YV12 (v3.2)</span>
18028                     <span class="entry_type_enum_optional">[optional]</span>
18029                     <span class="entry_type_enum_value">0x32315659</span>
18030                     <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
18031                   </li>
18032                   <li>
18033                     <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span>
18034                     <span class="entry_type_enum_optional">[optional]</span>
18035                     <span class="entry_type_enum_value">0x11</span>
18036                     <span class="entry_type_enum_notes"><p>NV21</p></span>
18037                   </li>
18038                   <li>
18039                     <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span>
18040                     <span class="entry_type_enum_value">0x22</span>
18041                     <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
18042                   </li>
18043                   <li>
18044                     <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span>
18045                     <span class="entry_type_enum_value">0x23</span>
18046                     <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
18047                   </li>
18048                   <li>
18049                     <span class="entry_type_enum_name">BLOB (v3.2)</span>
18050                     <span class="entry_type_enum_value">0x21</span>
18051                     <span class="entry_type_enum_notes"><p>JPEG format</p></span>
18052                   </li>
18053                 </ul>
18054
18055             </td> <!-- entry_type -->
18056
18057             <td class="entry_description">
18058               <p>The list of image formats that are supported by this
18059 camera device for output streams.<wbr/></p>
18060             </td>
18061
18062             <td class="entry_units">
18063             </td>
18064
18065             <td class="entry_range">
18066               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18067             </td>
18068
18069             <td class="entry_hal_version">
18070               <p>3.<wbr/>2</p>
18071             </td>
18072
18073             <td class="entry_tags">
18074               <ul class="entry_tags">
18075                   <li><a href="#tag_BC">BC</a></li>
18076               </ul>
18077             </td>
18078
18079           </tr>
18080           <tr class="entries_header">
18081             <th class="th_details" colspan="6">Details</th>
18082           </tr>
18083           <tr class="entry_cont">
18084             <td class="entry_details" colspan="6">
18085               <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
18086 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
18087             </td>
18088           </tr>
18089
18090           <tr class="entries_header">
18091             <th class="th_details" colspan="6">HAL Implementation Details</th>
18092           </tr>
18093           <tr class="entry_cont">
18094             <td class="entry_details" colspan="6">
18095               <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
18096 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
18097 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
18098 gralloc module will select a format based on the usage flags provided
18099 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
18100 usually used by preview and recording streams,<wbr/> where the application doesn't
18101 need access the image data.<wbr/></p>
18102 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
18103 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
18104 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
18105 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
18106 recommended that any information used by the camera device when
18107 processing images is fully expressed by the result metadata
18108 for that image buffer.<wbr/></p>
18109             </td>
18110           </tr>
18111
18112           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18113            <!-- end of entry -->
18114         
18115                 
18116           <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
18117             <td class="entry_name
18118                 entry_name_deprecated
18119              " rowspan="3">
18120               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
18121             </td>
18122             <td class="entry_type">
18123                 <span class="entry_type_name">int64</span>
18124                 <span class="entry_type_container">x</span>
18125
18126                 <span class="entry_type_array">
18127                   n
18128                 </span>
18129               <span class="entry_type_visibility"> [hidden]</span>
18130
18131
18132
18133               <span class="entry_type_deprecated">[deprecated] </span>
18134
18135
18136
18137             </td> <!-- entry_type -->
18138
18139             <td class="entry_description">
18140               <p>The minimum frame duration that is supported
18141 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
18142             </td>
18143
18144             <td class="entry_units">
18145               Nanoseconds
18146             </td>
18147
18148             <td class="entry_range">
18149               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18150               <p>TODO: Remove property.<wbr/></p>
18151             </td>
18152
18153             <td class="entry_hal_version">
18154               <p>3.<wbr/>2</p>
18155             </td>
18156
18157             <td class="entry_tags">
18158               <ul class="entry_tags">
18159                   <li><a href="#tag_BC">BC</a></li>
18160               </ul>
18161             </td>
18162
18163           </tr>
18164           <tr class="entries_header">
18165             <th class="th_details" colspan="6">Details</th>
18166           </tr>
18167           <tr class="entry_cont">
18168             <td class="entry_details" colspan="6">
18169               <p>This corresponds to the minimum steady-state frame duration when only
18170 that JPEG stream is active and captured in a burst,<wbr/> with all
18171 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
18172 <p>When multiple streams are configured,<wbr/> the minimum
18173 frame duration will be &gt;= max(individual stream min
18174 durations)</p>
18175             </td>
18176           </tr>
18177
18178
18179           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18180            <!-- end of entry -->
18181         
18182                 
18183           <tr class="entry" id="static_android.scaler.availableJpegSizes">
18184             <td class="entry_name
18185                 entry_name_deprecated
18186              " rowspan="5">
18187               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
18188             </td>
18189             <td class="entry_type">
18190                 <span class="entry_type_name">int32</span>
18191                 <span class="entry_type_container">x</span>
18192
18193                 <span class="entry_type_array">
18194                   n x 2
18195                 </span>
18196               <span class="entry_type_visibility"> [hidden as size]</span>
18197
18198
18199
18200               <span class="entry_type_deprecated">[deprecated] </span>
18201
18202
18203
18204             </td> <!-- entry_type -->
18205
18206             <td class="entry_description">
18207               <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
18208             </td>
18209
18210             <td class="entry_units">
18211             </td>
18212
18213             <td class="entry_range">
18214               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18215               <p>TODO: Remove property.<wbr/></p>
18216             </td>
18217
18218             <td class="entry_hal_version">
18219               <p>3.<wbr/>2</p>
18220             </td>
18221
18222             <td class="entry_tags">
18223               <ul class="entry_tags">
18224                   <li><a href="#tag_BC">BC</a></li>
18225               </ul>
18226             </td>
18227
18228           </tr>
18229           <tr class="entries_header">
18230             <th class="th_details" colspan="6">Details</th>
18231           </tr>
18232           <tr class="entry_cont">
18233             <td class="entry_details" colspan="6">
18234               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
18235 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>
18236             </td>
18237           </tr>
18238
18239           <tr class="entries_header">
18240             <th class="th_details" colspan="6">HAL Implementation Details</th>
18241           </tr>
18242           <tr class="entry_cont">
18243             <td class="entry_details" colspan="6">
18244               <p>The HAL must include sensor maximum resolution
18245 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
18246 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
18247             </td>
18248           </tr>
18249
18250           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18251            <!-- end of entry -->
18252         
18253                 
18254           <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
18255             <td class="entry_name
18256              " rowspan="3">
18257               android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
18258             </td>
18259             <td class="entry_type">
18260                 <span class="entry_type_name">float</span>
18261
18262               <span class="entry_type_visibility"> [public]</span>
18263
18264
18265               <span class="entry_type_hwlevel">[legacy] </span>
18266
18267
18268
18269
18270             </td> <!-- entry_type -->
18271
18272             <td class="entry_description">
18273               <p>The maximum ratio between both active area width
18274 and crop region width,<wbr/> and active area height and
18275 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18276             </td>
18277
18278             <td class="entry_units">
18279               Zoom scale factor
18280             </td>
18281
18282             <td class="entry_range">
18283               <p>&gt;=1</p>
18284             </td>
18285
18286             <td class="entry_hal_version">
18287               <p>3.<wbr/>2</p>
18288             </td>
18289
18290             <td class="entry_tags">
18291               <ul class="entry_tags">
18292                   <li><a href="#tag_BC">BC</a></li>
18293               </ul>
18294             </td>
18295
18296           </tr>
18297           <tr class="entries_header">
18298             <th class="th_details" colspan="6">Details</th>
18299           </tr>
18300           <tr class="entry_cont">
18301             <td class="entry_details" colspan="6">
18302               <p>This represents the maximum amount of zooming possible by
18303 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
18304 window size.<wbr/></p>
18305 <p>Crop regions that have a width or height that is smaller
18306 than this ratio allows will be rounded up to the minimum
18307 allowed size by the camera device.<wbr/></p>
18308             </td>
18309           </tr>
18310
18311
18312           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18313            <!-- end of entry -->
18314         
18315                 
18316           <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
18317             <td class="entry_name
18318                 entry_name_deprecated
18319              " rowspan="3">
18320               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
18321             </td>
18322             <td class="entry_type">
18323                 <span class="entry_type_name">int64</span>
18324                 <span class="entry_type_container">x</span>
18325
18326                 <span class="entry_type_array">
18327                   n
18328                 </span>
18329               <span class="entry_type_visibility"> [hidden]</span>
18330
18331
18332
18333               <span class="entry_type_deprecated">[deprecated] </span>
18334
18335
18336
18337             </td> <!-- entry_type -->
18338
18339             <td class="entry_description">
18340               <p>For each available processed output size (defined in
18341 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
18342 minimum supportable frame duration for that size.<wbr/></p>
18343             </td>
18344
18345             <td class="entry_units">
18346               Nanoseconds
18347             </td>
18348
18349             <td class="entry_range">
18350               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18351             </td>
18352
18353             <td class="entry_hal_version">
18354               <p>3.<wbr/>2</p>
18355             </td>
18356
18357             <td class="entry_tags">
18358               <ul class="entry_tags">
18359                   <li><a href="#tag_BC">BC</a></li>
18360               </ul>
18361             </td>
18362
18363           </tr>
18364           <tr class="entries_header">
18365             <th class="th_details" colspan="6">Details</th>
18366           </tr>
18367           <tr class="entry_cont">
18368             <td class="entry_details" colspan="6">
18369               <p>This should correspond to the frame duration when only that processed
18370 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18371 set to FAST.<wbr/></p>
18372 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
18373 be &gt;= max(individual stream min durations).<wbr/></p>
18374             </td>
18375           </tr>
18376
18377
18378           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18379            <!-- end of entry -->
18380         
18381                 
18382           <tr class="entry" id="static_android.scaler.availableProcessedSizes">
18383             <td class="entry_name
18384                 entry_name_deprecated
18385              " rowspan="5">
18386               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
18387             </td>
18388             <td class="entry_type">
18389                 <span class="entry_type_name">int32</span>
18390                 <span class="entry_type_container">x</span>
18391
18392                 <span class="entry_type_array">
18393                   n x 2
18394                 </span>
18395               <span class="entry_type_visibility"> [hidden as size]</span>
18396
18397
18398
18399               <span class="entry_type_deprecated">[deprecated] </span>
18400
18401
18402
18403             </td> <!-- entry_type -->
18404
18405             <td class="entry_description">
18406               <p>The resolutions available for use with
18407 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
18408 platform opaque YUV/<wbr/>RGB streams to the GPU or video
18409 encoders.<wbr/></p>
18410             </td>
18411
18412             <td class="entry_units">
18413             </td>
18414
18415             <td class="entry_range">
18416               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18417             </td>
18418
18419             <td class="entry_hal_version">
18420               <p>3.<wbr/>2</p>
18421             </td>
18422
18423             <td class="entry_tags">
18424               <ul class="entry_tags">
18425                   <li><a href="#tag_BC">BC</a></li>
18426               </ul>
18427             </td>
18428
18429           </tr>
18430           <tr class="entries_header">
18431             <th class="th_details" colspan="6">Details</th>
18432           </tr>
18433           <tr class="entry_cont">
18434             <td class="entry_details" colspan="6">
18435               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
18436 <p>For a given use case,<wbr/> the actual maximum supported resolution
18437 may be lower than what is listed here,<wbr/> depending on the destination
18438 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18439 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18440 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18441 can provide.<wbr/></p>
18442 <p>Please reference the documentation for the image data destination to
18443 check if it limits the maximum size for image data.<wbr/></p>
18444             </td>
18445           </tr>
18446
18447           <tr class="entries_header">
18448             <th class="th_details" colspan="6">HAL Implementation Details</th>
18449           </tr>
18450           <tr class="entry_cont">
18451             <td class="entry_details" colspan="6">
18452               <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/>
18453 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>
18454 and each below resolution if it is smaller than or equal to the sensor
18455 maximum resolution (if they are not listed in JPEG sizes already):</p>
18456 <ul>
18457 <li>240p (320 x 240)</li>
18458 <li>480p (640 x 480)</li>
18459 <li>720p (1280 x 720)</li>
18460 <li>1080p (1920 x 1080)</li>
18461 </ul>
18462 <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/>
18463 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
18464             </td>
18465           </tr>
18466
18467           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18468            <!-- end of entry -->
18469         
18470                 
18471           <tr class="entry" id="static_android.scaler.availableRawMinDurations">
18472             <td class="entry_name
18473                 entry_name_deprecated
18474              " rowspan="3">
18475               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
18476             </td>
18477             <td class="entry_type">
18478                 <span class="entry_type_name">int64</span>
18479                 <span class="entry_type_container">x</span>
18480
18481                 <span class="entry_type_array">
18482                   n
18483                 </span>
18484               <span class="entry_type_visibility"> [system]</span>
18485
18486
18487
18488               <span class="entry_type_deprecated">[deprecated] </span>
18489
18490
18491
18492             </td> <!-- entry_type -->
18493
18494             <td class="entry_description">
18495               <p>For each available raw output size (defined in
18496 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
18497 supportable frame duration for that size.<wbr/></p>
18498             </td>
18499
18500             <td class="entry_units">
18501               Nanoseconds
18502             </td>
18503
18504             <td class="entry_range">
18505               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18506             </td>
18507
18508             <td class="entry_hal_version">
18509               <p>3.<wbr/>2</p>
18510             </td>
18511
18512             <td class="entry_tags">
18513               <ul class="entry_tags">
18514                   <li><a href="#tag_BC">BC</a></li>
18515               </ul>
18516             </td>
18517
18518           </tr>
18519           <tr class="entries_header">
18520             <th class="th_details" colspan="6">Details</th>
18521           </tr>
18522           <tr class="entry_cont">
18523             <td class="entry_details" colspan="6">
18524               <p>Should correspond to the frame duration when only the raw stream is
18525 active.<wbr/></p>
18526 <p>When multiple streams are configured,<wbr/> the minimum
18527 frame duration will be &gt;= max(individual stream min
18528 durations)</p>
18529             </td>
18530           </tr>
18531
18532
18533           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18534            <!-- end of entry -->
18535         
18536                 
18537           <tr class="entry" id="static_android.scaler.availableRawSizes">
18538             <td class="entry_name
18539                 entry_name_deprecated
18540              " rowspan="1">
18541               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
18542             </td>
18543             <td class="entry_type">
18544                 <span class="entry_type_name">int32</span>
18545                 <span class="entry_type_container">x</span>
18546
18547                 <span class="entry_type_array">
18548                   n x 2
18549                 </span>
18550               <span class="entry_type_visibility"> [system as size]</span>
18551
18552
18553
18554               <span class="entry_type_deprecated">[deprecated] </span>
18555
18556
18557
18558             </td> <!-- entry_type -->
18559
18560             <td class="entry_description">
18561               <p>The resolutions available for use with raw
18562 sensor output streams,<wbr/> listed as width,<wbr/>
18563 height</p>
18564             </td>
18565
18566             <td class="entry_units">
18567             </td>
18568
18569             <td class="entry_range">
18570               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18571             </td>
18572
18573             <td class="entry_hal_version">
18574               <p>3.<wbr/>2</p>
18575             </td>
18576
18577             <td class="entry_tags">
18578             </td>
18579
18580           </tr>
18581
18582
18583           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18584            <!-- end of entry -->
18585         
18586                 
18587           <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
18588             <td class="entry_name
18589              " rowspan="5">
18590               android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
18591             </td>
18592             <td class="entry_type">
18593                 <span class="entry_type_name">int32</span>
18594
18595               <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
18596
18597
18598
18599
18600
18601
18602             </td> <!-- entry_type -->
18603
18604             <td class="entry_description">
18605               <p>The mapping of image formats that are supported by this
18606 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
18607             </td>
18608
18609             <td class="entry_units">
18610             </td>
18611
18612             <td class="entry_range">
18613             </td>
18614
18615             <td class="entry_hal_version">
18616               <p>3.<wbr/>2</p>
18617             </td>
18618
18619             <td class="entry_tags">
18620               <ul class="entry_tags">
18621                   <li><a href="#tag_REPROC">REPROC</a></li>
18622               </ul>
18623             </td>
18624
18625           </tr>
18626           <tr class="entries_header">
18627             <th class="th_details" colspan="6">Details</th>
18628           </tr>
18629           <tr class="entry_cont">
18630             <td class="entry_details" colspan="6">
18631               <p>All camera devices with at least 1
18632 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
18633 available input format.<wbr/></p>
18634 <p>The camera device will support the following map of formats,<wbr/>
18635 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
18636 <table>
18637 <thead>
18638 <tr>
18639 <th align="left">Input Format</th>
18640 <th align="left">Output Format</th>
18641 <th align="left">Capability</th>
18642 </tr>
18643 </thead>
18644 <tbody>
18645 <tr>
18646 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18647 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18648 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18649 </tr>
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#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</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#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
18657 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18658 <td align="left">YUV_<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#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
18663 <td align="left">YUV_<wbr/>REPROCESSING</td>
18664 </tr>
18665 </tbody>
18666 </table>
18667 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
18668 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
18669 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
18670 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
18671 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>
18672 <p>Attempting to configure an input stream with output streams not
18673 listed as available in this map is not valid.<wbr/></p>
18674             </td>
18675           </tr>
18676
18677           <tr class="entries_header">
18678             <th class="th_details" colspan="6">HAL Implementation Details</th>
18679           </tr>
18680           <tr class="entry_cont">
18681             <td class="entry_details" colspan="6">
18682               <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
18683 of the image format enumerations.<wbr/> The PRIVATE format refers to the
18684 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
18685 the actual format by using the gralloc usage flags.<wbr/>
18686 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
18687 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
18688 See camera3.<wbr/>h for more details.<wbr/></p>
18689 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
18690 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
18691 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
18692 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
18693 <p>A code sample to read/<wbr/>write this encoding (with a device that
18694 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
18695 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
18696 <pre><code>//<wbr/> reading
18697 int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
18698 for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
18699     int32_<wbr/>t format = contents[i++];
18700     int32_<wbr/>t length = contents[i++];
18701     int32_<wbr/>t output_<wbr/>formats[length];
18702     memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
18703            length * sizeof(int32_<wbr/>t));
18704     i += length;
18705 }
18706
18707 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
18708 int32_<wbr/>t[] contents = {
18709   IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18710   YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18711 };
18712 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
18713       sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
18714 </code></pre>
18715 <p>If the HAL claims to support any of the capabilities listed in the
18716 above details,<wbr/> then it must also support all the input-output
18717 combinations listed for that capability.<wbr/> It can optionally support
18718 additional formats if it so chooses.<wbr/></p>
18719             </td>
18720           </tr>
18721
18722           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18723            <!-- end of entry -->
18724         
18725                 
18726           <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
18727             <td class="entry_name
18728              " rowspan="5">
18729               android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
18730             </td>
18731             <td class="entry_type">
18732                 <span class="entry_type_name entry_type_name_enum">int32</span>
18733                 <span class="entry_type_container">x</span>
18734
18735                 <span class="entry_type_array">
18736                   n x 4
18737                 </span>
18738               <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
18739
18740
18741               <span class="entry_type_hwlevel">[legacy] </span>
18742
18743
18744
18745                 <ul class="entry_type_enum">
18746                   <li>
18747                     <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
18748                   </li>
18749                   <li>
18750                     <span class="entry_type_enum_name">INPUT (v3.2)</span>
18751                   </li>
18752                 </ul>
18753
18754             </td> <!-- entry_type -->
18755
18756             <td class="entry_description">
18757               <p>The available stream configurations that this
18758 camera device supports
18759 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
18760             </td>
18761
18762             <td class="entry_units">
18763             </td>
18764
18765             <td class="entry_range">
18766             </td>
18767
18768             <td class="entry_hal_version">
18769               <p>3.<wbr/>2</p>
18770             </td>
18771
18772             <td class="entry_tags">
18773             </td>
18774
18775           </tr>
18776           <tr class="entries_header">
18777             <th class="th_details" colspan="6">Details</th>
18778           </tr>
18779           <tr class="entry_cont">
18780             <td class="entry_details" colspan="6">
18781               <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
18782 tuples.<wbr/></p>
18783 <p>For a given use case,<wbr/> the actual maximum supported resolution
18784 may be lower than what is listed here,<wbr/> depending on the destination
18785 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18786 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18787 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18788 can provide.<wbr/></p>
18789 <p>Please reference the documentation for the image data destination to
18790 check if it limits the maximum size for image data.<wbr/></p>
18791 <p>Not all output formats may be supported in a configuration with
18792 an input stream of a particular format.<wbr/> For more details,<wbr/> see
18793 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
18794 <p>The following table describes the minimum required output stream
18795 configurations based on the hardware level
18796 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
18797 <table>
18798 <thead>
18799 <tr>
18800 <th align="center">Format</th>
18801 <th align="center">Size</th>
18802 <th align="center">Hardware Level</th>
18803 <th align="center">Notes</th>
18804 </tr>
18805 </thead>
18806 <tbody>
18807 <tr>
18808 <td align="center">JPEG</td>
18809 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
18810 <td align="center">Any</td>
18811 <td align="center"></td>
18812 </tr>
18813 <tr>
18814 <td align="center">JPEG</td>
18815 <td align="center">1920x1080 (1080p)</td>
18816 <td align="center">Any</td>
18817 <td align="center">if 1080p &lt;= activeArraySize</td>
18818 </tr>
18819 <tr>
18820 <td align="center">JPEG</td>
18821 <td align="center">1280x720 (720)</td>
18822 <td align="center">Any</td>
18823 <td align="center">if 720p &lt;= activeArraySize</td>
18824 </tr>
18825 <tr>
18826 <td align="center">JPEG</td>
18827 <td align="center">640x480 (480p)</td>
18828 <td align="center">Any</td>
18829 <td align="center">if 480p &lt;= activeArraySize</td>
18830 </tr>
18831 <tr>
18832 <td align="center">JPEG</td>
18833 <td align="center">320x240 (240p)</td>
18834 <td align="center">Any</td>
18835 <td align="center">if 240p &lt;= activeArraySize</td>
18836 </tr>
18837 <tr>
18838 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
18839 <td align="center">all output sizes available for JPEG</td>
18840 <td align="center">FULL</td>
18841 <td align="center"></td>
18842 </tr>
18843 <tr>
18844 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
18845 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
18846 <td align="center">LIMITED</td>
18847 <td align="center"></td>
18848 </tr>
18849 <tr>
18850 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
18851 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
18852 <td align="center">Any</td>
18853 <td align="center"></td>
18854 </tr>
18855 </tbody>
18856 </table>
18857 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
18858 mandatory stream configurations on a per-capability basis.<wbr/></p>
18859             </td>
18860           </tr>
18861
18862           <tr class="entries_header">
18863             <th class="th_details" colspan="6">HAL Implementation Details</th>
18864           </tr>
18865           <tr class="entry_cont">
18866             <td class="entry_details" colspan="6">
18867               <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
18868 of sensor maximum resolution for JPEG formats (regardless of hardware
18869 level).<wbr/></p>
18870 <p>(The following is a rewording of the above required table):</p>
18871 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
18872 <ul>
18873 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
18874 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
18875 (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/>
18876 it does not have to be included in the supported JPEG sizes.<wbr/></li>
18877 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
18878 the dimensions being a multiple of 16.<wbr/></li>
18879 </ul>
18880 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
18881 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
18882 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
18883 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
18884 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
18885 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
18886 3264x2448.<wbr/></p>
18887 <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/>
18888 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
18889 here as output streams.<wbr/></p>
18890 <p>It must also include each below resolution if it is smaller than or
18891 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
18892 formats),<wbr/> as output streams:</p>
18893 <ul>
18894 <li>240p (320 x 240)</li>
18895 <li>480p (640 x 480)</li>
18896 <li>720p (1280 x 720)</li>
18897 <li>1080p (1920 x 1080)</li>
18898 </ul>
18899 <p>For LIMITED capability devices
18900 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
18901 the HAL only has to list up to the maximum video size
18902 supported by the device.<wbr/></p>
18903 <p>Regardless of hardware level,<wbr/> every output resolution available for
18904 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
18905 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
18906 <ul>
18907 <li>availableFormats</li>
18908 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
18909 </ul>
18910             </td>
18911           </tr>
18912
18913           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18914            <!-- end of entry -->
18915         
18916                 
18917           <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
18918             <td class="entry_name
18919              " rowspan="3">
18920               android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
18921             </td>
18922             <td class="entry_type">
18923                 <span class="entry_type_name">int64</span>
18924                 <span class="entry_type_container">x</span>
18925
18926                 <span class="entry_type_array">
18927                   4 x n
18928                 </span>
18929               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
18930
18931
18932               <span class="entry_type_hwlevel">[legacy] </span>
18933
18934
18935
18936
18937             </td> <!-- entry_type -->
18938
18939             <td class="entry_description">
18940               <p>This lists the minimum frame duration for each
18941 format/<wbr/>size combination.<wbr/></p>
18942             </td>
18943
18944             <td class="entry_units">
18945               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
18946             </td>
18947
18948             <td class="entry_range">
18949             </td>
18950
18951             <td class="entry_hal_version">
18952               <p>3.<wbr/>2</p>
18953             </td>
18954
18955             <td class="entry_tags">
18956               <ul class="entry_tags">
18957                   <li><a href="#tag_V1">V1</a></li>
18958               </ul>
18959             </td>
18960
18961           </tr>
18962           <tr class="entries_header">
18963             <th class="th_details" colspan="6">Details</th>
18964           </tr>
18965           <tr class="entry_cont">
18966             <td class="entry_details" colspan="6">
18967               <p>This should correspond to the frame duration when only that
18968 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18969 set to either OFF or FAST.<wbr/></p>
18970 <p>When multiple streams are used in a request,<wbr/> the minimum frame
18971 duration will be max(individual stream min durations).<wbr/></p>
18972 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
18973 is the same regardless of whether the stream is input or output.<wbr/></p>
18974 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
18975 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
18976 calculating the max frame rate.<wbr/></p>
18977             </td>
18978           </tr>
18979
18980
18981           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18982            <!-- end of entry -->
18983         
18984                 
18985           <tr class="entry" id="static_android.scaler.availableStallDurations">
18986             <td class="entry_name
18987              " rowspan="5">
18988               android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
18989             </td>
18990             <td class="entry_type">
18991                 <span class="entry_type_name">int64</span>
18992                 <span class="entry_type_container">x</span>
18993
18994                 <span class="entry_type_array">
18995                   4 x n
18996                 </span>
18997               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
18998
18999
19000               <span class="entry_type_hwlevel">[legacy] </span>
19001
19002
19003
19004
19005             </td> <!-- entry_type -->
19006
19007             <td class="entry_description">
19008               <p>This lists the maximum stall duration for each
19009 output format/<wbr/>size combination.<wbr/></p>
19010             </td>
19011
19012             <td class="entry_units">
19013               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
19014             </td>
19015
19016             <td class="entry_range">
19017             </td>
19018
19019             <td class="entry_hal_version">
19020               <p>3.<wbr/>2</p>
19021             </td>
19022
19023             <td class="entry_tags">
19024               <ul class="entry_tags">
19025                   <li><a href="#tag_V1">V1</a></li>
19026               </ul>
19027             </td>
19028
19029           </tr>
19030           <tr class="entries_header">
19031             <th class="th_details" colspan="6">Details</th>
19032           </tr>
19033           <tr class="entry_cont">
19034             <td class="entry_details" colspan="6">
19035               <p>A stall duration is how much extra time would get added
19036 to the normal minimum frame duration for a repeating request
19037 that has streams with non-zero stall.<wbr/></p>
19038 <p>For example,<wbr/> consider JPEG captures which have the following
19039 characteristics:</p>
19040 <ul>
19041 <li>JPEG streams act like processed YUV streams in requests for which
19042 they are not included; in requests in which they are directly
19043 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
19044 JPEG stream requires the underlying YUV data to always be ready for
19045 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
19046 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
19047 <li>The JPEG processor can run concurrently to the rest of the camera
19048 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
19049 </ul>
19050 <p>In other words,<wbr/> using a repeating YUV request would result
19051 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
19052 JPEG request is submitted periodically,<wbr/> the frame rate will stay
19053 at 30 FPS (as long as we wait for the previous JPEG to return each
19054 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
19055 the frame rate will drop from 30 FPS.<wbr/></p>
19056 <p>In general,<wbr/> submitting a new request with a non-0 stall time
19057 stream will <em>not</em> cause a frame rate drop unless there are still
19058 outstanding buffers for that stream from previous requests.<wbr/></p>
19059 <p>Submitting a repeating request with streams (call this <code>S</code>)
19060 is the same as setting the minimum frame duration from
19061 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
19062 the maximum stall duration for <code>S</code>.<wbr/></p>
19063 <p>If interleaving requests with and without a stall duration,<wbr/>
19064 a request will stall by the maximum of the remaining times
19065 for each can-stall stream with outstanding buffers.<wbr/></p>
19066 <p>This means that a stalling request will not have an exposure start
19067 until the stall has completed.<wbr/></p>
19068 <p>This should correspond to the stall duration when only that stream is
19069 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
19070 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
19071 effectively results in an indeterminate stall duration for all
19072 streams in a request (the regular stall calculation rules are
19073 ignored).<wbr/></p>
19074 <p>The following formats may always have a stall duration:</p>
19075 <ul>
19076 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
19077 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
19078 </ul>
19079 <p>The following formats will never have a stall duration:</p>
19080 <ul>
19081 <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>
19082 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
19083 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
19084 </ul>
19085 <p>All other formats may or may not have an allowed stall duration on
19086 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
19087 for more details.<wbr/></p>
19088 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
19089 calculating the max frame rate (absent stalls).<wbr/></p>
19090             </td>
19091           </tr>
19092
19093           <tr class="entries_header">
19094             <th class="th_details" colspan="6">HAL Implementation Details</th>
19095           </tr>
19096           <tr class="entry_cont">
19097             <td class="entry_details" colspan="6">
19098               <p>If possible,<wbr/> it is recommended that all non-JPEG formats
19099 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
19100 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
19101             </td>
19102           </tr>
19103
19104           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19105            <!-- end of entry -->
19106         
19107                 
19108           <tr class="entry" id="static_android.scaler.streamConfigurationMap">
19109             <td class="entry_name
19110              " rowspan="5">
19111               android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
19112             </td>
19113             <td class="entry_type">
19114                 <span class="entry_type_name">int32</span>
19115
19116               <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
19117
19118               <span class="entry_type_synthetic">[synthetic] </span>
19119
19120               <span class="entry_type_hwlevel">[legacy] </span>
19121
19122
19123
19124
19125             </td> <!-- entry_type -->
19126
19127             <td class="entry_description">
19128               <p>The available stream configurations that this
19129 camera device supports; also includes the minimum frame durations
19130 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
19131             </td>
19132
19133             <td class="entry_units">
19134             </td>
19135
19136             <td class="entry_range">
19137             </td>
19138
19139             <td class="entry_hal_version">
19140               <p>3.<wbr/>2</p>
19141             </td>
19142
19143             <td class="entry_tags">
19144             </td>
19145
19146           </tr>
19147           <tr class="entries_header">
19148             <th class="th_details" colspan="6">Details</th>
19149           </tr>
19150           <tr class="entry_cont">
19151             <td class="entry_details" colspan="6">
19152               <p>All camera devices will support sensor maximum resolution (defined by
19153 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>) for the JPEG format.<wbr/></p>
19154 <p>For a given use case,<wbr/> the actual maximum supported resolution
19155 may be lower than what is listed here,<wbr/> depending on the destination
19156 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19157 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19158 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19159 can provide.<wbr/></p>
19160 <p>Please reference the documentation for the image data destination to
19161 check if it limits the maximum size for image data.<wbr/></p>
19162 <p>The following table describes the minimum required output stream
19163 configurations based on the hardware level
19164 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19165 <table>
19166 <thead>
19167 <tr>
19168 <th align="center">Format</th>
19169 <th align="center">Size</th>
19170 <th align="center">Hardware Level</th>
19171 <th align="center">Notes</th>
19172 </tr>
19173 </thead>
19174 <tbody>
19175 <tr>
19176 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19177 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
19178 <td align="center">Any</td>
19179 <td align="center"></td>
19180 </tr>
19181 <tr>
19182 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19183 <td align="center">1920x1080 (1080p)</td>
19184 <td align="center">Any</td>
19185 <td align="center">if 1080p &lt;= activeArraySize</td>
19186 </tr>
19187 <tr>
19188 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19189 <td align="center">1280x720 (720p)</td>
19190 <td align="center">Any</td>
19191 <td align="center">if 720p &lt;= activeArraySize</td>
19192 </tr>
19193 <tr>
19194 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19195 <td align="center">640x480 (480p)</td>
19196 <td align="center">Any</td>
19197 <td align="center">if 480p &lt;= activeArraySize</td>
19198 </tr>
19199 <tr>
19200 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19201 <td align="center">320x240 (240p)</td>
19202 <td align="center">Any</td>
19203 <td align="center">if 240p &lt;= activeArraySize</td>
19204 </tr>
19205 <tr>
19206 <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>
19207 <td align="center">all output sizes available for JPEG</td>
19208 <td align="center">FULL</td>
19209 <td align="center"></td>
19210 </tr>
19211 <tr>
19212 <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>
19213 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
19214 <td align="center">LIMITED</td>
19215 <td align="center"></td>
19216 </tr>
19217 <tr>
19218 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
19219 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
19220 <td align="center">Any</td>
19221 <td align="center"></td>
19222 </tr>
19223 </tbody>
19224 </table>
19225 <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
19226 stream configurations on a per-capability basis.<wbr/></p>
19227 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
19228 <ul>
19229 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
19230 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
19231 (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/>
19232 it does not have to be included in the supported JPEG sizes.<wbr/></li>
19233 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
19234 the dimensions being a multiple of 16.<wbr/>
19235 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
19236 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
19237 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
19238 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
19239 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
19240 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
19241 3264x2448.<wbr/></li>
19242 </ul>
19243             </td>
19244           </tr>
19245
19246           <tr class="entries_header">
19247             <th class="th_details" colspan="6">HAL Implementation Details</th>
19248           </tr>
19249           <tr class="entry_cont">
19250             <td class="entry_details" colspan="6">
19251               <p>Do not set this property directly
19252 (it is synthetic and will not be available at the HAL layer);
19253 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
19254 <p>Not all output formats may be supported in a configuration with
19255 an input stream of a particular format.<wbr/> For more details,<wbr/> see
19256 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
19257 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
19258 of sensor maximum resolution for JPEG formats (regardless of hardware
19259 level).<wbr/></p>
19260 <p>(The following is a rewording of the above required table):</p>
19261 <p>The HAL must include sensor maximum resolution (defined by
19262 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
19263 <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/>
19264 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19265 here as output streams.<wbr/></p>
19266 <p>It must also include each below resolution if it is smaller than or
19267 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19268 formats),<wbr/> as output streams:</p>
19269 <ul>
19270 <li>240p (320 x 240)</li>
19271 <li>480p (640 x 480)</li>
19272 <li>720p (1280 x 720)</li>
19273 <li>1080p (1920 x 1080)</li>
19274 </ul>
19275 <p>For LIMITED capability devices
19276 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19277 the HAL only has to list up to the maximum video size
19278 supported by the device.<wbr/></p>
19279 <p>Regardless of hardware level,<wbr/> every output resolution available for
19280 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19281 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19282 <ul>
19283 <li>availableFormats</li>
19284 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19285 </ul>
19286             </td>
19287           </tr>
19288
19289           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19290            <!-- end of entry -->
19291         
19292                 
19293           <tr class="entry" id="static_android.scaler.croppingType">
19294             <td class="entry_name
19295              " rowspan="3">
19296               android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
19297             </td>
19298             <td class="entry_type">
19299                 <span class="entry_type_name entry_type_name_enum">byte</span>
19300
19301               <span class="entry_type_visibility"> [public]</span>
19302
19303
19304               <span class="entry_type_hwlevel">[legacy] </span>
19305
19306
19307
19308                 <ul class="entry_type_enum">
19309                   <li>
19310                     <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span>
19311                     <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
19312                   </li>
19313                   <li>
19314                     <span class="entry_type_enum_name">FREEFORM (v3.2)</span>
19315                     <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
19316                   </li>
19317                 </ul>
19318
19319             </td> <!-- entry_type -->
19320
19321             <td class="entry_description">
19322               <p>The crop type that this camera device supports.<wbr/></p>
19323             </td>
19324
19325             <td class="entry_units">
19326             </td>
19327
19328             <td class="entry_range">
19329             </td>
19330
19331             <td class="entry_hal_version">
19332               <p>3.<wbr/>2</p>
19333             </td>
19334
19335             <td class="entry_tags">
19336             </td>
19337
19338           </tr>
19339           <tr class="entries_header">
19340             <th class="th_details" colspan="6">Details</th>
19341           </tr>
19342           <tr class="entry_cont">
19343             <td class="entry_details" colspan="6">
19344               <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
19345 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
19346 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>)
19347 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
19348 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
19349 <p>Camera devices that support FREEFORM cropping will support any crop region that
19350 is inside of the active array.<wbr/> The camera device will apply the same crop region and
19351 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>
19352 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
19353             </td>
19354           </tr>
19355
19356
19357           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19358            <!-- end of entry -->
19359         
19360         
19361
19362       <!-- end of kind -->
19363       </tbody>
19364       <tr><td colspan="7" class="kind">dynamic</td></tr>
19365
19366       <thead class="entries_header">
19367         <tr>
19368           <th class="th_name">Property Name</th>
19369           <th class="th_type">Type</th>
19370           <th class="th_description">Description</th>
19371           <th class="th_units">Units</th>
19372           <th class="th_range">Range</th>
19373           <th class="th_hal_version">Initial HIDL HAL version</th>
19374           <th class="th_tags">Tags</th>
19375         </tr>
19376       </thead>
19377
19378       <tbody>
19379
19380         
19381
19382         
19383
19384         
19385
19386         
19387
19388                 
19389           <tr class="entry" id="dynamic_android.scaler.cropRegion">
19390             <td class="entry_name
19391              " rowspan="5">
19392               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
19393             </td>
19394             <td class="entry_type">
19395                 <span class="entry_type_name">int32</span>
19396                 <span class="entry_type_container">x</span>
19397
19398                 <span class="entry_type_array">
19399                   4
19400                 </span>
19401               <span class="entry_type_visibility"> [public as rectangle]</span>
19402
19403
19404               <span class="entry_type_hwlevel">[legacy] </span>
19405
19406
19407
19408
19409             </td> <!-- entry_type -->
19410
19411             <td class="entry_description">
19412               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
19413             </td>
19414
19415             <td class="entry_units">
19416               Pixel coordinates relative to
19417           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19418             </td>
19419
19420             <td class="entry_range">
19421             </td>
19422
19423             <td class="entry_hal_version">
19424               <p>3.<wbr/>2</p>
19425             </td>
19426
19427             <td class="entry_tags">
19428               <ul class="entry_tags">
19429                   <li><a href="#tag_BC">BC</a></li>
19430               </ul>
19431             </td>
19432
19433           </tr>
19434           <tr class="entries_header">
19435             <th class="th_details" colspan="6">Details</th>
19436           </tr>
19437           <tr class="entry_cont">
19438             <td class="entry_details" colspan="6">
19439               <p>This control can be used to implement digital zoom.<wbr/></p>
19440 <p>The crop region coordinate system is based off
19441 <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
19442 top-left corner of the sensor active array.<wbr/></p>
19443 <p>Output streams use this rectangle to produce their output,<wbr/>
19444 cropping to a smaller region if necessary to maintain the
19445 stream's aspect ratio,<wbr/> then scaling the sensor input to
19446 match the output's configured resolution.<wbr/></p>
19447 <p>The crop region is applied after the RAW to other color
19448 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
19449 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
19450 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
19451 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
19452 be done to maximize the final pixel area of the stream.<wbr/></p>
19453 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
19454 ratio,<wbr/> then 4:3 streams will use the exact crop
19455 region.<wbr/> 16:9 streams will further crop vertically
19456 (letterbox).<wbr/></p>
19457 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
19458 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
19459 streams will match exactly.<wbr/> These additional crops will
19460 be centered within the crop region.<wbr/></p>
19461 <p>The width and height of the crop region cannot
19462 be set to be smaller than
19463 <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
19464 <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>
19465 <p>The camera device may adjust the crop region to account
19466 for rounding and other hardware requirements; the final
19467 crop region used will be included in the output capture
19468 result.<wbr/></p>
19469             </td>
19470           </tr>
19471
19472           <tr class="entries_header">
19473             <th class="th_details" colspan="6">HAL Implementation Details</th>
19474           </tr>
19475           <tr class="entry_cont">
19476             <td class="entry_details" colspan="6">
19477               <p>The output streams must maintain square pixels at all
19478 times,<wbr/> no matter what the relative aspect ratios of the
19479 crop region and the stream are.<wbr/>  Negative values for
19480 corner are allowed for raw output if full pixel array is
19481 larger than active pixel array.<wbr/> Width and height may be
19482 rounded to nearest larger supportable width,<wbr/> especially
19483 for raw output,<wbr/> where only a few fixed scales may be
19484 possible.<wbr/></p>
19485 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
19486 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
19487 <ul>
19488 <li>
19489 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
19490 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
19491 <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>
19492 <ol>
19493 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
19494 cropped pixel area by (tx,<wbr/> ty),<wbr/>
19495 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
19496 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
19497 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
19498 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
19499 <li>Scale the width and height of requested cropRegion with scaling factor of
19500 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
19501 respectively.<wbr/>
19502 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
19503 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
19504 follow the general cropping rule for this new cropRegion and effective active
19505 array size.<wbr/></li>
19506 </ol>
19507 </li>
19508 <li>
19509 <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/>
19510 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
19511 The reported cropRegion may be slightly different with the requested cropRegion since
19512 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
19513 hardware limitations.<wbr/></p>
19514 </li>
19515 </ul>
19516 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
19517             </td>
19518           </tr>
19519
19520           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19521            <!-- end of entry -->
19522         
19523         
19524
19525       <!-- end of kind -->
19526       </tbody>
19527
19528   <!-- end of section -->
19529   <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
19530
19531
19532       <tr><td colspan="7" class="kind">controls</td></tr>
19533
19534       <thead class="entries_header">
19535         <tr>
19536           <th class="th_name">Property Name</th>
19537           <th class="th_type">Type</th>
19538           <th class="th_description">Description</th>
19539           <th class="th_units">Units</th>
19540           <th class="th_range">Range</th>
19541           <th class="th_hal_version">Initial HIDL HAL version</th>
19542           <th class="th_tags">Tags</th>
19543         </tr>
19544       </thead>
19545
19546       <tbody>
19547
19548         
19549
19550         
19551
19552         
19553
19554         
19555
19556                 
19557           <tr class="entry" id="controls_android.sensor.exposureTime">
19558             <td class="entry_name
19559              " rowspan="3">
19560               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
19561             </td>
19562             <td class="entry_type">
19563                 <span class="entry_type_name">int64</span>
19564
19565               <span class="entry_type_visibility"> [public]</span>
19566
19567
19568               <span class="entry_type_hwlevel">[full] </span>
19569
19570
19571
19572
19573             </td> <!-- entry_type -->
19574
19575             <td class="entry_description">
19576               <p>Duration each pixel is exposed to
19577 light.<wbr/></p>
19578             </td>
19579
19580             <td class="entry_units">
19581               Nanoseconds
19582             </td>
19583
19584             <td class="entry_range">
19585               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
19586             </td>
19587
19588             <td class="entry_hal_version">
19589               <p>3.<wbr/>2</p>
19590             </td>
19591
19592             <td class="entry_tags">
19593               <ul class="entry_tags">
19594                   <li><a href="#tag_V1">V1</a></li>
19595               </ul>
19596             </td>
19597
19598           </tr>
19599           <tr class="entries_header">
19600             <th class="th_details" colspan="6">Details</th>
19601           </tr>
19602           <tr class="entry_cont">
19603             <td class="entry_details" colspan="6">
19604               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
19605 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
19606 The final exposure time used will be available in the output capture result.<wbr/></p>
19607 <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
19608 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19609             </td>
19610           </tr>
19611
19612
19613           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19614            <!-- end of entry -->
19615         
19616                 
19617           <tr class="entry" id="controls_android.sensor.frameDuration">
19618             <td class="entry_name
19619              " rowspan="5">
19620               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
19621             </td>
19622             <td class="entry_type">
19623                 <span class="entry_type_name">int64</span>
19624
19625               <span class="entry_type_visibility"> [public]</span>
19626
19627
19628               <span class="entry_type_hwlevel">[full] </span>
19629
19630
19631
19632
19633             </td> <!-- entry_type -->
19634
19635             <td class="entry_description">
19636               <p>Duration from start of frame exposure to
19637 start of next frame exposure.<wbr/></p>
19638             </td>
19639
19640             <td class="entry_units">
19641               Nanoseconds
19642             </td>
19643
19644             <td class="entry_range">
19645               <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/>
19646 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
19647             </td>
19648
19649             <td class="entry_hal_version">
19650               <p>3.<wbr/>2</p>
19651             </td>
19652
19653             <td class="entry_tags">
19654               <ul class="entry_tags">
19655                   <li><a href="#tag_V1">V1</a></li>
19656               </ul>
19657             </td>
19658
19659           </tr>
19660           <tr class="entries_header">
19661             <th class="th_details" colspan="6">Details</th>
19662           </tr>
19663           <tr class="entry_cont">
19664             <td class="entry_details" colspan="6">
19665               <p>The maximum frame rate that can be supported by a camera subsystem is
19666 a function of many factors:</p>
19667 <ul>
19668 <li>Requested resolutions of output image streams</li>
19669 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
19670 <li>The bandwidth of the imager interface</li>
19671 <li>The bandwidth of the various ISP processing blocks</li>
19672 </ul>
19673 <p>Since these factors can vary greatly between different ISPs and
19674 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
19675 restrictions with as simple a model as possible.<wbr/></p>
19676 <p>The model presented has the following characteristics:</p>
19677 <ul>
19678 <li>The image sensor is always configured to output the smallest
19679 resolution possible given the application's requested output stream
19680 sizes.<wbr/>  The smallest resolution is defined as being at least as large
19681 as the largest requested output stream size; the camera pipeline must
19682 never digitally upsample sensor data when the crop region covers the
19683 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
19684 resolutions are configured,<wbr/> the sensor can provide a higher frame
19685 rate.<wbr/></li>
19686 <li>Since any request may use any or all the currently configured
19687 output streams,<wbr/> the sensor and ISP must be configured to support
19688 scaling a single capture to all the streams at the same time.<wbr/>  This
19689 means the camera pipeline must be ready to produce the largest
19690 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
19691 frame rate of a given configured stream set is governed only by the
19692 largest requested stream resolution.<wbr/></li>
19693 <li>Using more than one output stream in a request does not affect the
19694 frame duration.<wbr/></li>
19695 <li>Certain format-streams may need to do additional background processing
19696 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
19697 can run concurrently to the rest of the camera pipeline,<wbr/> but
19698 cannot process more than 1 capture at a time.<wbr/></li>
19699 </ul>
19700 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
19701 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
19702 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
19703 possible for a given stream configuration.<wbr/></p>
19704 <p>Specifically,<wbr/> the application can use the following rules to
19705 determine the minimum frame duration it can request from the camera
19706 device:</p>
19707 <ol>
19708 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
19709 <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>
19710 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
19711 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
19712 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>
19713 </ol>
19714 <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>
19715 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
19716 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
19717 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
19718 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
19719 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
19720 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
19721 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
19722 <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>
19723 <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
19724 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19725             </td>
19726           </tr>
19727
19728           <tr class="entries_header">
19729             <th class="th_details" colspan="6">HAL Implementation Details</th>
19730           </tr>
19731           <tr class="entry_cont">
19732             <td class="entry_details" colspan="6">
19733               <p>For more details about stalling,<wbr/> see
19734 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
19735             </td>
19736           </tr>
19737
19738           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19739            <!-- end of entry -->
19740         
19741                 
19742           <tr class="entry" id="controls_android.sensor.sensitivity">
19743             <td class="entry_name
19744              " rowspan="5">
19745               android.<wbr/>sensor.<wbr/>sensitivity
19746             </td>
19747             <td class="entry_type">
19748                 <span class="entry_type_name">int32</span>
19749
19750               <span class="entry_type_visibility"> [public]</span>
19751
19752
19753               <span class="entry_type_hwlevel">[full] </span>
19754
19755
19756
19757
19758             </td> <!-- entry_type -->
19759
19760             <td class="entry_description">
19761               <p>The amount of gain applied to sensor data
19762 before processing.<wbr/></p>
19763             </td>
19764
19765             <td class="entry_units">
19766               ISO arithmetic units
19767             </td>
19768
19769             <td class="entry_range">
19770               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
19771             </td>
19772
19773             <td class="entry_hal_version">
19774               <p>3.<wbr/>2</p>
19775             </td>
19776
19777             <td class="entry_tags">
19778               <ul class="entry_tags">
19779                   <li><a href="#tag_V1">V1</a></li>
19780               </ul>
19781             </td>
19782
19783           </tr>
19784           <tr class="entries_header">
19785             <th class="th_details" colspan="6">Details</th>
19786           </tr>
19787           <tr class="entry_cont">
19788             <td class="entry_details" colspan="6">
19789               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
19790 as defined in ISO 12232:2006.<wbr/></p>
19791 <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
19792 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
19793 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
19794 <p>If the camera device cannot apply the exact sensitivity
19795 requested,<wbr/> it will reduce the gain to the nearest supported
19796 value.<wbr/> The final sensitivity used will be available in the
19797 output capture result.<wbr/></p>
19798 <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
19799 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19800             </td>
19801           </tr>
19802
19803           <tr class="entries_header">
19804             <th class="th_details" colspan="6">HAL Implementation Details</th>
19805           </tr>
19806           <tr class="entry_cont">
19807             <td class="entry_details" colspan="6">
19808               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
19809             </td>
19810           </tr>
19811
19812           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19813            <!-- end of entry -->
19814         
19815                 
19816           <tr class="entry" id="controls_android.sensor.testPatternData">
19817             <td class="entry_name
19818              " rowspan="5">
19819               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
19820             </td>
19821             <td class="entry_type">
19822                 <span class="entry_type_name">int32</span>
19823                 <span class="entry_type_container">x</span>
19824
19825                 <span class="entry_type_array">
19826                   4
19827                 </span>
19828               <span class="entry_type_visibility"> [public]</span>
19829
19830
19831
19832
19833
19834
19835             </td> <!-- entry_type -->
19836
19837             <td class="entry_description">
19838               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
19839 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
19840             </td>
19841
19842             <td class="entry_units">
19843             </td>
19844
19845             <td class="entry_range">
19846             </td>
19847
19848             <td class="entry_hal_version">
19849               <p>3.<wbr/>2</p>
19850             </td>
19851
19852             <td class="entry_tags">
19853             </td>
19854
19855           </tr>
19856           <tr class="entries_header">
19857             <th class="th_details" colspan="6">Details</th>
19858           </tr>
19859           <tr class="entry_cont">
19860             <td class="entry_details" colspan="6">
19861               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
19862 The camera device then uses the most significant X bits
19863 that correspond to how many bits are in its Bayer raw sensor
19864 output.<wbr/></p>
19865 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
19866 10 most significant bits from each color channel.<wbr/></p>
19867             </td>
19868           </tr>
19869
19870           <tr class="entries_header">
19871             <th class="th_details" colspan="6">HAL Implementation Details</th>
19872           </tr>
19873           <tr class="entry_cont">
19874             <td class="entry_details" colspan="6">
19875               
19876             </td>
19877           </tr>
19878
19879           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19880            <!-- end of entry -->
19881         
19882                 
19883           <tr class="entry" id="controls_android.sensor.testPatternMode">
19884             <td class="entry_name
19885              " rowspan="5">
19886               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
19887             </td>
19888             <td class="entry_type">
19889                 <span class="entry_type_name entry_type_name_enum">int32</span>
19890
19891               <span class="entry_type_visibility"> [public]</span>
19892
19893
19894
19895
19896
19897                 <ul class="entry_type_enum">
19898                   <li>
19899                     <span class="entry_type_enum_name">OFF (v3.2)</span>
19900                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
19901 device returns captures from the image sensor.<wbr/></p>
19902 <p>This is the default if the key is not set.<wbr/></p></span>
19903                   </li>
19904                   <li>
19905                     <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
19906                     <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
19907 respective color channel provided in
19908 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
19909 <p>For example:</p>
19910 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19911 </code></pre>
19912 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
19913 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19914 </code></pre>
19915 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
19916 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
19917                   </li>
19918                   <li>
19919                     <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
19920                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
19921 <p>The vertical bars (left-to-right) are as follows:</p>
19922 <ul>
19923 <li>100% white</li>
19924 <li>yellow</li>
19925 <li>cyan</li>
19926 <li>green</li>
19927 <li>magenta</li>
19928 <li>red</li>
19929 <li>blue</li>
19930 <li>black</li>
19931 </ul>
19932 <p>In general the image would look like the following:</p>
19933 <pre><code>W Y C G M R B K
19934 W Y C G M R B K
19935 W Y C G M R B K
19936 W Y C G M R B K
19937 W Y C G M R B K
19938 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19939 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19940 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19941
19942 (B = Blue,<wbr/> K = Black)
19943 </code></pre>
19944 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
19945 When this is not possible,<wbr/> the bar size should be rounded
19946 down to the nearest integer and the pattern can repeat
19947 on the right side.<wbr/></p>
19948 <p>Each bar's height must always take up the full sensor
19949 pixel array height.<wbr/></p>
19950 <p>Each pixel in this test pattern must be set to either
19951 0% intensity or 100% intensity.<wbr/></p></span>
19952                   </li>
19953                   <li>
19954                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
19955                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
19956 each bar should start at its specified color at the top,<wbr/>
19957 and fade to gray at the bottom.<wbr/></p>
19958 <p>Furthermore each bar is further subdivided into a left and
19959 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
19960 and the right half should have a quantized gradient.<wbr/></p>
19961 <p>In particular,<wbr/> the right half's should consist of blocks of the
19962 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
19963 <p>The least significant bits in the quantized gradient should
19964 be copied from the most significant bits of the smooth gradient.<wbr/></p>
19965 <p>The height of each bar should always be a multiple of 128.<wbr/>
19966 When this is not the case,<wbr/> the pattern should repeat at the bottom
19967 of the image.<wbr/></p></span>
19968                   </li>
19969                   <li>
19970                     <span class="entry_type_enum_name">PN9 (v3.2)</span>
19971                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
19972 generated from a PN9 512-bit sequence (typically implemented
19973 in hardware with a linear feedback shift register).<wbr/></p>
19974 <p>The generator should be reset at the beginning of each frame,<wbr/>
19975 and thus each subsequent raw frame with this test pattern should
19976 be exactly the same as the last.<wbr/></p></span>
19977                   </li>
19978                   <li>
19979                     <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
19980                     <span class="entry_type_enum_value">256</span>
19981                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
19982 available only on this camera device are at least this numeric
19983 value.<wbr/></p>
19984 <p>All of the custom test patterns will be static
19985 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
19986                   </li>
19987                 </ul>
19988
19989             </td> <!-- entry_type -->
19990
19991             <td class="entry_description">
19992               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
19993 doing a real exposure from the camera.<wbr/></p>
19994             </td>
19995
19996             <td class="entry_units">
19997             </td>
19998
19999             <td class="entry_range">
20000               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
20001             </td>
20002
20003             <td class="entry_hal_version">
20004               <p>3.<wbr/>2</p>
20005             </td>
20006
20007             <td class="entry_tags">
20008             </td>
20009
20010           </tr>
20011           <tr class="entries_header">
20012             <th class="th_details" colspan="6">Details</th>
20013           </tr>
20014           <tr class="entry_cont">
20015             <td class="entry_details" colspan="6">
20016               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
20017 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
20018 work as normal.<wbr/></p>
20019 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
20020 occur (and that the test pattern remain unmodified,<wbr/> since the flash
20021 would not actually affect it).<wbr/></p>
20022 <p>Defaults to OFF.<wbr/></p>
20023             </td>
20024           </tr>
20025
20026           <tr class="entries_header">
20027             <th class="th_details" colspan="6">HAL Implementation Details</th>
20028           </tr>
20029           <tr class="entry_cont">
20030             <td class="entry_details" colspan="6">
20031               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
20032 <p>The HAL may choose to substitute test patterns from the sensor
20033 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
20034 indistinguishable to the ISP whether the data came from the
20035 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
20036             </td>
20037           </tr>
20038
20039           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20040            <!-- end of entry -->
20041         
20042         
20043
20044       <!-- end of kind -->
20045       </tbody>
20046       <tr><td colspan="7" class="kind">static</td></tr>
20047
20048       <thead class="entries_header">
20049         <tr>
20050           <th class="th_name">Property Name</th>
20051           <th class="th_type">Type</th>
20052           <th class="th_description">Description</th>
20053           <th class="th_units">Units</th>
20054           <th class="th_range">Range</th>
20055           <th class="th_hal_version">Initial HIDL HAL version</th>
20056           <th class="th_tags">Tags</th>
20057         </tr>
20058       </thead>
20059
20060       <tbody>
20061
20062         
20063
20064         
20065
20066         
20067
20068         
20069                 
20070             
20071
20072                 
20073           <tr class="entry" id="static_android.sensor.info.activeArraySize">
20074             <td class="entry_name
20075              " rowspan="5">
20076               android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
20077             </td>
20078             <td class="entry_type">
20079                 <span class="entry_type_name">int32</span>
20080                 <span class="entry_type_container">x</span>
20081
20082                 <span class="entry_type_array">
20083                   4
20084                 </span>
20085               <span class="entry_type_visibility"> [public as rectangle]</span>
20086
20087
20088               <span class="entry_type_hwlevel">[legacy] </span>
20089
20090
20091                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
20092
20093
20094             </td> <!-- entry_type -->
20095
20096             <td class="entry_description">
20097               <p>The area of the image sensor which corresponds to active pixels after any geometric
20098 distortion correction has been applied.<wbr/></p>
20099             </td>
20100
20101             <td class="entry_units">
20102               Pixel coordinates on the image sensor
20103             </td>
20104
20105             <td class="entry_range">
20106             </td>
20107
20108             <td class="entry_hal_version">
20109               <p>3.<wbr/>2</p>
20110             </td>
20111
20112             <td class="entry_tags">
20113               <ul class="entry_tags">
20114                   <li><a href="#tag_RAW">RAW</a></li>
20115               </ul>
20116             </td>
20117
20118           </tr>
20119           <tr class="entries_header">
20120             <th class="th_details" colspan="6">Details</th>
20121           </tr>
20122           <tr class="entry_cont">
20123             <td class="entry_details" colspan="6">
20124               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20125 the region that actually receives light from the scene) after any geometric correction
20126 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
20127 image output formats aside from the raw formats.<wbr/></p>
20128 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20129 the full pixel array,<wbr/> and the size of the full pixel array is given by
20130 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20131 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
20132 <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
20133 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
20134 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
20135 include black calibration pixels or other inactive regions,<wbr/> and geometric correction
20136 resulting in scaling or cropping may have been applied.<wbr/></p>
20137             </td>
20138           </tr>
20139
20140           <tr class="entries_header">
20141             <th class="th_details" colspan="6">HAL Implementation Details</th>
20142           </tr>
20143           <tr class="entry_cont">
20144             <td class="entry_details" colspan="6">
20145               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20146 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
20147 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>
20148             </td>
20149           </tr>
20150
20151           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20152            <!-- end of entry -->
20153         
20154                 
20155           <tr class="entry" id="static_android.sensor.info.sensitivityRange">
20156             <td class="entry_name
20157              " rowspan="3">
20158               android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
20159             </td>
20160             <td class="entry_type">
20161                 <span class="entry_type_name">int32</span>
20162                 <span class="entry_type_container">x</span>
20163
20164                 <span class="entry_type_array">
20165                   2
20166                 </span>
20167               <span class="entry_type_visibility"> [public as rangeInt]</span>
20168
20169
20170               <span class="entry_type_hwlevel">[full] </span>
20171
20172
20173                 <div class="entry_type_notes">Range of supported sensitivities</div>
20174
20175
20176             </td> <!-- entry_type -->
20177
20178             <td class="entry_description">
20179               <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
20180 camera device.<wbr/></p>
20181             </td>
20182
20183             <td class="entry_units">
20184             </td>
20185
20186             <td class="entry_range">
20187               <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
20188             </td>
20189
20190             <td class="entry_hal_version">
20191               <p>3.<wbr/>2</p>
20192             </td>
20193
20194             <td class="entry_tags">
20195               <ul class="entry_tags">
20196                   <li><a href="#tag_BC">BC</a></li>
20197                   <li><a href="#tag_V1">V1</a></li>
20198               </ul>
20199             </td>
20200
20201           </tr>
20202           <tr class="entries_header">
20203             <th class="th_details" colspan="6">Details</th>
20204           </tr>
20205           <tr class="entry_cont">
20206             <td class="entry_details" colspan="6">
20207               <p>The values are the standard ISO sensitivity values,<wbr/>
20208 as defined in ISO 12232:2006.<wbr/></p>
20209             </td>
20210           </tr>
20211
20212
20213           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20214            <!-- end of entry -->
20215         
20216                 
20217           <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
20218             <td class="entry_name
20219              " rowspan="1">
20220               android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
20221             </td>
20222             <td class="entry_type">
20223                 <span class="entry_type_name entry_type_name_enum">byte</span>
20224
20225               <span class="entry_type_visibility"> [public]</span>
20226
20227
20228               <span class="entry_type_hwlevel">[full] </span>
20229
20230
20231
20232                 <ul class="entry_type_enum">
20233                   <li>
20234                     <span class="entry_type_enum_name">RGGB (v3.2)</span>
20235                   </li>
20236                   <li>
20237                     <span class="entry_type_enum_name">GRBG (v3.2)</span>
20238                   </li>
20239                   <li>
20240                     <span class="entry_type_enum_name">GBRG (v3.2)</span>
20241                   </li>
20242                   <li>
20243                     <span class="entry_type_enum_name">BGGR (v3.2)</span>
20244                   </li>
20245                   <li>
20246                     <span class="entry_type_enum_name">RGB (v3.2)</span>
20247                     <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
20248 values for each pixel,<wbr/> instead of just 1 16-bit value
20249 per pixel.<wbr/></p></span>
20250                   </li>
20251                 </ul>
20252
20253             </td> <!-- entry_type -->
20254
20255             <td class="entry_description">
20256               <p>The arrangement of color filters on sensor;
20257 represents the colors in the top-left 2x2 section of
20258 the sensor,<wbr/> in reading order.<wbr/></p>
20259             </td>
20260
20261             <td class="entry_units">
20262             </td>
20263
20264             <td class="entry_range">
20265             </td>
20266
20267             <td class="entry_hal_version">
20268               <p>3.<wbr/>2</p>
20269             </td>
20270
20271             <td class="entry_tags">
20272               <ul class="entry_tags">
20273                   <li><a href="#tag_RAW">RAW</a></li>
20274               </ul>
20275             </td>
20276
20277           </tr>
20278
20279
20280           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20281            <!-- end of entry -->
20282         
20283                 
20284           <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
20285             <td class="entry_name
20286              " rowspan="3">
20287               android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
20288             </td>
20289             <td class="entry_type">
20290                 <span class="entry_type_name">int64</span>
20291                 <span class="entry_type_container">x</span>
20292
20293                 <span class="entry_type_array">
20294                   2
20295                 </span>
20296               <span class="entry_type_visibility"> [public as rangeLong]</span>
20297
20298
20299               <span class="entry_type_hwlevel">[full] </span>
20300
20301
20302                 <div class="entry_type_notes">nanoseconds</div>
20303
20304
20305             </td> <!-- entry_type -->
20306
20307             <td class="entry_description">
20308               <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
20309 by this camera device.<wbr/></p>
20310             </td>
20311
20312             <td class="entry_units">
20313               Nanoseconds
20314             </td>
20315
20316             <td class="entry_range">
20317               <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
20318 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20319 the maximum exposure time will be greater than 100ms.<wbr/></p>
20320             </td>
20321
20322             <td class="entry_hal_version">
20323               <p>3.<wbr/>2</p>
20324             </td>
20325
20326             <td class="entry_tags">
20327               <ul class="entry_tags">
20328                   <li><a href="#tag_V1">V1</a></li>
20329               </ul>
20330             </td>
20331
20332           </tr>
20333
20334           <tr class="entries_header">
20335             <th class="th_details" colspan="6">HAL Implementation Details</th>
20336           </tr>
20337           <tr class="entry_cont">
20338             <td class="entry_details" colspan="6">
20339               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20340 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
20341 100ms.<wbr/></p>
20342             </td>
20343           </tr>
20344
20345           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20346            <!-- end of entry -->
20347         
20348                 
20349           <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
20350             <td class="entry_name
20351              " rowspan="5">
20352               android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
20353             </td>
20354             <td class="entry_type">
20355                 <span class="entry_type_name">int64</span>
20356
20357               <span class="entry_type_visibility"> [public]</span>
20358
20359
20360               <span class="entry_type_hwlevel">[full] </span>
20361
20362
20363
20364
20365             </td> <!-- entry_type -->
20366
20367             <td class="entry_description">
20368               <p>The maximum possible frame duration (minimum frame rate) for
20369 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
20370             </td>
20371
20372             <td class="entry_units">
20373               Nanoseconds
20374             </td>
20375
20376             <td class="entry_range">
20377               <p>For FULL capability devices
20378 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
20379             </td>
20380
20381             <td class="entry_hal_version">
20382               <p>3.<wbr/>2</p>
20383             </td>
20384
20385             <td class="entry_tags">
20386               <ul class="entry_tags">
20387                   <li><a href="#tag_V1">V1</a></li>
20388               </ul>
20389             </td>
20390
20391           </tr>
20392           <tr class="entries_header">
20393             <th class="th_details" colspan="6">Details</th>
20394           </tr>
20395           <tr class="entry_cont">
20396             <td class="entry_details" colspan="6">
20397               <p>Attempting to use frame durations beyond the maximum will result in the frame
20398 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
20399 durations.<wbr/></p>
20400 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20401 for the minimum frame duration values.<wbr/></p>
20402             </td>
20403           </tr>
20404
20405           <tr class="entries_header">
20406             <th class="th_details" colspan="6">HAL Implementation Details</th>
20407           </tr>
20408           <tr class="entry_cont">
20409             <td class="entry_details" colspan="6">
20410               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20411 The maximum of the range SHOULD be at least
20412 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
20413 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
20414 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
20415 value (since exposure time overrides frame duration).<wbr/></p>
20416 <p>Available minimum frame durations for JPEG must be no greater
20417 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
20418 minimum frame durations (for that respective size).<wbr/></p>
20419 <p>Since JPEG processing is considered offline and can take longer than
20420 a single uncompressed capture,<wbr/> refer to
20421 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
20422 for details about encoding this scenario.<wbr/></p>
20423             </td>
20424           </tr>
20425
20426           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20427            <!-- end of entry -->
20428         
20429                 
20430           <tr class="entry" id="static_android.sensor.info.physicalSize">
20431             <td class="entry_name
20432              " rowspan="5">
20433               android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
20434             </td>
20435             <td class="entry_type">
20436                 <span class="entry_type_name">float</span>
20437                 <span class="entry_type_container">x</span>
20438
20439                 <span class="entry_type_array">
20440                   2
20441                 </span>
20442               <span class="entry_type_visibility"> [public as sizeF]</span>
20443
20444
20445               <span class="entry_type_hwlevel">[legacy] </span>
20446
20447
20448                 <div class="entry_type_notes">width x height</div>
20449
20450
20451             </td> <!-- entry_type -->
20452
20453             <td class="entry_description">
20454               <p>The physical dimensions of the full pixel
20455 array.<wbr/></p>
20456             </td>
20457
20458             <td class="entry_units">
20459               Millimeters
20460             </td>
20461
20462             <td class="entry_range">
20463             </td>
20464
20465             <td class="entry_hal_version">
20466               <p>3.<wbr/>2</p>
20467             </td>
20468
20469             <td class="entry_tags">
20470               <ul class="entry_tags">
20471                   <li><a href="#tag_V1">V1</a></li>
20472                   <li><a href="#tag_BC">BC</a></li>
20473               </ul>
20474             </td>
20475
20476           </tr>
20477           <tr class="entries_header">
20478             <th class="th_details" colspan="6">Details</th>
20479           </tr>
20480           <tr class="entry_cont">
20481             <td class="entry_details" colspan="6">
20482               <p>This is the physical size of the sensor pixel
20483 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20484             </td>
20485           </tr>
20486
20487           <tr class="entries_header">
20488             <th class="th_details" colspan="6">HAL Implementation Details</th>
20489           </tr>
20490           <tr class="entry_cont">
20491             <td class="entry_details" colspan="6">
20492               <p>Needed for FOV calculation for old API</p>
20493             </td>
20494           </tr>
20495
20496           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20497            <!-- end of entry -->
20498         
20499                 
20500           <tr class="entry" id="static_android.sensor.info.pixelArraySize">
20501             <td class="entry_name
20502              " rowspan="3">
20503               android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
20504             </td>
20505             <td class="entry_type">
20506                 <span class="entry_type_name">int32</span>
20507                 <span class="entry_type_container">x</span>
20508
20509                 <span class="entry_type_array">
20510                   2
20511                 </span>
20512               <span class="entry_type_visibility"> [public as size]</span>
20513
20514
20515               <span class="entry_type_hwlevel">[legacy] </span>
20516
20517
20518
20519
20520             </td> <!-- entry_type -->
20521
20522             <td class="entry_description">
20523               <p>Dimensions of the full pixel array,<wbr/> possibly
20524 including black calibration pixels.<wbr/></p>
20525             </td>
20526
20527             <td class="entry_units">
20528               Pixels
20529             </td>
20530
20531             <td class="entry_range">
20532             </td>
20533
20534             <td class="entry_hal_version">
20535               <p>3.<wbr/>2</p>
20536             </td>
20537
20538             <td class="entry_tags">
20539               <ul class="entry_tags">
20540                   <li><a href="#tag_RAW">RAW</a></li>
20541                   <li><a href="#tag_BC">BC</a></li>
20542               </ul>
20543             </td>
20544
20545           </tr>
20546           <tr class="entries_header">
20547             <th class="th_details" colspan="6">Details</th>
20548           </tr>
20549           <tr class="entry_cont">
20550             <td class="entry_details" colspan="6">
20551               <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
20552 <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
20553 the raw buffers produced by this sensor.<wbr/></p>
20554 <p>If a camera device supports raw sensor formats,<wbr/> either this or
20555 <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
20556 output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
20557 (this depends on whether or not the image sensor returns buffers containing pixels that
20558 are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
20559 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
20560 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
20561 defines the rectangle of active pixels that will be included in processed image
20562 formats.<wbr/></p>
20563             </td>
20564           </tr>
20565
20566
20567           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20568            <!-- end of entry -->
20569         
20570                 
20571           <tr class="entry" id="static_android.sensor.info.whiteLevel">
20572             <td class="entry_name
20573              " rowspan="5">
20574               android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
20575             </td>
20576             <td class="entry_type">
20577                 <span class="entry_type_name">int32</span>
20578
20579               <span class="entry_type_visibility"> [public]</span>
20580
20581
20582
20583
20584
20585
20586             </td> <!-- entry_type -->
20587
20588             <td class="entry_description">
20589               <p>Maximum raw value output by sensor.<wbr/></p>
20590             </td>
20591
20592             <td class="entry_units">
20593             </td>
20594
20595             <td class="entry_range">
20596               <p>&gt; 255 (8-bit output)</p>
20597             </td>
20598
20599             <td class="entry_hal_version">
20600               <p>3.<wbr/>2</p>
20601             </td>
20602
20603             <td class="entry_tags">
20604               <ul class="entry_tags">
20605                   <li><a href="#tag_RAW">RAW</a></li>
20606               </ul>
20607             </td>
20608
20609           </tr>
20610           <tr class="entries_header">
20611             <th class="th_details" colspan="6">Details</th>
20612           </tr>
20613           <tr class="entry_cont">
20614             <td class="entry_details" colspan="6">
20615               <p>This specifies the fully-saturated encoding level for the raw
20616 sample values from the sensor.<wbr/>  This is typically caused by the
20617 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
20618 each channel is specified by the offset in the
20619 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
20620 <p>The white level is typically determined either by sensor bit depth
20621 (8-14 bits is expected),<wbr/> or by the point where the sensor response
20622 becomes too non-linear to be useful.<wbr/>  The default value for this is
20623 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
20624 <p>The white level values of captured images may vary for different
20625 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20626 represents a coarse approximation for such case.<wbr/> It is recommended
20627 to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
20628 by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
20629             </td>
20630           </tr>
20631
20632           <tr class="entries_header">
20633             <th class="th_details" colspan="6">HAL Implementation Details</th>
20634           </tr>
20635           <tr class="entry_cont">
20636             <td class="entry_details" colspan="6">
20637               <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
20638 so the value for linear sensors should not be significantly lower
20639 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
20640             </td>
20641           </tr>
20642
20643           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20644            <!-- end of entry -->
20645         
20646                 
20647           <tr class="entry" id="static_android.sensor.info.timestampSource">
20648             <td class="entry_name
20649              " rowspan="5">
20650               android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
20651             </td>
20652             <td class="entry_type">
20653                 <span class="entry_type_name entry_type_name_enum">byte</span>
20654
20655               <span class="entry_type_visibility"> [public]</span>
20656
20657
20658               <span class="entry_type_hwlevel">[legacy] </span>
20659
20660
20661
20662                 <ul class="entry_type_enum">
20663                   <li>
20664                     <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
20665                     <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/>
20666 but can not be compared to timestamps from other subsystems
20667 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
20668 camera devices in the same system.<wbr/> Timestamps between streams and results for
20669 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
20670 and the result metadata generated by a single capture are identical.<wbr/></p></span>
20671                   </li>
20672                   <li>
20673                     <span class="entry_type_enum_name">REALTIME (v3.2)</span>
20674                     <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
20675 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
20676 and they can be compared to other timestamps using that base.<wbr/></p></span>
20677                   </li>
20678                 </ul>
20679
20680             </td> <!-- entry_type -->
20681
20682             <td class="entry_description">
20683               <p>The time base source for sensor capture start timestamps.<wbr/></p>
20684             </td>
20685
20686             <td class="entry_units">
20687             </td>
20688
20689             <td class="entry_range">
20690             </td>
20691
20692             <td class="entry_hal_version">
20693               <p>3.<wbr/>2</p>
20694             </td>
20695
20696             <td class="entry_tags">
20697               <ul class="entry_tags">
20698                   <li><a href="#tag_V1">V1</a></li>
20699               </ul>
20700             </td>
20701
20702           </tr>
20703           <tr class="entries_header">
20704             <th class="th_details" colspan="6">Details</th>
20705           </tr>
20706           <tr class="entry_cont">
20707             <td class="entry_details" colspan="6">
20708               <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
20709 may not based on a time source that can be compared to other system time sources.<wbr/></p>
20710 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
20711 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
20712             </td>
20713           </tr>
20714
20715           <tr class="entries_header">
20716             <th class="th_details" colspan="6">HAL Implementation Details</th>
20717           </tr>
20718           <tr class="entry_cont">
20719             <td class="entry_details" colspan="6">
20720               <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
20721 source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
20722 framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
20723 system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
20724 SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
20725 recording might suffer unexpected behavior.<wbr/></p>
20726 <p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
20727 tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
20728             </td>
20729           </tr>
20730
20731           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20732            <!-- end of entry -->
20733         
20734                 
20735           <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
20736             <td class="entry_name
20737              " rowspan="3">
20738               android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
20739             </td>
20740             <td class="entry_type">
20741                 <span class="entry_type_name entry_type_name_enum">byte</span>
20742
20743               <span class="entry_type_visibility"> [public as boolean]</span>
20744
20745
20746
20747
20748
20749                 <ul class="entry_type_enum">
20750                   <li>
20751                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
20752                   </li>
20753                   <li>
20754                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
20755                   </li>
20756                 </ul>
20757
20758             </td> <!-- entry_type -->
20759
20760             <td class="entry_description">
20761               <p>Whether the RAW images output from this camera device are subject to
20762 lens shading correction.<wbr/></p>
20763             </td>
20764
20765             <td class="entry_units">
20766             </td>
20767
20768             <td class="entry_range">
20769             </td>
20770
20771             <td class="entry_hal_version">
20772               <p>3.<wbr/>2</p>
20773             </td>
20774
20775             <td class="entry_tags">
20776             </td>
20777
20778           </tr>
20779           <tr class="entries_header">
20780             <th class="th_details" colspan="6">Details</th>
20781           </tr>
20782           <tr class="entry_cont">
20783             <td class="entry_details" colspan="6">
20784               <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
20785 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
20786 not be adjusted for lens shading correction.<wbr/>
20787 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>
20788 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
20789 Devices with RAW capability will always report this information in this key.<wbr/></p>
20790             </td>
20791           </tr>
20792
20793
20794           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20795            <!-- end of entry -->
20796         
20797                 
20798           <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
20799             <td class="entry_name
20800              " rowspan="5">
20801               android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
20802             </td>
20803             <td class="entry_type">
20804                 <span class="entry_type_name">int32</span>
20805                 <span class="entry_type_container">x</span>
20806
20807                 <span class="entry_type_array">
20808                   4
20809                 </span>
20810               <span class="entry_type_visibility"> [public as rectangle]</span>
20811
20812
20813               <span class="entry_type_hwlevel">[legacy] </span>
20814
20815
20816                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
20817
20818
20819             </td> <!-- entry_type -->
20820
20821             <td class="entry_description">
20822               <p>The area of the image sensor which corresponds to active pixels prior to the
20823 application of any geometric distortion correction.<wbr/></p>
20824             </td>
20825
20826             <td class="entry_units">
20827               Pixel coordinates on the image sensor
20828             </td>
20829
20830             <td class="entry_range">
20831             </td>
20832
20833             <td class="entry_hal_version">
20834               <p>3.<wbr/>2</p>
20835             </td>
20836
20837             <td class="entry_tags">
20838               <ul class="entry_tags">
20839                   <li><a href="#tag_RAW">RAW</a></li>
20840               </ul>
20841             </td>
20842
20843           </tr>
20844           <tr class="entries_header">
20845             <th class="th_details" colspan="6">Details</th>
20846           </tr>
20847           <tr class="entry_cont">
20848             <td class="entry_details" colspan="6">
20849               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20850 the region that actually receives light from the scene) before any geometric correction
20851 has been applied,<wbr/> and should be treated as the active region rectangle for any of the
20852 raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
20853 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
20854 the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
20855 <p>The size of this region determines the maximum field of view and the maximum number of
20856 pixels that an image from this sensor can contain,<wbr/> prior to the application of
20857 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
20858 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>
20859 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
20860 can be calculated by applying the geometric distortion correction fields to this
20861 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>
20862 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
20863 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/>
20864 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
20865 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
20866 <ol>
20867 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
20868 <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
20869 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
20870 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
20871 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
20872 buffers is defined relative to the top,<wbr/> left of the
20873 <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>
20874 <li>If the resulting corrected pixel coordinate is within the region given in
20875 <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
20876 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
20877 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
20878 </ol>
20879 <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>
20880 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/>
20881 <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
20882 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
20883 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
20884 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)
20885 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
20886 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20887 <p>The currently supported fields that correct for geometric distortion are:</p>
20888 <ol>
20889 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li>
20890 </ol>
20891 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
20892 as the post-distortion-corrected rectangle given in
20893 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20894 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20895 the full pixel array,<wbr/> and the size of the full pixel array is given by
20896 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20897 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
20898 full array may include black calibration pixels or other inactive regions.<wbr/></p>
20899             </td>
20900           </tr>
20901
20902           <tr class="entries_header">
20903             <th class="th_details" colspan="6">HAL Implementation Details</th>
20904           </tr>
20905           <tr class="entry_cont">
20906             <td class="entry_details" colspan="6">
20907               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20908 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
20909 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>
20910 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
20911 the same as the post-correction active array region given in
20912 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20913             </td>
20914           </tr>
20915
20916           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20917            <!-- end of entry -->
20918         
20919         
20920         
20921
20922                 
20923           <tr class="entry" id="static_android.sensor.referenceIlluminant1">
20924             <td class="entry_name
20925              " rowspan="5">
20926               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
20927             </td>
20928             <td class="entry_type">
20929                 <span class="entry_type_name entry_type_name_enum">byte</span>
20930
20931               <span class="entry_type_visibility"> [public]</span>
20932
20933
20934
20935
20936
20937                 <ul class="entry_type_enum">
20938                   <li>
20939                     <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
20940                     <span class="entry_type_enum_value">1</span>
20941                   </li>
20942                   <li>
20943                     <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
20944                     <span class="entry_type_enum_value">2</span>
20945                   </li>
20946                   <li>
20947                     <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span>
20948                     <span class="entry_type_enum_value">3</span>
20949                     <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
20950                   </li>
20951                   <li>
20952                     <span class="entry_type_enum_name">FLASH (v3.2)</span>
20953                     <span class="entry_type_enum_value">4</span>
20954                   </li>
20955                   <li>
20956                     <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span>
20957                     <span class="entry_type_enum_value">9</span>
20958                   </li>
20959                   <li>
20960                     <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span>
20961                     <span class="entry_type_enum_value">10</span>
20962                   </li>
20963                   <li>
20964                     <span class="entry_type_enum_name">SHADE (v3.2)</span>
20965                     <span class="entry_type_enum_value">11</span>
20966                   </li>
20967                   <li>
20968                     <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span>
20969                     <span class="entry_type_enum_value">12</span>
20970                     <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
20971                   </li>
20972                   <li>
20973                     <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span>
20974                     <span class="entry_type_enum_value">13</span>
20975                     <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
20976                   </li>
20977                   <li>
20978                     <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span>
20979                     <span class="entry_type_enum_value">14</span>
20980                     <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
20981                   </li>
20982                   <li>
20983                     <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span>
20984                     <span class="entry_type_enum_value">15</span>
20985                     <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
20986                   </li>
20987                   <li>
20988                     <span class="entry_type_enum_name">STANDARD_A (v3.2)</span>
20989                     <span class="entry_type_enum_value">17</span>
20990                   </li>
20991                   <li>
20992                     <span class="entry_type_enum_name">STANDARD_B (v3.2)</span>
20993                     <span class="entry_type_enum_value">18</span>
20994                   </li>
20995                   <li>
20996                     <span class="entry_type_enum_name">STANDARD_C (v3.2)</span>
20997                     <span class="entry_type_enum_value">19</span>
20998                   </li>
20999                   <li>
21000                     <span class="entry_type_enum_name">D55 (v3.2)</span>
21001                     <span class="entry_type_enum_value">20</span>
21002                   </li>
21003                   <li>
21004                     <span class="entry_type_enum_name">D65 (v3.2)</span>
21005                     <span class="entry_type_enum_value">21</span>
21006                   </li>
21007                   <li>
21008                     <span class="entry_type_enum_name">D75 (v3.2)</span>
21009                     <span class="entry_type_enum_value">22</span>
21010                   </li>
21011                   <li>
21012                     <span class="entry_type_enum_name">D50 (v3.2)</span>
21013                     <span class="entry_type_enum_value">23</span>
21014                   </li>
21015                   <li>
21016                     <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span>
21017                     <span class="entry_type_enum_value">24</span>
21018                   </li>
21019                 </ul>
21020
21021             </td> <!-- entry_type -->
21022
21023             <td class="entry_description">
21024               <p>The standard reference illuminant used as the scene light source when
21025 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
21026 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
21027 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
21028             </td>
21029
21030             <td class="entry_units">
21031             </td>
21032
21033             <td class="entry_range">
21034             </td>
21035
21036             <td class="entry_hal_version">
21037               <p>3.<wbr/>2</p>
21038             </td>
21039
21040             <td class="entry_tags">
21041               <ul class="entry_tags">
21042                   <li><a href="#tag_RAW">RAW</a></li>
21043               </ul>
21044             </td>
21045
21046           </tr>
21047           <tr class="entries_header">
21048             <th class="th_details" colspan="6">Details</th>
21049           </tr>
21050           <tr class="entry_cont">
21051             <td class="entry_details" colspan="6">
21052               <p>The values in this key correspond to the values defined for the
21053 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
21054 that are often used calibrating camera devices.<wbr/></p>
21055 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
21056 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
21057 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
21058 <p>Some devices may choose to provide a second set of calibration
21059 information for improved quality,<wbr/> including
21060 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
21061             </td>
21062           </tr>
21063
21064           <tr class="entries_header">
21065             <th class="th_details" colspan="6">HAL Implementation Details</th>
21066           </tr>
21067           <tr class="entry_cont">
21068             <td class="entry_details" colspan="6">
21069               <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21070 and corresponding matrices must be present to support the RAW capability
21071 and DNG output.<wbr/></p>
21072 <p>When producing raw images with a color profile that has only been
21073 calibrated against a single light source,<wbr/> it is valid to omit
21074 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
21075 <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/>
21076 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21077 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
21078 chosen so that it is representative of typical scene lighting.<wbr/>  In
21079 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
21080 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
21081 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
21082 chosen to represent the typical range of scene lighting conditions.<wbr/>
21083 In general,<wbr/> low color temperature illuminant such as Standard-A will
21084 be chosen for the first reference illuminant and a higher color
21085 temperature illuminant such as D65 will be chosen for the second
21086 reference illuminant.<wbr/></p>
21087             </td>
21088           </tr>
21089
21090           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21091            <!-- end of entry -->
21092         
21093                 
21094           <tr class="entry" id="static_android.sensor.referenceIlluminant2">
21095             <td class="entry_name
21096              " rowspan="3">
21097               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
21098             </td>
21099             <td class="entry_type">
21100                 <span class="entry_type_name">byte</span>
21101
21102               <span class="entry_type_visibility"> [public]</span>
21103
21104
21105
21106
21107
21108
21109             </td> <!-- entry_type -->
21110
21111             <td class="entry_description">
21112               <p>The standard reference illuminant used as the scene light source when
21113 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21114 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21115 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21116             </td>
21117
21118             <td class="entry_units">
21119             </td>
21120
21121             <td class="entry_range">
21122               <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
21123             </td>
21124
21125             <td class="entry_hal_version">
21126               <p>3.<wbr/>2</p>
21127             </td>
21128
21129             <td class="entry_tags">
21130               <ul class="entry_tags">
21131                   <li><a href="#tag_RAW">RAW</a></li>
21132               </ul>
21133             </td>
21134
21135           </tr>
21136           <tr class="entries_header">
21137             <th class="th_details" colspan="6">Details</th>
21138           </tr>
21139           <tr class="entry_cont">
21140             <td class="entry_details" colspan="6">
21141               <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
21142 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21143 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21144 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
21145             </td>
21146           </tr>
21147
21148
21149           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21150            <!-- end of entry -->
21151         
21152                 
21153           <tr class="entry" id="static_android.sensor.calibrationTransform1">
21154             <td class="entry_name
21155              " rowspan="3">
21156               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
21157             </td>
21158             <td class="entry_type">
21159                 <span class="entry_type_name">rational</span>
21160                 <span class="entry_type_container">x</span>
21161
21162                 <span class="entry_type_array">
21163                   3 x 3
21164                 </span>
21165               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21166
21167
21168
21169
21170                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21171
21172
21173             </td> <!-- entry_type -->
21174
21175             <td class="entry_description">
21176               <p>A per-device calibration transform matrix that maps from the
21177 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
21178             </td>
21179
21180             <td class="entry_units">
21181             </td>
21182
21183             <td class="entry_range">
21184             </td>
21185
21186             <td class="entry_hal_version">
21187               <p>3.<wbr/>2</p>
21188             </td>
21189
21190             <td class="entry_tags">
21191               <ul class="entry_tags">
21192                   <li><a href="#tag_RAW">RAW</a></li>
21193               </ul>
21194             </td>
21195
21196           </tr>
21197           <tr class="entries_header">
21198             <th class="th_details" colspan="6">Details</th>
21199           </tr>
21200           <tr class="entry_cont">
21201             <td class="entry_details" colspan="6">
21202               <p>This matrix is used to correct for per-device variations in the
21203 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21204 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21205 contains a per-device calibration transform that maps colors
21206 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21207 colorspace) into this camera device's native sensor color
21208 space under the first reference illuminant
21209 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21210             </td>
21211           </tr>
21212
21213
21214           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21215            <!-- end of entry -->
21216         
21217                 
21218           <tr class="entry" id="static_android.sensor.calibrationTransform2">
21219             <td class="entry_name
21220              " rowspan="3">
21221               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
21222             </td>
21223             <td class="entry_type">
21224                 <span class="entry_type_name">rational</span>
21225                 <span class="entry_type_container">x</span>
21226
21227                 <span class="entry_type_array">
21228                   3 x 3
21229                 </span>
21230               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21231
21232
21233
21234
21235                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21236
21237
21238             </td> <!-- entry_type -->
21239
21240             <td class="entry_description">
21241               <p>A per-device calibration transform matrix that maps from the
21242 reference sensor colorspace to the actual device sensor colorspace
21243 (this is the colorspace of the raw buffer data).<wbr/></p>
21244             </td>
21245
21246             <td class="entry_units">
21247             </td>
21248
21249             <td class="entry_range">
21250             </td>
21251
21252             <td class="entry_hal_version">
21253               <p>3.<wbr/>2</p>
21254             </td>
21255
21256             <td class="entry_tags">
21257               <ul class="entry_tags">
21258                   <li><a href="#tag_RAW">RAW</a></li>
21259               </ul>
21260             </td>
21261
21262           </tr>
21263           <tr class="entries_header">
21264             <th class="th_details" colspan="6">Details</th>
21265           </tr>
21266           <tr class="entry_cont">
21267             <td class="entry_details" colspan="6">
21268               <p>This matrix is used to correct for per-device variations in the
21269 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21270 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21271 contains a per-device calibration transform that maps colors
21272 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21273 colorspace) into this camera device's native sensor color
21274 space under the second reference illuminant
21275 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21276 <p>This matrix will only be present if the second reference
21277 illuminant is present.<wbr/></p>
21278             </td>
21279           </tr>
21280
21281
21282           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21283            <!-- end of entry -->
21284         
21285                 
21286           <tr class="entry" id="static_android.sensor.colorTransform1">
21287             <td class="entry_name
21288              " rowspan="3">
21289               android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
21290             </td>
21291             <td class="entry_type">
21292                 <span class="entry_type_name">rational</span>
21293                 <span class="entry_type_container">x</span>
21294
21295                 <span class="entry_type_array">
21296                   3 x 3
21297                 </span>
21298               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21299
21300
21301
21302
21303                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21304
21305
21306             </td> <!-- entry_type -->
21307
21308             <td class="entry_description">
21309               <p>A matrix that transforms color values from CIE XYZ color space to
21310 reference sensor color space.<wbr/></p>
21311             </td>
21312
21313             <td class="entry_units">
21314             </td>
21315
21316             <td class="entry_range">
21317             </td>
21318
21319             <td class="entry_hal_version">
21320               <p>3.<wbr/>2</p>
21321             </td>
21322
21323             <td class="entry_tags">
21324               <ul class="entry_tags">
21325                   <li><a href="#tag_RAW">RAW</a></li>
21326               </ul>
21327             </td>
21328
21329           </tr>
21330           <tr class="entries_header">
21331             <th class="th_details" colspan="6">Details</th>
21332           </tr>
21333           <tr class="entry_cont">
21334             <td class="entry_details" colspan="6">
21335               <p>This matrix is used to convert from the standard CIE XYZ color
21336 space to the reference sensor colorspace,<wbr/> and is used when processing
21337 raw buffer data.<wbr/></p>
21338 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21339 contains a color transform matrix that maps colors from the CIE
21340 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21341 "golden module" colorspace) under the first reference illuminant
21342 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21343 <p>The white points chosen in both the reference sensor color space
21344 and the CIE XYZ colorspace when calculating this transform will
21345 match the standard white point for the first reference illuminant
21346 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21347             </td>
21348           </tr>
21349
21350
21351           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21352            <!-- end of entry -->
21353         
21354                 
21355           <tr class="entry" id="static_android.sensor.colorTransform2">
21356             <td class="entry_name
21357              " rowspan="3">
21358               android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
21359             </td>
21360             <td class="entry_type">
21361                 <span class="entry_type_name">rational</span>
21362                 <span class="entry_type_container">x</span>
21363
21364                 <span class="entry_type_array">
21365                   3 x 3
21366                 </span>
21367               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21368
21369
21370
21371
21372                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21373
21374
21375             </td> <!-- entry_type -->
21376
21377             <td class="entry_description">
21378               <p>A matrix that transforms color values from CIE XYZ color space to
21379 reference sensor color space.<wbr/></p>
21380             </td>
21381
21382             <td class="entry_units">
21383             </td>
21384
21385             <td class="entry_range">
21386             </td>
21387
21388             <td class="entry_hal_version">
21389               <p>3.<wbr/>2</p>
21390             </td>
21391
21392             <td class="entry_tags">
21393               <ul class="entry_tags">
21394                   <li><a href="#tag_RAW">RAW</a></li>
21395               </ul>
21396             </td>
21397
21398           </tr>
21399           <tr class="entries_header">
21400             <th class="th_details" colspan="6">Details</th>
21401           </tr>
21402           <tr class="entry_cont">
21403             <td class="entry_details" colspan="6">
21404               <p>This matrix is used to convert from the standard CIE XYZ color
21405 space to the reference sensor colorspace,<wbr/> and is used when processing
21406 raw buffer data.<wbr/></p>
21407 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21408 contains a color transform matrix that maps colors from the CIE
21409 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21410 "golden module" colorspace) under the second reference illuminant
21411 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21412 <p>The white points chosen in both the reference sensor color space
21413 and the CIE XYZ colorspace when calculating this transform will
21414 match the standard white point for the second reference illuminant
21415 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21416 <p>This matrix will only be present if the second reference
21417 illuminant is present.<wbr/></p>
21418             </td>
21419           </tr>
21420
21421
21422           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21423            <!-- end of entry -->
21424         
21425                 
21426           <tr class="entry" id="static_android.sensor.forwardMatrix1">
21427             <td class="entry_name
21428              " rowspan="3">
21429               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
21430             </td>
21431             <td class="entry_type">
21432                 <span class="entry_type_name">rational</span>
21433                 <span class="entry_type_container">x</span>
21434
21435                 <span class="entry_type_array">
21436                   3 x 3
21437                 </span>
21438               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21439
21440
21441
21442
21443                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21444
21445
21446             </td> <!-- entry_type -->
21447
21448             <td class="entry_description">
21449               <p>A matrix that transforms white balanced camera colors from the reference
21450 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21451             </td>
21452
21453             <td class="entry_units">
21454             </td>
21455
21456             <td class="entry_range">
21457             </td>
21458
21459             <td class="entry_hal_version">
21460               <p>3.<wbr/>2</p>
21461             </td>
21462
21463             <td class="entry_tags">
21464               <ul class="entry_tags">
21465                   <li><a href="#tag_RAW">RAW</a></li>
21466               </ul>
21467             </td>
21468
21469           </tr>
21470           <tr class="entries_header">
21471             <th class="th_details" colspan="6">Details</th>
21472           </tr>
21473           <tr class="entry_cont">
21474             <td class="entry_details" colspan="6">
21475               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21476 is used when processing raw buffer data.<wbr/></p>
21477 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21478 a color transform matrix that maps white balanced colors from the
21479 reference sensor color space to the CIE XYZ color space with a D50 white
21480 point.<wbr/></p>
21481 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21482 this matrix is chosen so that the standard white point for this reference
21483 illuminant in the reference sensor colorspace is mapped to D50 in the
21484 CIE XYZ colorspace.<wbr/></p>
21485             </td>
21486           </tr>
21487
21488
21489           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21490            <!-- end of entry -->
21491         
21492                 
21493           <tr class="entry" id="static_android.sensor.forwardMatrix2">
21494             <td class="entry_name
21495              " rowspan="3">
21496               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
21497             </td>
21498             <td class="entry_type">
21499                 <span class="entry_type_name">rational</span>
21500                 <span class="entry_type_container">x</span>
21501
21502                 <span class="entry_type_array">
21503                   3 x 3
21504                 </span>
21505               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21506
21507
21508
21509
21510                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21511
21512
21513             </td> <!-- entry_type -->
21514
21515             <td class="entry_description">
21516               <p>A matrix that transforms white balanced camera colors from the reference
21517 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21518             </td>
21519
21520             <td class="entry_units">
21521             </td>
21522
21523             <td class="entry_range">
21524             </td>
21525
21526             <td class="entry_hal_version">
21527               <p>3.<wbr/>2</p>
21528             </td>
21529
21530             <td class="entry_tags">
21531               <ul class="entry_tags">
21532                   <li><a href="#tag_RAW">RAW</a></li>
21533               </ul>
21534             </td>
21535
21536           </tr>
21537           <tr class="entries_header">
21538             <th class="th_details" colspan="6">Details</th>
21539           </tr>
21540           <tr class="entry_cont">
21541             <td class="entry_details" colspan="6">
21542               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21543 is used when processing raw buffer data.<wbr/></p>
21544 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21545 a color transform matrix that maps white balanced colors from the
21546 reference sensor color space to the CIE XYZ color space with a D50 white
21547 point.<wbr/></p>
21548 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
21549 this matrix is chosen so that the standard white point for this reference
21550 illuminant in the reference sensor colorspace is mapped to D50 in the
21551 CIE XYZ colorspace.<wbr/></p>
21552 <p>This matrix will only be present if the second reference
21553 illuminant is present.<wbr/></p>
21554             </td>
21555           </tr>
21556
21557
21558           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21559            <!-- end of entry -->
21560         
21561                 
21562           <tr class="entry" id="static_android.sensor.baseGainFactor">
21563             <td class="entry_name
21564              " rowspan="1">
21565               android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
21566             </td>
21567             <td class="entry_type">
21568                 <span class="entry_type_name">rational</span>
21569
21570               <span class="entry_type_visibility"> [system]</span>
21571
21572
21573
21574
21575
21576
21577             </td> <!-- entry_type -->
21578
21579             <td class="entry_description">
21580               <p>Gain factor from electrons to raw units when
21581 ISO=100</p>
21582             </td>
21583
21584             <td class="entry_units">
21585             </td>
21586
21587             <td class="entry_range">
21588             </td>
21589
21590             <td class="entry_hal_version">
21591               <p>3.<wbr/>2</p>
21592             </td>
21593
21594             <td class="entry_tags">
21595               <ul class="entry_tags">
21596                   <li><a href="#tag_FUTURE">FUTURE</a></li>
21597               </ul>
21598             </td>
21599
21600           </tr>
21601
21602
21603           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21604            <!-- end of entry -->
21605         
21606                 
21607           <tr class="entry" id="static_android.sensor.blackLevelPattern">
21608             <td class="entry_name
21609              " rowspan="5">
21610               android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
21611             </td>
21612             <td class="entry_type">
21613                 <span class="entry_type_name">int32</span>
21614                 <span class="entry_type_container">x</span>
21615
21616                 <span class="entry_type_array">
21617                   4
21618                 </span>
21619               <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
21620
21621
21622
21623
21624                 <div class="entry_type_notes">2x2 raw count block</div>
21625
21626
21627             </td> <!-- entry_type -->
21628
21629             <td class="entry_description">
21630               <p>A fixed black level offset for each of the color filter arrangement
21631 (CFA) mosaic channels.<wbr/></p>
21632             </td>
21633
21634             <td class="entry_units">
21635             </td>
21636
21637             <td class="entry_range">
21638               <p>&gt;= 0 for each.<wbr/></p>
21639             </td>
21640
21641             <td class="entry_hal_version">
21642               <p>3.<wbr/>2</p>
21643             </td>
21644
21645             <td class="entry_tags">
21646               <ul class="entry_tags">
21647                   <li><a href="#tag_RAW">RAW</a></li>
21648               </ul>
21649             </td>
21650
21651           </tr>
21652           <tr class="entries_header">
21653             <th class="th_details" colspan="6">Details</th>
21654           </tr>
21655           <tr class="entry_cont">
21656             <td class="entry_details" colspan="6">
21657               <p>This key specifies the zero light value for each of the CFA mosaic
21658 channels in the camera sensor.<wbr/>  The maximal value output by the
21659 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>
21660 <p>The values are given in the same order as channels listed for the CFA
21661 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
21662 nth value given corresponds to the black level offset for the nth
21663 color channel listed in the CFA.<wbr/></p>
21664 <p>The black level values of captured images may vary for different
21665 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
21666 represents a coarse approximation for such case.<wbr/> It is recommended to
21667 use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
21668 <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
21669 supported by the camera device,<wbr/> which provides more accurate black
21670 level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
21671 pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
21672 level values for each frame.<wbr/></p>
21673             </td>
21674           </tr>
21675
21676           <tr class="entries_header">
21677             <th class="th_details" colspan="6">HAL Implementation Details</th>
21678           </tr>
21679           <tr class="entry_cont">
21680             <td class="entry_details" colspan="6">
21681               <p>The values are given in row-column scan order,<wbr/> with the first value
21682 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21683             </td>
21684           </tr>
21685
21686           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21687            <!-- end of entry -->
21688         
21689                 
21690           <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
21691             <td class="entry_name
21692              " rowspan="3">
21693               android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
21694             </td>
21695             <td class="entry_type">
21696                 <span class="entry_type_name">int32</span>
21697
21698               <span class="entry_type_visibility"> [public]</span>
21699
21700
21701               <span class="entry_type_hwlevel">[full] </span>
21702
21703
21704
21705
21706             </td> <!-- entry_type -->
21707
21708             <td class="entry_description">
21709               <p>Maximum sensitivity that is implemented
21710 purely through analog gain.<wbr/></p>
21711             </td>
21712
21713             <td class="entry_units">
21714             </td>
21715
21716             <td class="entry_range">
21717             </td>
21718
21719             <td class="entry_hal_version">
21720               <p>3.<wbr/>2</p>
21721             </td>
21722
21723             <td class="entry_tags">
21724               <ul class="entry_tags">
21725                   <li><a href="#tag_V1">V1</a></li>
21726                   <li><a href="#tag_FULL">FULL</a></li>
21727               </ul>
21728             </td>
21729
21730           </tr>
21731           <tr class="entries_header">
21732             <th class="th_details" colspan="6">Details</th>
21733           </tr>
21734           <tr class="entry_cont">
21735             <td class="entry_details" colspan="6">
21736               <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
21737 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
21738 values above this,<wbr/> the gain applied can be a mix of analog and
21739 digital.<wbr/></p>
21740             </td>
21741           </tr>
21742
21743
21744           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21745            <!-- end of entry -->
21746         
21747                 
21748           <tr class="entry" id="static_android.sensor.orientation">
21749             <td class="entry_name
21750              " rowspan="3">
21751               android.<wbr/>sensor.<wbr/>orientation
21752             </td>
21753             <td class="entry_type">
21754                 <span class="entry_type_name">int32</span>
21755
21756               <span class="entry_type_visibility"> [public]</span>
21757
21758
21759               <span class="entry_type_hwlevel">[legacy] </span>
21760
21761
21762
21763
21764             </td> <!-- entry_type -->
21765
21766             <td class="entry_description">
21767               <p>Clockwise angle through which the output image needs to be rotated to be
21768 upright on the device screen in its native orientation.<wbr/></p>
21769             </td>
21770
21771             <td class="entry_units">
21772               Degrees of clockwise rotation; always a multiple of
21773           90
21774             </td>
21775
21776             <td class="entry_range">
21777               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
21778             </td>
21779
21780             <td class="entry_hal_version">
21781               <p>3.<wbr/>2</p>
21782             </td>
21783
21784             <td class="entry_tags">
21785               <ul class="entry_tags">
21786                   <li><a href="#tag_BC">BC</a></li>
21787               </ul>
21788             </td>
21789
21790           </tr>
21791           <tr class="entries_header">
21792             <th class="th_details" colspan="6">Details</th>
21793           </tr>
21794           <tr class="entry_cont">
21795             <td class="entry_details" colspan="6">
21796               <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
21797 the sensor's coordinate system.<wbr/></p>
21798             </td>
21799           </tr>
21800
21801
21802           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21803            <!-- end of entry -->
21804         
21805                 
21806           <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
21807             <td class="entry_name
21808              " rowspan="3">
21809               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
21810             </td>
21811             <td class="entry_type">
21812                 <span class="entry_type_name">int32</span>
21813                 <span class="entry_type_container">x</span>
21814
21815                 <span class="entry_type_array">
21816                   3
21817                 </span>
21818               <span class="entry_type_visibility"> [system]</span>
21819
21820
21821
21822
21823                 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
21824
21825
21826             </td> <!-- entry_type -->
21827
21828             <td class="entry_description">
21829               <p>The number of input samples for each dimension of
21830 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
21831             </td>
21832
21833             <td class="entry_units">
21834             </td>
21835
21836             <td class="entry_range">
21837               <p>Hue &gt;= 1,<wbr/>
21838 Saturation &gt;= 2,<wbr/>
21839 Value &gt;= 1</p>
21840             </td>
21841
21842             <td class="entry_hal_version">
21843               <p>3.<wbr/>2</p>
21844             </td>
21845
21846             <td class="entry_tags">
21847               <ul class="entry_tags">
21848                   <li><a href="#tag_RAW">RAW</a></li>
21849               </ul>
21850             </td>
21851
21852           </tr>
21853           <tr class="entries_header">
21854             <th class="th_details" colspan="6">Details</th>
21855           </tr>
21856           <tr class="entry_cont">
21857             <td class="entry_details" colspan="6">
21858               <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
21859 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
21860 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
21861 element.<wbr/></p>
21862             </td>
21863           </tr>
21864
21865
21866           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21867            <!-- end of entry -->
21868         
21869                 
21870           <tr class="entry" id="static_android.sensor.availableTestPatternModes">
21871             <td class="entry_name
21872              " rowspan="5">
21873               android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
21874             </td>
21875             <td class="entry_type">
21876                 <span class="entry_type_name">int32</span>
21877                 <span class="entry_type_container">x</span>
21878
21879                 <span class="entry_type_array">
21880                   n
21881                 </span>
21882               <span class="entry_type_visibility"> [public]</span>
21883
21884
21885
21886
21887                 <div class="entry_type_notes">list of enums</div>
21888
21889
21890             </td> <!-- entry_type -->
21891
21892             <td class="entry_description">
21893               <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
21894 supported by this camera device.<wbr/></p>
21895             </td>
21896
21897             <td class="entry_units">
21898             </td>
21899
21900             <td class="entry_range">
21901               <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
21902             </td>
21903
21904             <td class="entry_hal_version">
21905               <p>3.<wbr/>2</p>
21906             </td>
21907
21908             <td class="entry_tags">
21909             </td>
21910
21911           </tr>
21912           <tr class="entries_header">
21913             <th class="th_details" colspan="6">Details</th>
21914           </tr>
21915           <tr class="entry_cont">
21916             <td class="entry_details" colspan="6">
21917               <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
21918             </td>
21919           </tr>
21920
21921           <tr class="entries_header">
21922             <th class="th_details" colspan="6">HAL Implementation Details</th>
21923           </tr>
21924           <tr class="entry_cont">
21925             <td class="entry_details" colspan="6">
21926               <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
21927             </td>
21928           </tr>
21929
21930           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21931            <!-- end of entry -->
21932         
21933                 
21934           <tr class="entry" id="static_android.sensor.opticalBlackRegions">
21935             <td class="entry_name
21936              " rowspan="5">
21937               android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
21938             </td>
21939             <td class="entry_type">
21940                 <span class="entry_type_name">int32</span>
21941                 <span class="entry_type_container">x</span>
21942
21943                 <span class="entry_type_array">
21944                   4 x num_regions
21945                 </span>
21946               <span class="entry_type_visibility"> [public as rectangle]</span>
21947
21948
21949
21950
21951
21952
21953             </td> <!-- entry_type -->
21954
21955             <td class="entry_description">
21956               <p>List of disjoint rectangles indicating the sensor
21957 optically shielded black pixel regions.<wbr/></p>
21958             </td>
21959
21960             <td class="entry_units">
21961             </td>
21962
21963             <td class="entry_range">
21964             </td>
21965
21966             <td class="entry_hal_version">
21967               <p>3.<wbr/>2</p>
21968             </td>
21969
21970             <td class="entry_tags">
21971             </td>
21972
21973           </tr>
21974           <tr class="entries_header">
21975             <th class="th_details" colspan="6">Details</th>
21976           </tr>
21977           <tr class="entry_cont">
21978             <td class="entry_details" colspan="6">
21979               <p>In most camera sensors,<wbr/> the active array is surrounded by some
21980 optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
21981 provides a reliable black reference for black level compensation
21982 in active array region.<wbr/></p>
21983 <p>This key provides a list of disjoint rectangles specifying the
21984 regions of optically shielded (with metal shield) black pixel
21985 regions if the camera device is capable of reading out these black
21986 pixels in the output raw images.<wbr/> In comparison to the fixed black
21987 level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
21988 may provide a more accurate way for the application to calculate
21989 black level of each captured raw images.<wbr/></p>
21990 <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
21991 <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
21992             </td>
21993           </tr>
21994
21995           <tr class="entries_header">
21996             <th class="th_details" colspan="6">HAL Implementation Details</th>
21997           </tr>
21998           <tr class="entry_cont">
21999             <td class="entry_details" colspan="6">
22000               <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
22001 must be &gt;= (0,<wbr/>0) and &lt;=
22002 <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
22003 &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
22004 outside the region reported by
22005 <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>
22006 <p>The HAL must report minimal number of disjoint regions for the
22007 optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
22008 be covered by one rectangle,<wbr/> the HAL must not split this region into
22009 multiple rectangles.<wbr/></p>
22010             </td>
22011           </tr>
22012
22013           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22014            <!-- end of entry -->
22015         
22016                 
22017           <tr class="entry" id="static_android.sensor.opaqueRawSize">
22018             <td class="entry_name
22019              " rowspan="5">
22020               android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
22021             </td>
22022             <td class="entry_type">
22023                 <span class="entry_type_name">int32</span>
22024                 <span class="entry_type_container">x</span>
22025
22026                 <span class="entry_type_array">
22027                   n x 3
22028                 </span>
22029               <span class="entry_type_visibility"> [system]</span>
22030
22031
22032
22033
22034
22035
22036             </td> <!-- entry_type -->
22037
22038             <td class="entry_description">
22039               <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
22040             </td>
22041
22042             <td class="entry_units">
22043             </td>
22044
22045             <td class="entry_range">
22046               <p>Must be large enough to fit the opaque RAW of corresponding size produced by
22047 the camera</p>
22048             </td>
22049
22050             <td class="entry_hal_version">
22051               <p>3.<wbr/>2</p>
22052             </td>
22053
22054             <td class="entry_tags">
22055             </td>
22056
22057           </tr>
22058           <tr class="entries_header">
22059             <th class="th_details" colspan="6">Details</th>
22060           </tr>
22061           <tr class="entry_cont">
22062             <td class="entry_details" colspan="6">
22063               <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
22064 This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
22065 All RAW_<wbr/>OPAQUE output stream configuration listed in
22066 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
22067 this key.<wbr/></p>
22068             </td>
22069           </tr>
22070
22071           <tr class="entries_header">
22072             <th class="th_details" colspan="6">HAL Implementation Details</th>
22073           </tr>
22074           <tr class="entry_cont">
22075             <td class="entry_details" colspan="6">
22076               <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
22077 <p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
22078 key.<wbr/>  For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
22079 framework will derive this key by assuming each pixel takes two bytes and no padding bytes
22080 between rows.<wbr/></p>
22081             </td>
22082           </tr>
22083
22084           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22085            <!-- end of entry -->
22086         
22087         
22088
22089       <!-- end of kind -->
22090       </tbody>
22091       <tr><td colspan="7" class="kind">dynamic</td></tr>
22092
22093       <thead class="entries_header">
22094         <tr>
22095           <th class="th_name">Property Name</th>
22096           <th class="th_type">Type</th>
22097           <th class="th_description">Description</th>
22098           <th class="th_units">Units</th>
22099           <th class="th_range">Range</th>
22100           <th class="th_hal_version">Initial HIDL HAL version</th>
22101           <th class="th_tags">Tags</th>
22102         </tr>
22103       </thead>
22104
22105       <tbody>
22106
22107         
22108
22109         
22110
22111         
22112
22113         
22114
22115                 
22116           <tr class="entry" id="dynamic_android.sensor.exposureTime">
22117             <td class="entry_name
22118              " rowspan="3">
22119               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
22120             </td>
22121             <td class="entry_type">
22122                 <span class="entry_type_name">int64</span>
22123
22124               <span class="entry_type_visibility"> [public]</span>
22125
22126
22127               <span class="entry_type_hwlevel">[full] </span>
22128
22129
22130
22131
22132             </td> <!-- entry_type -->
22133
22134             <td class="entry_description">
22135               <p>Duration each pixel is exposed to
22136 light.<wbr/></p>
22137             </td>
22138
22139             <td class="entry_units">
22140               Nanoseconds
22141             </td>
22142
22143             <td class="entry_range">
22144               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
22145             </td>
22146
22147             <td class="entry_hal_version">
22148               <p>3.<wbr/>2</p>
22149             </td>
22150
22151             <td class="entry_tags">
22152               <ul class="entry_tags">
22153                   <li><a href="#tag_V1">V1</a></li>
22154               </ul>
22155             </td>
22156
22157           </tr>
22158           <tr class="entries_header">
22159             <th class="th_details" colspan="6">Details</th>
22160           </tr>
22161           <tr class="entry_cont">
22162             <td class="entry_details" colspan="6">
22163               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
22164 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
22165 The final exposure time used will be available in the output capture result.<wbr/></p>
22166 <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
22167 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22168             </td>
22169           </tr>
22170
22171
22172           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22173            <!-- end of entry -->
22174         
22175                 
22176           <tr class="entry" id="dynamic_android.sensor.frameDuration">
22177             <td class="entry_name
22178              " rowspan="5">
22179               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
22180             </td>
22181             <td class="entry_type">
22182                 <span class="entry_type_name">int64</span>
22183
22184               <span class="entry_type_visibility"> [public]</span>
22185
22186
22187               <span class="entry_type_hwlevel">[full] </span>
22188
22189
22190
22191
22192             </td> <!-- entry_type -->
22193
22194             <td class="entry_description">
22195               <p>Duration from start of frame exposure to
22196 start of next frame exposure.<wbr/></p>
22197             </td>
22198
22199             <td class="entry_units">
22200               Nanoseconds
22201             </td>
22202
22203             <td class="entry_range">
22204               <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/>
22205 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
22206             </td>
22207
22208             <td class="entry_hal_version">
22209               <p>3.<wbr/>2</p>
22210             </td>
22211
22212             <td class="entry_tags">
22213               <ul class="entry_tags">
22214                   <li><a href="#tag_V1">V1</a></li>
22215               </ul>
22216             </td>
22217
22218           </tr>
22219           <tr class="entries_header">
22220             <th class="th_details" colspan="6">Details</th>
22221           </tr>
22222           <tr class="entry_cont">
22223             <td class="entry_details" colspan="6">
22224               <p>The maximum frame rate that can be supported by a camera subsystem is
22225 a function of many factors:</p>
22226 <ul>
22227 <li>Requested resolutions of output image streams</li>
22228 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
22229 <li>The bandwidth of the imager interface</li>
22230 <li>The bandwidth of the various ISP processing blocks</li>
22231 </ul>
22232 <p>Since these factors can vary greatly between different ISPs and
22233 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
22234 restrictions with as simple a model as possible.<wbr/></p>
22235 <p>The model presented has the following characteristics:</p>
22236 <ul>
22237 <li>The image sensor is always configured to output the smallest
22238 resolution possible given the application's requested output stream
22239 sizes.<wbr/>  The smallest resolution is defined as being at least as large
22240 as the largest requested output stream size; the camera pipeline must
22241 never digitally upsample sensor data when the crop region covers the
22242 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
22243 resolutions are configured,<wbr/> the sensor can provide a higher frame
22244 rate.<wbr/></li>
22245 <li>Since any request may use any or all the currently configured
22246 output streams,<wbr/> the sensor and ISP must be configured to support
22247 scaling a single capture to all the streams at the same time.<wbr/>  This
22248 means the camera pipeline must be ready to produce the largest
22249 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
22250 frame rate of a given configured stream set is governed only by the
22251 largest requested stream resolution.<wbr/></li>
22252 <li>Using more than one output stream in a request does not affect the
22253 frame duration.<wbr/></li>
22254 <li>Certain format-streams may need to do additional background processing
22255 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
22256 can run concurrently to the rest of the camera pipeline,<wbr/> but
22257 cannot process more than 1 capture at a time.<wbr/></li>
22258 </ul>
22259 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
22260 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
22261 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
22262 possible for a given stream configuration.<wbr/></p>
22263 <p>Specifically,<wbr/> the application can use the following rules to
22264 determine the minimum frame duration it can request from the camera
22265 device:</p>
22266 <ol>
22267 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
22268 <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>
22269 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
22270 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
22271 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>
22272 </ol>
22273 <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>
22274 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
22275 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
22276 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
22277 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
22278 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
22279 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
22280 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
22281 <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>
22282 <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
22283 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22284             </td>
22285           </tr>
22286
22287           <tr class="entries_header">
22288             <th class="th_details" colspan="6">HAL Implementation Details</th>
22289           </tr>
22290           <tr class="entry_cont">
22291             <td class="entry_details" colspan="6">
22292               <p>For more details about stalling,<wbr/> see
22293 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
22294             </td>
22295           </tr>
22296
22297           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22298            <!-- end of entry -->
22299         
22300                 
22301           <tr class="entry" id="dynamic_android.sensor.sensitivity">
22302             <td class="entry_name
22303              " rowspan="5">
22304               android.<wbr/>sensor.<wbr/>sensitivity
22305             </td>
22306             <td class="entry_type">
22307                 <span class="entry_type_name">int32</span>
22308
22309               <span class="entry_type_visibility"> [public]</span>
22310
22311
22312               <span class="entry_type_hwlevel">[full] </span>
22313
22314
22315
22316
22317             </td> <!-- entry_type -->
22318
22319             <td class="entry_description">
22320               <p>The amount of gain applied to sensor data
22321 before processing.<wbr/></p>
22322             </td>
22323
22324             <td class="entry_units">
22325               ISO arithmetic units
22326             </td>
22327
22328             <td class="entry_range">
22329               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
22330             </td>
22331
22332             <td class="entry_hal_version">
22333               <p>3.<wbr/>2</p>
22334             </td>
22335
22336             <td class="entry_tags">
22337               <ul class="entry_tags">
22338                   <li><a href="#tag_V1">V1</a></li>
22339               </ul>
22340             </td>
22341
22342           </tr>
22343           <tr class="entries_header">
22344             <th class="th_details" colspan="6">Details</th>
22345           </tr>
22346           <tr class="entry_cont">
22347             <td class="entry_details" colspan="6">
22348               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
22349 as defined in ISO 12232:2006.<wbr/></p>
22350 <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
22351 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
22352 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
22353 <p>If the camera device cannot apply the exact sensitivity
22354 requested,<wbr/> it will reduce the gain to the nearest supported
22355 value.<wbr/> The final sensitivity used will be available in the
22356 output capture result.<wbr/></p>
22357 <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
22358 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22359             </td>
22360           </tr>
22361
22362           <tr class="entries_header">
22363             <th class="th_details" colspan="6">HAL Implementation Details</th>
22364           </tr>
22365           <tr class="entry_cont">
22366             <td class="entry_details" colspan="6">
22367               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
22368             </td>
22369           </tr>
22370
22371           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22372            <!-- end of entry -->
22373         
22374                 
22375           <tr class="entry" id="dynamic_android.sensor.timestamp">
22376             <td class="entry_name
22377              " rowspan="5">
22378               android.<wbr/>sensor.<wbr/>timestamp
22379             </td>
22380             <td class="entry_type">
22381                 <span class="entry_type_name">int64</span>
22382
22383               <span class="entry_type_visibility"> [public]</span>
22384
22385
22386               <span class="entry_type_hwlevel">[legacy] </span>
22387
22388
22389
22390
22391             </td> <!-- entry_type -->
22392
22393             <td class="entry_description">
22394               <p>Time at start of exposure of first
22395 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
22396             </td>
22397
22398             <td class="entry_units">
22399               Nanoseconds
22400             </td>
22401
22402             <td class="entry_range">
22403               <p>&gt; 0</p>
22404             </td>
22405
22406             <td class="entry_hal_version">
22407               <p>3.<wbr/>2</p>
22408             </td>
22409
22410             <td class="entry_tags">
22411               <ul class="entry_tags">
22412                   <li><a href="#tag_BC">BC</a></li>
22413               </ul>
22414             </td>
22415
22416           </tr>
22417           <tr class="entries_header">
22418             <th class="th_details" colspan="6">Details</th>
22419           </tr>
22420           <tr class="entry_cont">
22421             <td class="entry_details" colspan="6">
22422               <p>The timestamps are also included in all image
22423 buffers produced for the same capture,<wbr/> and will be identical
22424 on all the outputs.<wbr/></p>
22425 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
22426 the timestamps measure time since an unspecified starting point,<wbr/>
22427 and are monotonically increasing.<wbr/> They can be compared with the
22428 timestamps for other captures from the same camera device,<wbr/> but are
22429 not guaranteed to be comparable to any other time source.<wbr/></p>
22430 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
22431 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
22432 be compared to other timestamps from other subsystems that
22433 are using that base.<wbr/></p>
22434 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
22435 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
22436 timestamp</a> in the TotalCaptureResult that was used to create the
22437 reprocess capture request.<wbr/></p>
22438             </td>
22439           </tr>
22440
22441           <tr class="entries_header">
22442             <th class="th_details" colspan="6">HAL Implementation Details</th>
22443           </tr>
22444           <tr class="entry_cont">
22445             <td class="entry_details" colspan="6">
22446               <p>All timestamps must be in reference to the kernel's
22447 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
22448 time spent asleep.<wbr/> This allows for synchronization with
22449 sensors that continue to operate while the system is
22450 otherwise asleep.<wbr/></p>
22451 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
22452 The timestamp must be synchronized with the timestamps from other
22453 sensor subsystems that are using the same timebase.<wbr/></p>
22454 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
22455 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
22456 capture request.<wbr/></p>
22457             </td>
22458           </tr>
22459
22460           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22461            <!-- end of entry -->
22462         
22463                 
22464           <tr class="entry" id="dynamic_android.sensor.temperature">
22465             <td class="entry_name
22466              " rowspan="1">
22467               android.<wbr/>sensor.<wbr/>temperature
22468             </td>
22469             <td class="entry_type">
22470                 <span class="entry_type_name">float</span>
22471
22472               <span class="entry_type_visibility"> [system]</span>
22473
22474
22475
22476
22477
22478
22479             </td> <!-- entry_type -->
22480
22481             <td class="entry_description">
22482               <p>The temperature of the sensor,<wbr/> sampled at the time
22483 exposure began for this frame.<wbr/></p>
22484 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
22485 somewhere close to it.<wbr/></p>
22486             </td>
22487
22488             <td class="entry_units">
22489               Celsius
22490             </td>
22491
22492             <td class="entry_range">
22493               <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
22494             </td>
22495
22496             <td class="entry_hal_version">
22497               <p>3.<wbr/>2</p>
22498             </td>
22499
22500             <td class="entry_tags">
22501               <ul class="entry_tags">
22502                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22503               </ul>
22504             </td>
22505
22506           </tr>
22507
22508
22509           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22510            <!-- end of entry -->
22511         
22512                 
22513           <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
22514             <td class="entry_name
22515              " rowspan="3">
22516               android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
22517             </td>
22518             <td class="entry_type">
22519                 <span class="entry_type_name">rational</span>
22520                 <span class="entry_type_container">x</span>
22521
22522                 <span class="entry_type_array">
22523                   3
22524                 </span>
22525               <span class="entry_type_visibility"> [public]</span>
22526
22527
22528
22529
22530
22531
22532             </td> <!-- entry_type -->
22533
22534             <td class="entry_description">
22535               <p>The estimated camera neutral color in the native sensor colorspace at
22536 the time of capture.<wbr/></p>
22537             </td>
22538
22539             <td class="entry_units">
22540             </td>
22541
22542             <td class="entry_range">
22543             </td>
22544
22545             <td class="entry_hal_version">
22546               <p>3.<wbr/>2</p>
22547             </td>
22548
22549             <td class="entry_tags">
22550               <ul class="entry_tags">
22551                   <li><a href="#tag_RAW">RAW</a></li>
22552               </ul>
22553             </td>
22554
22555           </tr>
22556           <tr class="entries_header">
22557             <th class="th_details" colspan="6">Details</th>
22558           </tr>
22559           <tr class="entry_cont">
22560             <td class="entry_details" colspan="6">
22561               <p>This value gives the neutral color point encoded as an RGB value in the
22562 native sensor color space.<wbr/>  The neutral color point indicates the
22563 currently estimated white point of the scene illumination.<wbr/>  It can be
22564 used to interpolate between the provided color transforms when
22565 processing raw sensor data.<wbr/></p>
22566 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
22567             </td>
22568           </tr>
22569
22570
22571           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22572            <!-- end of entry -->
22573         
22574                 
22575           <tr class="entry" id="dynamic_android.sensor.noiseProfile">
22576             <td class="entry_name
22577              " rowspan="5">
22578               android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
22579             </td>
22580             <td class="entry_type">
22581                 <span class="entry_type_name">double</span>
22582                 <span class="entry_type_container">x</span>
22583
22584                 <span class="entry_type_array">
22585                   2 x CFA Channels
22586                 </span>
22587               <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
22588
22589
22590
22591
22592                 <div class="entry_type_notes">Pairs of noise model coefficients</div>
22593
22594
22595             </td> <!-- entry_type -->
22596
22597             <td class="entry_description">
22598               <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
22599             </td>
22600
22601             <td class="entry_units">
22602             </td>
22603
22604             <td class="entry_range">
22605             </td>
22606
22607             <td class="entry_hal_version">
22608               <p>3.<wbr/>2</p>
22609             </td>
22610
22611             <td class="entry_tags">
22612               <ul class="entry_tags">
22613                   <li><a href="#tag_RAW">RAW</a></li>
22614               </ul>
22615             </td>
22616
22617           </tr>
22618           <tr class="entries_header">
22619             <th class="th_details" colspan="6">Details</th>
22620           </tr>
22621           <tr class="entry_cont">
22622             <td class="entry_details" colspan="6">
22623               <p>This key contains two noise model coefficients for each CFA channel
22624 corresponding to the sensor amplification (S) and sensor readout
22625 noise (O).<wbr/>  These are given as pairs of coefficients for each channel
22626 in the same order as channels listed for the CFA layout key
22627 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
22628 represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
22629 the first member of the Pair at index n is the S coefficient and the
22630 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
22631 <p>These coefficients are used in a two parameter noise model to describe
22632 the amount of noise present in the image for each CFA channel.<wbr/>  The
22633 noise model used here is:</p>
22634 <p>N(x) = sqrt(Sx + O)</p>
22635 <p>Where x represents the recorded signal of a CFA channel normalized to
22636 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
22637 that channel.<wbr/></p>
22638 <p>A more detailed description of the noise model can be found in the
22639 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
22640             </td>
22641           </tr>
22642
22643           <tr class="entries_header">
22644             <th class="th_details" colspan="6">HAL Implementation Details</th>
22645           </tr>
22646           <tr class="entry_cont">
22647             <td class="entry_details" colspan="6">
22648               <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
22649 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
22650 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
22651 channel,<wbr/> etc.<wbr/></p>
22652             </td>
22653           </tr>
22654
22655           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22656            <!-- end of entry -->
22657         
22658                 
22659           <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
22660             <td class="entry_name
22661              " rowspan="3">
22662               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
22663             </td>
22664             <td class="entry_type">
22665                 <span class="entry_type_name">float</span>
22666                 <span class="entry_type_container">x</span>
22667
22668                 <span class="entry_type_array">
22669                   hue_samples x saturation_samples x value_samples x 3
22670                 </span>
22671               <span class="entry_type_visibility"> [system]</span>
22672
22673
22674
22675
22676                 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
22677
22678
22679             </td> <!-- entry_type -->
22680
22681             <td class="entry_description">
22682               <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
22683 for each pixel.<wbr/></p>
22684             </td>
22685
22686             <td class="entry_units">
22687               
22688           The hue shift is given in degrees; saturation and value scale factors are
22689           unitless and are between 0 and 1 inclusive
22690           
22691             </td>
22692
22693             <td class="entry_range">
22694             </td>
22695
22696             <td class="entry_hal_version">
22697               <p>3.<wbr/>2</p>
22698             </td>
22699
22700             <td class="entry_tags">
22701               <ul class="entry_tags">
22702                   <li><a href="#tag_RAW">RAW</a></li>
22703               </ul>
22704             </td>
22705
22706           </tr>
22707           <tr class="entries_header">
22708             <th class="th_details" colspan="6">Details</th>
22709           </tr>
22710           <tr class="entry_cont">
22711             <td class="entry_details" colspan="6">
22712               <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
22713 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
22714 <p>Each entry of this map contains three floats corresponding to the
22715 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
22716 hue shift has the lowest index.<wbr/> The map entries are stored in the key
22717 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
22718 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
22719 inner loop.<wbr/> All zero input saturation entries are required to have a
22720 value scale factor of 1.<wbr/>0.<wbr/></p>
22721             </td>
22722           </tr>
22723
22724
22725           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22726            <!-- end of entry -->
22727         
22728                 
22729           <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
22730             <td class="entry_name
22731              " rowspan="3">
22732               android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
22733             </td>
22734             <td class="entry_type">
22735                 <span class="entry_type_name">float</span>
22736                 <span class="entry_type_container">x</span>
22737
22738                 <span class="entry_type_array">
22739                   samples x 2
22740                 </span>
22741               <span class="entry_type_visibility"> [system]</span>
22742
22743
22744
22745
22746                 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
22747
22748
22749             </td> <!-- entry_type -->
22750
22751             <td class="entry_description">
22752               <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
22753             </td>
22754
22755             <td class="entry_units">
22756             </td>
22757
22758             <td class="entry_range">
22759               <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
22760 <code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
22761 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
22762             </td>
22763
22764             <td class="entry_hal_version">
22765               <p>3.<wbr/>2</p>
22766             </td>
22767
22768             <td class="entry_tags">
22769               <ul class="entry_tags">
22770                   <li><a href="#tag_RAW">RAW</a></li>
22771               </ul>
22772             </td>
22773
22774           </tr>
22775           <tr class="entries_header">
22776             <th class="th_details" colspan="6">Details</th>
22777           </tr>
22778           <tr class="entry_cont">
22779             <td class="entry_details" colspan="6">
22780               <p>This key contains a default tone curve that can be applied while
22781 processing the image as a starting point for user adjustments.<wbr/>
22782 The curve is specified as a list of value pairs in linear gamma.<wbr/>
22783 The curve is interpolated using a cubic spline.<wbr/></p>
22784             </td>
22785           </tr>
22786
22787
22788           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22789            <!-- end of entry -->
22790         
22791                 
22792           <tr class="entry" id="dynamic_android.sensor.greenSplit">
22793             <td class="entry_name
22794              " rowspan="5">
22795               android.<wbr/>sensor.<wbr/>green<wbr/>Split
22796             </td>
22797             <td class="entry_type">
22798                 <span class="entry_type_name">float</span>
22799
22800               <span class="entry_type_visibility"> [public]</span>
22801
22802
22803
22804
22805
22806
22807             </td> <!-- entry_type -->
22808
22809             <td class="entry_description">
22810               <p>The worst-case divergence between Bayer green channels.<wbr/></p>
22811             </td>
22812
22813             <td class="entry_units">
22814             </td>
22815
22816             <td class="entry_range">
22817               <p>&gt;= 0</p>
22818             </td>
22819
22820             <td class="entry_hal_version">
22821               <p>3.<wbr/>2</p>
22822             </td>
22823
22824             <td class="entry_tags">
22825               <ul class="entry_tags">
22826                   <li><a href="#tag_RAW">RAW</a></li>
22827               </ul>
22828             </td>
22829
22830           </tr>
22831           <tr class="entries_header">
22832             <th class="th_details" colspan="6">Details</th>
22833           </tr>
22834           <tr class="entry_cont">
22835             <td class="entry_details" colspan="6">
22836               <p>This value is an estimate of the worst case split between the
22837 Bayer green channels in the red and blue rows in the sensor color
22838 filter array.<wbr/></p>
22839 <p>The green split is calculated as follows:</p>
22840 <ol>
22841 <li>A 5x5 pixel (or larger) window W within the active sensor array is
22842 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
22843 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
22844 chosen is implementation defined,<wbr/> and should be chosen to provide a
22845 green split estimate that is both representative of the entire image
22846 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
22847 <li>The arithmetic mean of the green channels from the red
22848 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
22849 <li>The arithmetic mean of the green channels from the blue
22850 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
22851 <li>The maximum ratio R of the two means is computed as follows:
22852 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
22853 </ol>
22854 <p>The ratio R is the green split divergence reported for this property,<wbr/>
22855 which represents how much the green channels differ in the mosaic
22856 pattern.<wbr/>  This value is typically used to determine the treatment of
22857 the green mosaic channels when demosaicing.<wbr/></p>
22858 <p>The green split value can be roughly interpreted as follows:</p>
22859 <ul>
22860 <li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
22861 <li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
22862 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
22863 <li>R &gt; 1.<wbr/>20 will require strong software correction to produce
22864 a usuable image (&gt;20% divergence).<wbr/></li>
22865 </ul>
22866             </td>
22867           </tr>
22868
22869           <tr class="entries_header">
22870             <th class="th_details" colspan="6">HAL Implementation Details</th>
22871           </tr>
22872           <tr class="entry_cont">
22873             <td class="entry_details" colspan="6">
22874               <p>The green split given may be a static value based on prior
22875 characterization of the camera sensor using the green split
22876 calculation method given here over a large,<wbr/> representative,<wbr/> sample
22877 set of images.<wbr/>  Other methods of calculation that produce equivalent
22878 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
22879             </td>
22880           </tr>
22881
22882           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22883            <!-- end of entry -->
22884         
22885                 
22886           <tr class="entry" id="dynamic_android.sensor.testPatternData">
22887             <td class="entry_name
22888              " rowspan="5">
22889               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
22890             </td>
22891             <td class="entry_type">
22892                 <span class="entry_type_name">int32</span>
22893                 <span class="entry_type_container">x</span>
22894
22895                 <span class="entry_type_array">
22896                   4
22897                 </span>
22898               <span class="entry_type_visibility"> [public]</span>
22899
22900
22901
22902
22903
22904
22905             </td> <!-- entry_type -->
22906
22907             <td class="entry_description">
22908               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
22909 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
22910             </td>
22911
22912             <td class="entry_units">
22913             </td>
22914
22915             <td class="entry_range">
22916             </td>
22917
22918             <td class="entry_hal_version">
22919               <p>3.<wbr/>2</p>
22920             </td>
22921
22922             <td class="entry_tags">
22923             </td>
22924
22925           </tr>
22926           <tr class="entries_header">
22927             <th class="th_details" colspan="6">Details</th>
22928           </tr>
22929           <tr class="entry_cont">
22930             <td class="entry_details" colspan="6">
22931               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
22932 The camera device then uses the most significant X bits
22933 that correspond to how many bits are in its Bayer raw sensor
22934 output.<wbr/></p>
22935 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
22936 10 most significant bits from each color channel.<wbr/></p>
22937             </td>
22938           </tr>
22939
22940           <tr class="entries_header">
22941             <th class="th_details" colspan="6">HAL Implementation Details</th>
22942           </tr>
22943           <tr class="entry_cont">
22944             <td class="entry_details" colspan="6">
22945               
22946             </td>
22947           </tr>
22948
22949           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22950            <!-- end of entry -->
22951         
22952                 
22953           <tr class="entry" id="dynamic_android.sensor.testPatternMode">
22954             <td class="entry_name
22955              " rowspan="5">
22956               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
22957             </td>
22958             <td class="entry_type">
22959                 <span class="entry_type_name entry_type_name_enum">int32</span>
22960
22961               <span class="entry_type_visibility"> [public]</span>
22962
22963
22964
22965
22966
22967                 <ul class="entry_type_enum">
22968                   <li>
22969                     <span class="entry_type_enum_name">OFF (v3.2)</span>
22970                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
22971 device returns captures from the image sensor.<wbr/></p>
22972 <p>This is the default if the key is not set.<wbr/></p></span>
22973                   </li>
22974                   <li>
22975                     <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
22976                     <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
22977 respective color channel provided in
22978 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
22979 <p>For example:</p>
22980 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
22981 </code></pre>
22982 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
22983 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
22984 </code></pre>
22985 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
22986 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
22987                   </li>
22988                   <li>
22989                     <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
22990                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
22991 <p>The vertical bars (left-to-right) are as follows:</p>
22992 <ul>
22993 <li>100% white</li>
22994 <li>yellow</li>
22995 <li>cyan</li>
22996 <li>green</li>
22997 <li>magenta</li>
22998 <li>red</li>
22999 <li>blue</li>
23000 <li>black</li>
23001 </ul>
23002 <p>In general the image would look like the following:</p>
23003 <pre><code>W Y C G M R B K
23004 W Y C G M R B K
23005 W Y C G M R B K
23006 W Y C G M R B K
23007 W Y C G M R B K
23008 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23009 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23010 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23011
23012 (B = Blue,<wbr/> K = Black)
23013 </code></pre>
23014 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
23015 When this is not possible,<wbr/> the bar size should be rounded
23016 down to the nearest integer and the pattern can repeat
23017 on the right side.<wbr/></p>
23018 <p>Each bar's height must always take up the full sensor
23019 pixel array height.<wbr/></p>
23020 <p>Each pixel in this test pattern must be set to either
23021 0% intensity or 100% intensity.<wbr/></p></span>
23022                   </li>
23023                   <li>
23024                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
23025                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
23026 each bar should start at its specified color at the top,<wbr/>
23027 and fade to gray at the bottom.<wbr/></p>
23028 <p>Furthermore each bar is further subdivided into a left and
23029 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
23030 and the right half should have a quantized gradient.<wbr/></p>
23031 <p>In particular,<wbr/> the right half's should consist of blocks of the
23032 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
23033 <p>The least significant bits in the quantized gradient should
23034 be copied from the most significant bits of the smooth gradient.<wbr/></p>
23035 <p>The height of each bar should always be a multiple of 128.<wbr/>
23036 When this is not the case,<wbr/> the pattern should repeat at the bottom
23037 of the image.<wbr/></p></span>
23038                   </li>
23039                   <li>
23040                     <span class="entry_type_enum_name">PN9 (v3.2)</span>
23041                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
23042 generated from a PN9 512-bit sequence (typically implemented
23043 in hardware with a linear feedback shift register).<wbr/></p>
23044 <p>The generator should be reset at the beginning of each frame,<wbr/>
23045 and thus each subsequent raw frame with this test pattern should
23046 be exactly the same as the last.<wbr/></p></span>
23047                   </li>
23048                   <li>
23049                     <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
23050                     <span class="entry_type_enum_value">256</span>
23051                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
23052 available only on this camera device are at least this numeric
23053 value.<wbr/></p>
23054 <p>All of the custom test patterns will be static
23055 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
23056                   </li>
23057                 </ul>
23058
23059             </td> <!-- entry_type -->
23060
23061             <td class="entry_description">
23062               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
23063 doing a real exposure from the camera.<wbr/></p>
23064             </td>
23065
23066             <td class="entry_units">
23067             </td>
23068
23069             <td class="entry_range">
23070               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
23071             </td>
23072
23073             <td class="entry_hal_version">
23074               <p>3.<wbr/>2</p>
23075             </td>
23076
23077             <td class="entry_tags">
23078             </td>
23079
23080           </tr>
23081           <tr class="entries_header">
23082             <th class="th_details" colspan="6">Details</th>
23083           </tr>
23084           <tr class="entry_cont">
23085             <td class="entry_details" colspan="6">
23086               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
23087 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
23088 work as normal.<wbr/></p>
23089 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
23090 occur (and that the test pattern remain unmodified,<wbr/> since the flash
23091 would not actually affect it).<wbr/></p>
23092 <p>Defaults to OFF.<wbr/></p>
23093             </td>
23094           </tr>
23095
23096           <tr class="entries_header">
23097             <th class="th_details" colspan="6">HAL Implementation Details</th>
23098           </tr>
23099           <tr class="entry_cont">
23100             <td class="entry_details" colspan="6">
23101               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
23102 <p>The HAL may choose to substitute test patterns from the sensor
23103 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
23104 indistinguishable to the ISP whether the data came from the
23105 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
23106             </td>
23107           </tr>
23108
23109           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23110            <!-- end of entry -->
23111         
23112                 
23113           <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
23114             <td class="entry_name
23115              " rowspan="5">
23116               android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
23117             </td>
23118             <td class="entry_type">
23119                 <span class="entry_type_name">int64</span>
23120
23121               <span class="entry_type_visibility"> [public]</span>
23122
23123
23124               <span class="entry_type_hwlevel">[limited] </span>
23125
23126
23127
23128
23129             </td> <!-- entry_type -->
23130
23131             <td class="entry_description">
23132               <p>Duration between the start of first row exposure
23133 and the start of last row exposure.<wbr/></p>
23134             </td>
23135
23136             <td class="entry_units">
23137               Nanoseconds
23138             </td>
23139
23140             <td class="entry_range">
23141               <p>&gt;= 0 and &lt;
23142 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
23143             </td>
23144
23145             <td class="entry_hal_version">
23146               <p>3.<wbr/>2</p>
23147             </td>
23148
23149             <td class="entry_tags">
23150               <ul class="entry_tags">
23151                   <li><a href="#tag_V1">V1</a></li>
23152               </ul>
23153             </td>
23154
23155           </tr>
23156           <tr class="entries_header">
23157             <th class="th_details" colspan="6">Details</th>
23158           </tr>
23159           <tr class="entry_cont">
23160             <td class="entry_details" colspan="6">
23161               <p>This is the exposure time skew between the first and last
23162 row exposure start times.<wbr/> The first row and the last row are
23163 the first and last rows inside of the
23164 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23165 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
23166 to the frame readout time.<wbr/></p>
23167             </td>
23168           </tr>
23169
23170           <tr class="entries_header">
23171             <th class="th_details" colspan="6">HAL Implementation Details</th>
23172           </tr>
23173           <tr class="entry_cont">
23174             <td class="entry_details" colspan="6">
23175               <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
23176 exposure at the same time.<wbr/></p>
23177             </td>
23178           </tr>
23179
23180           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23181            <!-- end of entry -->
23182         
23183                 
23184           <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
23185             <td class="entry_name
23186              " rowspan="5">
23187               android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
23188             </td>
23189             <td class="entry_type">
23190                 <span class="entry_type_name">float</span>
23191                 <span class="entry_type_container">x</span>
23192
23193                 <span class="entry_type_array">
23194                   4
23195                 </span>
23196               <span class="entry_type_visibility"> [public]</span>
23197
23198
23199
23200
23201                 <div class="entry_type_notes">2x2 raw count block</div>
23202
23203
23204             </td> <!-- entry_type -->
23205
23206             <td class="entry_description">
23207               <p>A per-frame dynamic black level offset for each of the color filter
23208 arrangement (CFA) mosaic channels.<wbr/></p>
23209             </td>
23210
23211             <td class="entry_units">
23212             </td>
23213
23214             <td class="entry_range">
23215               <p>&gt;= 0 for each.<wbr/></p>
23216             </td>
23217
23218             <td class="entry_hal_version">
23219               <p>3.<wbr/>2</p>
23220             </td>
23221
23222             <td class="entry_tags">
23223               <ul class="entry_tags">
23224                   <li><a href="#tag_RAW">RAW</a></li>
23225               </ul>
23226             </td>
23227
23228           </tr>
23229           <tr class="entries_header">
23230             <th class="th_details" colspan="6">Details</th>
23231           </tr>
23232           <tr class="entry_cont">
23233             <td class="entry_details" colspan="6">
23234               <p>Camera sensor black levels may vary dramatically for different
23235 capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
23236 level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
23237 inaccurate to represent the actual value on a per-frame basis.<wbr/> The
23238 camera device internal pipeline relies on reliable black level values
23239 to process the raw images appropriately.<wbr/> To get the best image
23240 quality,<wbr/> the camera device may choose to estimate the per frame black
23241 level values either based on optically shielded black regions
23242 (<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
23243 <p>This key reports the camera device estimated per-frame zero light
23244 value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
23245 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
23246 approximation of the actual black level values.<wbr/> This value is the
23247 black level used in camera device internal image processing pipeline
23248 and generally more accurate than the fixed black level values.<wbr/>
23249 However,<wbr/> since they are estimated values by the camera device,<wbr/> they
23250 may not be as accurate as the black level values calculated from the
23251 optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
23252 <p>The values are given in the same order as channels listed for the CFA
23253 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
23254 nth value given corresponds to the black level offset for the nth
23255 color channel listed in the CFA.<wbr/></p>
23256 <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
23257 camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
23258             </td>
23259           </tr>
23260
23261           <tr class="entries_header">
23262             <th class="th_details" colspan="6">HAL Implementation Details</th>
23263           </tr>
23264           <tr class="entry_cont">
23265             <td class="entry_details" colspan="6">
23266               <p>The values are given in row-column scan order,<wbr/> with the first value
23267 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
23268             </td>
23269           </tr>
23270
23271           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23272            <!-- end of entry -->
23273         
23274                 
23275           <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
23276             <td class="entry_name
23277              " rowspan="5">
23278               android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
23279             </td>
23280             <td class="entry_type">
23281                 <span class="entry_type_name">int32</span>
23282
23283               <span class="entry_type_visibility"> [public]</span>
23284
23285
23286
23287
23288
23289
23290             </td> <!-- entry_type -->
23291
23292             <td class="entry_description">
23293               <p>Maximum raw value output by sensor for this frame.<wbr/></p>
23294             </td>
23295
23296             <td class="entry_units">
23297             </td>
23298
23299             <td class="entry_range">
23300               <p>&gt;= 0</p>
23301             </td>
23302
23303             <td class="entry_hal_version">
23304               <p>3.<wbr/>2</p>
23305             </td>
23306
23307             <td class="entry_tags">
23308               <ul class="entry_tags">
23309                   <li><a href="#tag_RAW">RAW</a></li>
23310               </ul>
23311             </td>
23312
23313           </tr>
23314           <tr class="entries_header">
23315             <th class="th_details" colspan="6">Details</th>
23316           </tr>
23317           <tr class="entry_cont">
23318             <td class="entry_details" colspan="6">
23319               <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
23320 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
23321 level will change accordingly.<wbr/> This key is similar to
23322 <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
23323 estimated white level for each frame.<wbr/></p>
23324 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
23325 available or the camera device advertises this key via
23326 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
23327             </td>
23328           </tr>
23329
23330           <tr class="entries_header">
23331             <th class="th_details" colspan="6">HAL Implementation Details</th>
23332           </tr>
23333           <tr class="entry_cont">
23334             <td class="entry_details" colspan="6">
23335               <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
23336 so the value for linear sensors should not be significantly lower
23337 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
23338             </td>
23339           </tr>
23340
23341           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23342            <!-- end of entry -->
23343         
23344         
23345
23346       <!-- end of kind -->
23347       </tbody>
23348
23349   <!-- end of section -->
23350   <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
23351
23352
23353       <tr><td colspan="7" class="kind">controls</td></tr>
23354
23355       <thead class="entries_header">
23356         <tr>
23357           <th class="th_name">Property Name</th>
23358           <th class="th_type">Type</th>
23359           <th class="th_description">Description</th>
23360           <th class="th_units">Units</th>
23361           <th class="th_range">Range</th>
23362           <th class="th_hal_version">Initial HIDL HAL version</th>
23363           <th class="th_tags">Tags</th>
23364         </tr>
23365       </thead>
23366
23367       <tbody>
23368
23369         
23370
23371         
23372
23373         
23374
23375         
23376
23377                 
23378           <tr class="entry" id="controls_android.shading.mode">
23379             <td class="entry_name
23380              " rowspan="3">
23381               android.<wbr/>shading.<wbr/>mode
23382             </td>
23383             <td class="entry_type">
23384                 <span class="entry_type_name entry_type_name_enum">byte</span>
23385
23386               <span class="entry_type_visibility"> [public]</span>
23387
23388
23389               <span class="entry_type_hwlevel">[full] </span>
23390
23391
23392
23393                 <ul class="entry_type_enum">
23394                   <li>
23395                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23396                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23397                   </li>
23398                   <li>
23399                     <span class="entry_type_enum_name">FAST (v3.2)</span>
23400                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23401 frame rate relative to sensor raw output</p></span>
23402                   </li>
23403                   <li>
23404                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23405                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23406 cost of possibly reduced frame rate.<wbr/></p></span>
23407                   </li>
23408                 </ul>
23409
23410             </td> <!-- entry_type -->
23411
23412             <td class="entry_description">
23413               <p>Quality of lens shading correction applied
23414 to the image data.<wbr/></p>
23415             </td>
23416
23417             <td class="entry_units">
23418             </td>
23419
23420             <td class="entry_range">
23421               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23422             </td>
23423
23424             <td class="entry_hal_version">
23425               <p>3.<wbr/>2</p>
23426             </td>
23427
23428             <td class="entry_tags">
23429             </td>
23430
23431           </tr>
23432           <tr class="entries_header">
23433             <th class="th_details" colspan="6">Details</th>
23434           </tr>
23435           <tr class="entry_cont">
23436             <td class="entry_details" colspan="6">
23437               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23438 camera device,<wbr/> and an identity lens shading map data will be provided
23439 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
23440 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23441 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
23442 map shown below:</p>
23443 <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/>
23444  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/>
23445  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/>
23446  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/>
23447  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/>
23448  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 ]
23449 </code></pre>
23450 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23451 device.<wbr/> Applications can request lens shading map data by setting
23452 <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
23453 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
23454 data will be the one applied by the camera device for this capture request.<wbr/></p>
23455 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23456 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23457 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>
23458 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23459 to be converged before using the returned shading map data.<wbr/></p>
23460             </td>
23461           </tr>
23462
23463
23464           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23465            <!-- end of entry -->
23466         
23467                 
23468           <tr class="entry" id="controls_android.shading.strength">
23469             <td class="entry_name
23470              " rowspan="1">
23471               android.<wbr/>shading.<wbr/>strength
23472             </td>
23473             <td class="entry_type">
23474                 <span class="entry_type_name">byte</span>
23475
23476               <span class="entry_type_visibility"> [system]</span>
23477
23478
23479
23480
23481
23482
23483             </td> <!-- entry_type -->
23484
23485             <td class="entry_description">
23486               <p>Control the amount of shading correction
23487 applied to the images</p>
23488             </td>
23489
23490             <td class="entry_units">
23491               unitless: 1-10; 10 is full shading
23492           compensation
23493             </td>
23494
23495             <td class="entry_range">
23496             </td>
23497
23498             <td class="entry_hal_version">
23499               <p>3.<wbr/>2</p>
23500             </td>
23501
23502             <td class="entry_tags">
23503               <ul class="entry_tags">
23504                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23505               </ul>
23506             </td>
23507
23508           </tr>
23509
23510
23511           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23512            <!-- end of entry -->
23513         
23514         
23515
23516       <!-- end of kind -->
23517       </tbody>
23518       <tr><td colspan="7" class="kind">dynamic</td></tr>
23519
23520       <thead class="entries_header">
23521         <tr>
23522           <th class="th_name">Property Name</th>
23523           <th class="th_type">Type</th>
23524           <th class="th_description">Description</th>
23525           <th class="th_units">Units</th>
23526           <th class="th_range">Range</th>
23527           <th class="th_hal_version">Initial HIDL HAL version</th>
23528           <th class="th_tags">Tags</th>
23529         </tr>
23530       </thead>
23531
23532       <tbody>
23533
23534         
23535
23536         
23537
23538         
23539
23540         
23541
23542                 
23543           <tr class="entry" id="dynamic_android.shading.mode">
23544             <td class="entry_name
23545              " rowspan="3">
23546               android.<wbr/>shading.<wbr/>mode
23547             </td>
23548             <td class="entry_type">
23549                 <span class="entry_type_name entry_type_name_enum">byte</span>
23550
23551               <span class="entry_type_visibility"> [public]</span>
23552
23553
23554               <span class="entry_type_hwlevel">[full] </span>
23555
23556
23557
23558                 <ul class="entry_type_enum">
23559                   <li>
23560                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23561                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23562                   </li>
23563                   <li>
23564                     <span class="entry_type_enum_name">FAST (v3.2)</span>
23565                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23566 frame rate relative to sensor raw output</p></span>
23567                   </li>
23568                   <li>
23569                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23570                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23571 cost of possibly reduced frame rate.<wbr/></p></span>
23572                   </li>
23573                 </ul>
23574
23575             </td> <!-- entry_type -->
23576
23577             <td class="entry_description">
23578               <p>Quality of lens shading correction applied
23579 to the image data.<wbr/></p>
23580             </td>
23581
23582             <td class="entry_units">
23583             </td>
23584
23585             <td class="entry_range">
23586               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23587             </td>
23588
23589             <td class="entry_hal_version">
23590               <p>3.<wbr/>2</p>
23591             </td>
23592
23593             <td class="entry_tags">
23594             </td>
23595
23596           </tr>
23597           <tr class="entries_header">
23598             <th class="th_details" colspan="6">Details</th>
23599           </tr>
23600           <tr class="entry_cont">
23601             <td class="entry_details" colspan="6">
23602               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23603 camera device,<wbr/> and an identity lens shading map data will be provided
23604 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
23605 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23606 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
23607 map shown below:</p>
23608 <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/>
23609  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/>
23610  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/>
23611  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/>
23612  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/>
23613  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 ]
23614 </code></pre>
23615 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23616 device.<wbr/> Applications can request lens shading map data by setting
23617 <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
23618 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
23619 data will be the one applied by the camera device for this capture request.<wbr/></p>
23620 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23621 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23622 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>
23623 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23624 to be converged before using the returned shading map data.<wbr/></p>
23625             </td>
23626           </tr>
23627
23628
23629           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23630            <!-- end of entry -->
23631         
23632         
23633
23634       <!-- end of kind -->
23635       </tbody>
23636       <tr><td colspan="7" class="kind">static</td></tr>
23637
23638       <thead class="entries_header">
23639         <tr>
23640           <th class="th_name">Property Name</th>
23641           <th class="th_type">Type</th>
23642           <th class="th_description">Description</th>
23643           <th class="th_units">Units</th>
23644           <th class="th_range">Range</th>
23645           <th class="th_hal_version">Initial HIDL HAL version</th>
23646           <th class="th_tags">Tags</th>
23647         </tr>
23648       </thead>
23649
23650       <tbody>
23651
23652         
23653
23654         
23655
23656         
23657
23658         
23659
23660                 
23661           <tr class="entry" id="static_android.shading.availableModes">
23662             <td class="entry_name
23663              " rowspan="5">
23664               android.<wbr/>shading.<wbr/>available<wbr/>Modes
23665             </td>
23666             <td class="entry_type">
23667                 <span class="entry_type_name">byte</span>
23668                 <span class="entry_type_container">x</span>
23669
23670                 <span class="entry_type_array">
23671                   n
23672                 </span>
23673               <span class="entry_type_visibility"> [public as enumList]</span>
23674
23675
23676               <span class="entry_type_hwlevel">[legacy] </span>
23677
23678
23679                 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
23680
23681
23682             </td> <!-- entry_type -->
23683
23684             <td class="entry_description">
23685               <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>
23686             </td>
23687
23688             <td class="entry_units">
23689             </td>
23690
23691             <td class="entry_range">
23692               <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
23693             </td>
23694
23695             <td class="entry_hal_version">
23696               <p>3.<wbr/>2</p>
23697             </td>
23698
23699             <td class="entry_tags">
23700             </td>
23701
23702           </tr>
23703           <tr class="entries_header">
23704             <th class="th_details" colspan="6">Details</th>
23705           </tr>
23706           <tr class="entry_cont">
23707             <td class="entry_details" colspan="6">
23708               <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
23709 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
23710 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
23711 LEGACY devices will always only support FAST mode.<wbr/></p>
23712             </td>
23713           </tr>
23714
23715           <tr class="entries_header">
23716             <th class="th_details" colspan="6">HAL Implementation Details</th>
23717           </tr>
23718           <tr class="entry_cont">
23719             <td class="entry_details" colspan="6">
23720               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
23721 available on the camera device,<wbr/> but the underlying implementation can be the same for
23722 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
23723 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
23724             </td>
23725           </tr>
23726
23727           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23728            <!-- end of entry -->
23729         
23730         
23731
23732       <!-- end of kind -->
23733       </tbody>
23734
23735   <!-- end of section -->
23736   <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
23737
23738
23739       <tr><td colspan="7" class="kind">controls</td></tr>
23740
23741       <thead class="entries_header">
23742         <tr>
23743           <th class="th_name">Property Name</th>
23744           <th class="th_type">Type</th>
23745           <th class="th_description">Description</th>
23746           <th class="th_units">Units</th>
23747           <th class="th_range">Range</th>
23748           <th class="th_hal_version">Initial HIDL HAL version</th>
23749           <th class="th_tags">Tags</th>
23750         </tr>
23751       </thead>
23752
23753       <tbody>
23754
23755         
23756
23757         
23758
23759         
23760
23761         
23762
23763                 
23764           <tr class="entry" id="controls_android.statistics.faceDetectMode">
23765             <td class="entry_name
23766              " rowspan="5">
23767               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
23768             </td>
23769             <td class="entry_type">
23770                 <span class="entry_type_name entry_type_name_enum">byte</span>
23771
23772               <span class="entry_type_visibility"> [public]</span>
23773
23774
23775               <span class="entry_type_hwlevel">[legacy] </span>
23776
23777
23778
23779                 <ul class="entry_type_enum">
23780                   <li>
23781                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23782                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
23783 results.<wbr/></p></span>
23784                   </li>
23785                   <li>
23786                     <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
23787                     <span class="entry_type_enum_optional">[optional]</span>
23788                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
23789                   </li>
23790                   <li>
23791                     <span class="entry_type_enum_name">FULL (v3.2)</span>
23792                     <span class="entry_type_enum_optional">[optional]</span>
23793                     <span class="entry_type_enum_notes"><p>Return all face
23794 metadata.<wbr/></p>
23795 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
23796                   </li>
23797                 </ul>
23798
23799             </td> <!-- entry_type -->
23800
23801             <td class="entry_description">
23802               <p>Operating mode for the face detector
23803 unit.<wbr/></p>
23804             </td>
23805
23806             <td class="entry_units">
23807             </td>
23808
23809             <td class="entry_range">
23810               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
23811             </td>
23812
23813             <td class="entry_hal_version">
23814               <p>3.<wbr/>2</p>
23815             </td>
23816
23817             <td class="entry_tags">
23818               <ul class="entry_tags">
23819                   <li><a href="#tag_BC">BC</a></li>
23820               </ul>
23821             </td>
23822
23823           </tr>
23824           <tr class="entries_header">
23825             <th class="th_details" colspan="6">Details</th>
23826           </tr>
23827           <tr class="entry_cont">
23828             <td class="entry_details" colspan="6">
23829               <p>Whether face detection is enabled,<wbr/> and whether it
23830 should output just the basic fields or the full set of
23831 fields.<wbr/></p>
23832             </td>
23833           </tr>
23834
23835           <tr class="entries_header">
23836             <th class="th_details" colspan="6">HAL Implementation Details</th>
23837           </tr>
23838           <tr class="entry_cont">
23839             <td class="entry_details" colspan="6">
23840               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
23841 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
23842 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
23843 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
23844             </td>
23845           </tr>
23846
23847           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23848            <!-- end of entry -->
23849         
23850                 
23851           <tr class="entry" id="controls_android.statistics.histogramMode">
23852             <td class="entry_name
23853              " rowspan="1">
23854               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
23855             </td>
23856             <td class="entry_type">
23857                 <span class="entry_type_name entry_type_name_enum">byte</span>
23858
23859               <span class="entry_type_visibility"> [system as boolean]</span>
23860
23861
23862
23863
23864
23865                 <ul class="entry_type_enum">
23866                   <li>
23867                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23868                   </li>
23869                   <li>
23870                     <span class="entry_type_enum_name">ON (v3.2)</span>
23871                   </li>
23872                 </ul>
23873
23874             </td> <!-- entry_type -->
23875
23876             <td class="entry_description">
23877               <p>Operating mode for histogram
23878 generation</p>
23879             </td>
23880
23881             <td class="entry_units">
23882             </td>
23883
23884             <td class="entry_range">
23885             </td>
23886
23887             <td class="entry_hal_version">
23888               <p>3.<wbr/>2</p>
23889             </td>
23890
23891             <td class="entry_tags">
23892               <ul class="entry_tags">
23893                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23894               </ul>
23895             </td>
23896
23897           </tr>
23898
23899
23900           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23901            <!-- end of entry -->
23902         
23903                 
23904           <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
23905             <td class="entry_name
23906              " rowspan="1">
23907               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
23908             </td>
23909             <td class="entry_type">
23910                 <span class="entry_type_name entry_type_name_enum">byte</span>
23911
23912               <span class="entry_type_visibility"> [system as boolean]</span>
23913
23914
23915
23916
23917
23918                 <ul class="entry_type_enum">
23919                   <li>
23920                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23921                   </li>
23922                   <li>
23923                     <span class="entry_type_enum_name">ON (v3.2)</span>
23924                   </li>
23925                 </ul>
23926
23927             </td> <!-- entry_type -->
23928
23929             <td class="entry_description">
23930               <p>Operating mode for sharpness map
23931 generation</p>
23932             </td>
23933
23934             <td class="entry_units">
23935             </td>
23936
23937             <td class="entry_range">
23938             </td>
23939
23940             <td class="entry_hal_version">
23941               <p>3.<wbr/>2</p>
23942             </td>
23943
23944             <td class="entry_tags">
23945               <ul class="entry_tags">
23946                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23947               </ul>
23948             </td>
23949
23950           </tr>
23951
23952
23953           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23954            <!-- end of entry -->
23955         
23956                 
23957           <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
23958             <td class="entry_name
23959              " rowspan="3">
23960               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
23961             </td>
23962             <td class="entry_type">
23963                 <span class="entry_type_name entry_type_name_enum">byte</span>
23964
23965               <span class="entry_type_visibility"> [public as boolean]</span>
23966
23967
23968
23969
23970
23971                 <ul class="entry_type_enum">
23972                   <li>
23973                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23974                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
23975                   </li>
23976                   <li>
23977                     <span class="entry_type_enum_name">ON (v3.2)</span>
23978                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
23979                   </li>
23980                 </ul>
23981
23982             </td> <!-- entry_type -->
23983
23984             <td class="entry_description">
23985               <p>Operating mode for hot pixel map generation.<wbr/></p>
23986             </td>
23987
23988             <td class="entry_units">
23989             </td>
23990
23991             <td class="entry_range">
23992               <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>
23993             </td>
23994
23995             <td class="entry_hal_version">
23996               <p>3.<wbr/>2</p>
23997             </td>
23998
23999             <td class="entry_tags">
24000               <ul class="entry_tags">
24001                   <li><a href="#tag_V1">V1</a></li>
24002                   <li><a href="#tag_RAW">RAW</a></li>
24003               </ul>
24004             </td>
24005
24006           </tr>
24007           <tr class="entries_header">
24008             <th class="th_details" colspan="6">Details</th>
24009           </tr>
24010           <tr class="entry_cont">
24011             <td class="entry_details" colspan="6">
24012               <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/>
24013 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
24014             </td>
24015           </tr>
24016
24017
24018           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24019            <!-- end of entry -->
24020         
24021                 
24022           <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
24023             <td class="entry_name
24024              " rowspan="3">
24025               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
24026             </td>
24027             <td class="entry_type">
24028                 <span class="entry_type_name entry_type_name_enum">byte</span>
24029
24030               <span class="entry_type_visibility"> [public]</span>
24031
24032
24033               <span class="entry_type_hwlevel">[full] </span>
24034
24035
24036
24037                 <ul class="entry_type_enum">
24038                   <li>
24039                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24040                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
24041                   </li>
24042                   <li>
24043                     <span class="entry_type_enum_name">ON (v3.2)</span>
24044                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
24045                   </li>
24046                 </ul>
24047
24048             </td> <!-- entry_type -->
24049
24050             <td class="entry_description">
24051               <p>Whether the camera device will output the lens
24052 shading map in output result metadata.<wbr/></p>
24053             </td>
24054
24055             <td class="entry_units">
24056             </td>
24057
24058             <td class="entry_range">
24059               <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>
24060             </td>
24061
24062             <td class="entry_hal_version">
24063               <p>3.<wbr/>2</p>
24064             </td>
24065
24066             <td class="entry_tags">
24067               <ul class="entry_tags">
24068                   <li><a href="#tag_RAW">RAW</a></li>
24069               </ul>
24070             </td>
24071
24072           </tr>
24073           <tr class="entries_header">
24074             <th class="th_details" colspan="6">Details</th>
24075           </tr>
24076           <tr class="entry_cont">
24077             <td class="entry_details" colspan="6">
24078               <p>When set to ON,<wbr/>
24079 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
24080 the output result metadata.<wbr/></p>
24081 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24082             </td>
24083           </tr>
24084
24085
24086           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24087            <!-- end of entry -->
24088         
24089                 
24090           <tr class="entry" id="controls_android.statistics.oisDataMode">
24091             <td class="entry_name
24092              " rowspan="3">
24093               android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
24094             </td>
24095             <td class="entry_type">
24096                 <span class="entry_type_name entry_type_name_enum">byte</span>
24097
24098               <span class="entry_type_visibility"> [public]</span>
24099
24100
24101
24102
24103
24104                 <ul class="entry_type_enum">
24105                   <li>
24106                     <span class="entry_type_enum_name">OFF (v3.3)</span>
24107                     <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
24108                   </li>
24109                   <li>
24110                     <span class="entry_type_enum_name">ON (v3.3)</span>
24111                     <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
24112                   </li>
24113                 </ul>
24114
24115             </td> <!-- entry_type -->
24116
24117             <td class="entry_description">
24118               <p>A control for selecting whether OIS position information is included in output
24119 result metadata.<wbr/></p>
24120             </td>
24121
24122             <td class="entry_units">
24123             </td>
24124
24125             <td class="entry_range">
24126               <p>android.<wbr/>Statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</p>
24127             </td>
24128
24129             <td class="entry_hal_version">
24130               <p>3.<wbr/>3</p>
24131             </td>
24132
24133             <td class="entry_tags">
24134             </td>
24135
24136           </tr>
24137           <tr class="entries_header">
24138             <th class="th_details" colspan="6">Details</th>
24139           </tr>
24140           <tr class="entry_cont">
24141             <td class="entry_details" colspan="6">
24142               <p>When set to ON,<wbr/>
24143 <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/>
24144 and android.<wbr/>statistics.<wbr/>ois<wbr/>Shift<wbr/>Pixel<wbr/>Y provide OIS data in the output result metadata.<wbr/></p>
24145             </td>
24146           </tr>
24147
24148
24149           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24150            <!-- end of entry -->
24151         
24152         
24153
24154       <!-- end of kind -->
24155       </tbody>
24156       <tr><td colspan="7" class="kind">static</td></tr>
24157
24158       <thead class="entries_header">
24159         <tr>
24160           <th class="th_name">Property Name</th>
24161           <th class="th_type">Type</th>
24162           <th class="th_description">Description</th>
24163           <th class="th_units">Units</th>
24164           <th class="th_range">Range</th>
24165           <th class="th_hal_version">Initial HIDL HAL version</th>
24166           <th class="th_tags">Tags</th>
24167         </tr>
24168       </thead>
24169
24170       <tbody>
24171
24172         
24173
24174         
24175
24176         
24177
24178         
24179                 
24180             
24181
24182                 
24183           <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
24184             <td class="entry_name
24185              " rowspan="3">
24186               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
24187             </td>
24188             <td class="entry_type">
24189                 <span class="entry_type_name">byte</span>
24190                 <span class="entry_type_container">x</span>
24191
24192                 <span class="entry_type_array">
24193                   n
24194                 </span>
24195               <span class="entry_type_visibility"> [public as enumList]</span>
24196
24197
24198               <span class="entry_type_hwlevel">[legacy] </span>
24199
24200
24201                 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
24202
24203
24204             </td> <!-- entry_type -->
24205
24206             <td class="entry_description">
24207               <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
24208 supported by this camera device.<wbr/></p>
24209             </td>
24210
24211             <td class="entry_units">
24212             </td>
24213
24214             <td class="entry_range">
24215               <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
24216             </td>
24217
24218             <td class="entry_hal_version">
24219               <p>3.<wbr/>2</p>
24220             </td>
24221
24222             <td class="entry_tags">
24223             </td>
24224
24225           </tr>
24226           <tr class="entries_header">
24227             <th class="th_details" colspan="6">Details</th>
24228           </tr>
24229           <tr class="entry_cont">
24230             <td class="entry_details" colspan="6">
24231               <p>OFF is always supported.<wbr/></p>
24232             </td>
24233           </tr>
24234
24235
24236           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24237            <!-- end of entry -->
24238         
24239                 
24240           <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
24241             <td class="entry_name
24242              " rowspan="1">
24243               android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
24244             </td>
24245             <td class="entry_type">
24246                 <span class="entry_type_name">int32</span>
24247
24248               <span class="entry_type_visibility"> [system]</span>
24249
24250
24251
24252
24253
24254
24255             </td> <!-- entry_type -->
24256
24257             <td class="entry_description">
24258               <p>Number of histogram buckets
24259 supported</p>
24260             </td>
24261
24262             <td class="entry_units">
24263             </td>
24264
24265             <td class="entry_range">
24266               <p>&gt;= 64</p>
24267             </td>
24268
24269             <td class="entry_hal_version">
24270               <p>3.<wbr/>2</p>
24271             </td>
24272
24273             <td class="entry_tags">
24274               <ul class="entry_tags">
24275                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24276               </ul>
24277             </td>
24278
24279           </tr>
24280
24281
24282           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24283            <!-- end of entry -->
24284         
24285                 
24286           <tr class="entry" id="static_android.statistics.info.maxFaceCount">
24287             <td class="entry_name
24288              " rowspan="1">
24289               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
24290             </td>
24291             <td class="entry_type">
24292                 <span class="entry_type_name">int32</span>
24293
24294               <span class="entry_type_visibility"> [public]</span>
24295
24296
24297               <span class="entry_type_hwlevel">[legacy] </span>
24298
24299
24300
24301
24302             </td> <!-- entry_type -->
24303
24304             <td class="entry_description">
24305               <p>The maximum number of simultaneously detectable
24306 faces.<wbr/></p>
24307             </td>
24308
24309             <td class="entry_units">
24310             </td>
24311
24312             <td class="entry_range">
24313               <p>0 for cameras without available face detection; otherwise:
24314 <code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
24315 <code>&gt;0</code> for LEGACY devices.<wbr/></p>
24316             </td>
24317
24318             <td class="entry_hal_version">
24319               <p>3.<wbr/>2</p>
24320             </td>
24321
24322             <td class="entry_tags">
24323               <ul class="entry_tags">
24324                   <li><a href="#tag_BC">BC</a></li>
24325               </ul>
24326             </td>
24327
24328           </tr>
24329
24330
24331           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24332            <!-- end of entry -->
24333         
24334                 
24335           <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
24336             <td class="entry_name
24337              " rowspan="1">
24338               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
24339             </td>
24340             <td class="entry_type">
24341                 <span class="entry_type_name">int32</span>
24342
24343               <span class="entry_type_visibility"> [system]</span>
24344
24345
24346
24347
24348
24349
24350             </td> <!-- entry_type -->
24351
24352             <td class="entry_description">
24353               <p>Maximum value possible for a histogram
24354 bucket</p>
24355             </td>
24356
24357             <td class="entry_units">
24358             </td>
24359
24360             <td class="entry_range">
24361             </td>
24362
24363             <td class="entry_hal_version">
24364               <p>3.<wbr/>2</p>
24365             </td>
24366
24367             <td class="entry_tags">
24368               <ul class="entry_tags">
24369                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24370               </ul>
24371             </td>
24372
24373           </tr>
24374
24375
24376           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24377            <!-- end of entry -->
24378         
24379                 
24380           <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
24381             <td class="entry_name
24382              " rowspan="1">
24383               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
24384             </td>
24385             <td class="entry_type">
24386                 <span class="entry_type_name">int32</span>
24387
24388               <span class="entry_type_visibility"> [system]</span>
24389
24390
24391
24392
24393
24394
24395             </td> <!-- entry_type -->
24396
24397             <td class="entry_description">
24398               <p>Maximum value possible for a sharpness map
24399 region.<wbr/></p>
24400             </td>
24401
24402             <td class="entry_units">
24403             </td>
24404
24405             <td class="entry_range">
24406             </td>
24407
24408             <td class="entry_hal_version">
24409               <p>3.<wbr/>2</p>
24410             </td>
24411
24412             <td class="entry_tags">
24413               <ul class="entry_tags">
24414                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24415               </ul>
24416             </td>
24417
24418           </tr>
24419
24420
24421           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24422            <!-- end of entry -->
24423         
24424                 
24425           <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
24426             <td class="entry_name
24427              " rowspan="1">
24428               android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
24429             </td>
24430             <td class="entry_type">
24431                 <span class="entry_type_name">int32</span>
24432                 <span class="entry_type_container">x</span>
24433
24434                 <span class="entry_type_array">
24435                   2
24436                 </span>
24437               <span class="entry_type_visibility"> [system as size]</span>
24438
24439
24440
24441
24442                 <div class="entry_type_notes">width x height</div>
24443
24444
24445             </td> <!-- entry_type -->
24446
24447             <td class="entry_description">
24448               <p>Dimensions of the sharpness
24449 map</p>
24450             </td>
24451
24452             <td class="entry_units">
24453             </td>
24454
24455             <td class="entry_range">
24456               <p>Must be at least 32 x 32</p>
24457             </td>
24458
24459             <td class="entry_hal_version">
24460               <p>3.<wbr/>2</p>
24461             </td>
24462
24463             <td class="entry_tags">
24464               <ul class="entry_tags">
24465                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24466               </ul>
24467             </td>
24468
24469           </tr>
24470
24471
24472           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24473            <!-- end of entry -->
24474         
24475                 
24476           <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
24477             <td class="entry_name
24478              " rowspan="3">
24479               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
24480             </td>
24481             <td class="entry_type">
24482                 <span class="entry_type_name">byte</span>
24483                 <span class="entry_type_container">x</span>
24484
24485                 <span class="entry_type_array">
24486                   n
24487                 </span>
24488               <span class="entry_type_visibility"> [public as boolean]</span>
24489
24490
24491
24492
24493                 <div class="entry_type_notes">list of enums</div>
24494
24495
24496             </td> <!-- entry_type -->
24497
24498             <td class="entry_description">
24499               <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
24500 supported by this camera device.<wbr/></p>
24501             </td>
24502
24503             <td class="entry_units">
24504             </td>
24505
24506             <td class="entry_range">
24507               <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
24508             </td>
24509
24510             <td class="entry_hal_version">
24511               <p>3.<wbr/>2</p>
24512             </td>
24513
24514             <td class="entry_tags">
24515               <ul class="entry_tags">
24516                   <li><a href="#tag_V1">V1</a></li>
24517                   <li><a href="#tag_RAW">RAW</a></li>
24518               </ul>
24519             </td>
24520
24521           </tr>
24522           <tr class="entries_header">
24523             <th class="th_details" colspan="6">Details</th>
24524           </tr>
24525           <tr class="entry_cont">
24526             <td class="entry_details" colspan="6">
24527               <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
24528 <code>false</code>.<wbr/></p>
24529 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24530             </td>
24531           </tr>
24532
24533
24534           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24535            <!-- end of entry -->
24536         
24537                 
24538           <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
24539             <td class="entry_name
24540              " rowspan="3">
24541               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
24542             </td>
24543             <td class="entry_type">
24544                 <span class="entry_type_name">byte</span>
24545                 <span class="entry_type_container">x</span>
24546
24547                 <span class="entry_type_array">
24548                   n
24549                 </span>
24550               <span class="entry_type_visibility"> [public as enumList]</span>
24551
24552
24553
24554
24555                 <div class="entry_type_notes">list of enums</div>
24556
24557
24558             </td> <!-- entry_type -->
24559
24560             <td class="entry_description">
24561               <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
24562 are supported by this camera device.<wbr/></p>
24563             </td>
24564
24565             <td class="entry_units">
24566             </td>
24567
24568             <td class="entry_range">
24569               <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
24570             </td>
24571
24572             <td class="entry_hal_version">
24573               <p>3.<wbr/>2</p>
24574             </td>
24575
24576             <td class="entry_tags">
24577             </td>
24578
24579           </tr>
24580           <tr class="entries_header">
24581             <th class="th_details" colspan="6">Details</th>
24582           </tr>
24583           <tr class="entry_cont">
24584             <td class="entry_details" colspan="6">
24585               <p>If no lens shading map output is available for this camera device,<wbr/> this key will
24586 contain only OFF.<wbr/></p>
24587 <p>ON is always supported on devices with the RAW capability.<wbr/>
24588 LEGACY mode devices will always only support OFF.<wbr/></p>
24589             </td>
24590           </tr>
24591
24592
24593           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24594            <!-- end of entry -->
24595         
24596                 
24597           <tr class="entry" id="static_android.statistics.info.availableOisDataModes">
24598             <td class="entry_name
24599              " rowspan="3">
24600               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes
24601             </td>
24602             <td class="entry_type">
24603                 <span class="entry_type_name">byte</span>
24604                 <span class="entry_type_container">x</span>
24605
24606                 <span class="entry_type_array">
24607                   n
24608                 </span>
24609               <span class="entry_type_visibility"> [public as enumList]</span>
24610
24611
24612
24613
24614                 <div class="entry_type_notes">list of enums</div>
24615
24616
24617             </td> <!-- entry_type -->
24618
24619             <td class="entry_description">
24620               <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
24621 are supported by this camera device.<wbr/></p>
24622             </td>
24623
24624             <td class="entry_units">
24625             </td>
24626
24627             <td class="entry_range">
24628               <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p>
24629             </td>
24630
24631             <td class="entry_hal_version">
24632               <p>3.<wbr/>3</p>
24633             </td>
24634
24635             <td class="entry_tags">
24636             </td>
24637
24638           </tr>
24639           <tr class="entries_header">
24640             <th class="th_details" colspan="6">Details</th>
24641           </tr>
24642           <tr class="entry_cont">
24643             <td class="entry_details" colspan="6">
24644               <p>If no OIS data output is available for this camera device,<wbr/> this key will
24645 contain only OFF.<wbr/></p>
24646             </td>
24647           </tr>
24648
24649
24650           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24651            <!-- end of entry -->
24652         
24653         
24654         
24655
24656         
24657
24658       <!-- end of kind -->
24659       </tbody>
24660       <tr><td colspan="7" class="kind">dynamic</td></tr>
24661
24662       <thead class="entries_header">
24663         <tr>
24664           <th class="th_name">Property Name</th>
24665           <th class="th_type">Type</th>
24666           <th class="th_description">Description</th>
24667           <th class="th_units">Units</th>
24668           <th class="th_range">Range</th>
24669           <th class="th_hal_version">Initial HIDL HAL version</th>
24670           <th class="th_tags">Tags</th>
24671         </tr>
24672       </thead>
24673
24674       <tbody>
24675
24676         
24677
24678         
24679
24680         
24681
24682         
24683
24684                 
24685           <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
24686             <td class="entry_name
24687              " rowspan="5">
24688               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24689             </td>
24690             <td class="entry_type">
24691                 <span class="entry_type_name entry_type_name_enum">byte</span>
24692
24693               <span class="entry_type_visibility"> [public]</span>
24694
24695
24696               <span class="entry_type_hwlevel">[legacy] </span>
24697
24698
24699
24700                 <ul class="entry_type_enum">
24701                   <li>
24702                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24703                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24704 results.<wbr/></p></span>
24705                   </li>
24706                   <li>
24707                     <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24708                     <span class="entry_type_enum_optional">[optional]</span>
24709                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24710                   </li>
24711                   <li>
24712                     <span class="entry_type_enum_name">FULL (v3.2)</span>
24713                     <span class="entry_type_enum_optional">[optional]</span>
24714                     <span class="entry_type_enum_notes"><p>Return all face
24715 metadata.<wbr/></p>
24716 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24717                   </li>
24718                 </ul>
24719
24720             </td> <!-- entry_type -->
24721
24722             <td class="entry_description">
24723               <p>Operating mode for the face detector
24724 unit.<wbr/></p>
24725             </td>
24726
24727             <td class="entry_units">
24728             </td>
24729
24730             <td class="entry_range">
24731               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24732             </td>
24733
24734             <td class="entry_hal_version">
24735               <p>3.<wbr/>2</p>
24736             </td>
24737
24738             <td class="entry_tags">
24739               <ul class="entry_tags">
24740                   <li><a href="#tag_BC">BC</a></li>
24741               </ul>
24742             </td>
24743
24744           </tr>
24745           <tr class="entries_header">
24746             <th class="th_details" colspan="6">Details</th>
24747           </tr>
24748           <tr class="entry_cont">
24749             <td class="entry_details" colspan="6">
24750               <p>Whether face detection is enabled,<wbr/> and whether it
24751 should output just the basic fields or the full set of
24752 fields.<wbr/></p>
24753             </td>
24754           </tr>
24755
24756           <tr class="entries_header">
24757             <th class="th_details" colspan="6">HAL Implementation Details</th>
24758           </tr>
24759           <tr class="entry_cont">
24760             <td class="entry_details" colspan="6">
24761               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
24762 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
24763 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
24764 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
24765             </td>
24766           </tr>
24767
24768           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24769            <!-- end of entry -->
24770         
24771                 
24772           <tr class="entry" id="dynamic_android.statistics.faceIds">
24773             <td class="entry_name
24774              " rowspan="3">
24775               android.<wbr/>statistics.<wbr/>face<wbr/>Ids
24776             </td>
24777             <td class="entry_type">
24778                 <span class="entry_type_name">int32</span>
24779                 <span class="entry_type_container">x</span>
24780
24781                 <span class="entry_type_array">
24782                   n
24783                 </span>
24784               <span class="entry_type_visibility"> [ndk_public]</span>
24785
24786
24787               <span class="entry_type_hwlevel">[legacy] </span>
24788
24789
24790
24791
24792             </td> <!-- entry_type -->
24793
24794             <td class="entry_description">
24795               <p>List of unique IDs for detected faces.<wbr/></p>
24796             </td>
24797
24798             <td class="entry_units">
24799             </td>
24800
24801             <td class="entry_range">
24802             </td>
24803
24804             <td class="entry_hal_version">
24805               <p>3.<wbr/>2</p>
24806             </td>
24807
24808             <td class="entry_tags">
24809               <ul class="entry_tags">
24810                   <li><a href="#tag_BC">BC</a></li>
24811               </ul>
24812             </td>
24813
24814           </tr>
24815           <tr class="entries_header">
24816             <th class="th_details" colspan="6">Details</th>
24817           </tr>
24818           <tr class="entry_cont">
24819             <td class="entry_details" colspan="6">
24820               <p>Each detected face is given a unique ID that is valid for as long as the face is visible
24821 to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
24822 assigned a new ID.<wbr/></p>
24823 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
24824             </td>
24825           </tr>
24826
24827
24828           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24829            <!-- end of entry -->
24830         
24831                 
24832           <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
24833             <td class="entry_name
24834              " rowspan="3">
24835               android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
24836             </td>
24837             <td class="entry_type">
24838                 <span class="entry_type_name">int32</span>
24839                 <span class="entry_type_container">x</span>
24840
24841                 <span class="entry_type_array">
24842                   n x 6
24843                 </span>
24844               <span class="entry_type_visibility"> [ndk_public]</span>
24845
24846
24847               <span class="entry_type_hwlevel">[legacy] </span>
24848
24849
24850                 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
24851
24852
24853             </td> <!-- entry_type -->
24854
24855             <td class="entry_description">
24856               <p>List of landmarks for detected
24857 faces.<wbr/></p>
24858             </td>
24859
24860             <td class="entry_units">
24861             </td>
24862
24863             <td class="entry_range">
24864             </td>
24865
24866             <td class="entry_hal_version">
24867               <p>3.<wbr/>2</p>
24868             </td>
24869
24870             <td class="entry_tags">
24871               <ul class="entry_tags">
24872                   <li><a href="#tag_BC">BC</a></li>
24873               </ul>
24874             </td>
24875
24876           </tr>
24877           <tr class="entries_header">
24878             <th class="th_details" colspan="6">Details</th>
24879           </tr>
24880           <tr class="entry_cont">
24881             <td class="entry_details" colspan="6">
24882               <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
24883 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
24884 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
24885             </td>
24886           </tr>
24887
24888
24889           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24890            <!-- end of entry -->
24891         
24892                 
24893           <tr class="entry" id="dynamic_android.statistics.faceRectangles">
24894             <td class="entry_name
24895              " rowspan="3">
24896               android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
24897             </td>
24898             <td class="entry_type">
24899                 <span class="entry_type_name">int32</span>
24900                 <span class="entry_type_container">x</span>
24901
24902                 <span class="entry_type_array">
24903                   n x 4
24904                 </span>
24905               <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
24906
24907
24908               <span class="entry_type_hwlevel">[legacy] </span>
24909
24910
24911                 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
24912
24913
24914             </td> <!-- entry_type -->
24915
24916             <td class="entry_description">
24917               <p>List of the bounding rectangles for detected
24918 faces.<wbr/></p>
24919             </td>
24920
24921             <td class="entry_units">
24922             </td>
24923
24924             <td class="entry_range">
24925             </td>
24926
24927             <td class="entry_hal_version">
24928               <p>3.<wbr/>2</p>
24929             </td>
24930
24931             <td class="entry_tags">
24932               <ul class="entry_tags">
24933                   <li><a href="#tag_BC">BC</a></li>
24934               </ul>
24935             </td>
24936
24937           </tr>
24938           <tr class="entries_header">
24939             <th class="th_details" colspan="6">Details</th>
24940           </tr>
24941           <tr class="entry_cont">
24942             <td class="entry_details" colspan="6">
24943               <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
24944 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
24945 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
24946             </td>
24947           </tr>
24948
24949
24950           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24951            <!-- end of entry -->
24952         
24953                 
24954           <tr class="entry" id="dynamic_android.statistics.faceScores">
24955             <td class="entry_name
24956              " rowspan="5">
24957               android.<wbr/>statistics.<wbr/>face<wbr/>Scores
24958             </td>
24959             <td class="entry_type">
24960                 <span class="entry_type_name">byte</span>
24961                 <span class="entry_type_container">x</span>
24962
24963                 <span class="entry_type_array">
24964                   n
24965                 </span>
24966               <span class="entry_type_visibility"> [ndk_public]</span>
24967
24968
24969               <span class="entry_type_hwlevel">[legacy] </span>
24970
24971
24972
24973
24974             </td> <!-- entry_type -->
24975
24976             <td class="entry_description">
24977               <p>List of the face confidence scores for
24978 detected faces</p>
24979             </td>
24980
24981             <td class="entry_units">
24982             </td>
24983
24984             <td class="entry_range">
24985               <p>1-100</p>
24986             </td>
24987
24988             <td class="entry_hal_version">
24989               <p>3.<wbr/>2</p>
24990             </td>
24991
24992             <td class="entry_tags">
24993               <ul class="entry_tags">
24994                   <li><a href="#tag_BC">BC</a></li>
24995               </ul>
24996             </td>
24997
24998           </tr>
24999           <tr class="entries_header">
25000             <th class="th_details" colspan="6">Details</th>
25001           </tr>
25002           <tr class="entry_cont">
25003             <td class="entry_details" colspan="6">
25004               <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
25005             </td>
25006           </tr>
25007
25008           <tr class="entries_header">
25009             <th class="th_details" colspan="6">HAL Implementation Details</th>
25010           </tr>
25011           <tr class="entry_cont">
25012             <td class="entry_details" colspan="6">
25013               <p>The value should be meaningful (for example,<wbr/> setting 100 at
25014 all times is illegal).<wbr/></p>
25015             </td>
25016           </tr>
25017
25018           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25019            <!-- end of entry -->
25020         
25021                 
25022           <tr class="entry" id="dynamic_android.statistics.faces">
25023             <td class="entry_name
25024              " rowspan="3">
25025               android.<wbr/>statistics.<wbr/>faces
25026             </td>
25027             <td class="entry_type">
25028                 <span class="entry_type_name">int32</span>
25029                 <span class="entry_type_container">x</span>
25030
25031                 <span class="entry_type_array">
25032                   n
25033                 </span>
25034               <span class="entry_type_visibility"> [java_public as face]</span>
25035
25036               <span class="entry_type_synthetic">[synthetic] </span>
25037
25038               <span class="entry_type_hwlevel">[legacy] </span>
25039
25040
25041
25042
25043             </td> <!-- entry_type -->
25044
25045             <td class="entry_description">
25046               <p>List of the faces detected through camera face detection
25047 in this capture.<wbr/></p>
25048             </td>
25049
25050             <td class="entry_units">
25051             </td>
25052
25053             <td class="entry_range">
25054             </td>
25055
25056             <td class="entry_hal_version">
25057               <p>3.<wbr/>2</p>
25058             </td>
25059
25060             <td class="entry_tags">
25061             </td>
25062
25063           </tr>
25064           <tr class="entries_header">
25065             <th class="th_details" colspan="6">Details</th>
25066           </tr>
25067           <tr class="entry_cont">
25068             <td class="entry_details" colspan="6">
25069               <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>
25070             </td>
25071           </tr>
25072
25073
25074           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25075            <!-- end of entry -->
25076         
25077                 
25078           <tr class="entry" id="dynamic_android.statistics.histogram">
25079             <td class="entry_name
25080              " rowspan="3">
25081               android.<wbr/>statistics.<wbr/>histogram
25082             </td>
25083             <td class="entry_type">
25084                 <span class="entry_type_name">int32</span>
25085                 <span class="entry_type_container">x</span>
25086
25087                 <span class="entry_type_array">
25088                   n x 3
25089                 </span>
25090               <span class="entry_type_visibility"> [system]</span>
25091
25092
25093
25094
25095                 <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>
25096
25097
25098             </td> <!-- entry_type -->
25099
25100             <td class="entry_description">
25101               <p>A 3-channel histogram based on the raw
25102 sensor data</p>
25103             </td>
25104
25105             <td class="entry_units">
25106             </td>
25107
25108             <td class="entry_range">
25109             </td>
25110
25111             <td class="entry_hal_version">
25112               <p>3.<wbr/>2</p>
25113             </td>
25114
25115             <td class="entry_tags">
25116               <ul class="entry_tags">
25117                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25118               </ul>
25119             </td>
25120
25121           </tr>
25122           <tr class="entries_header">
25123             <th class="th_details" colspan="6">Details</th>
25124           </tr>
25125           <tr class="entry_cont">
25126             <td class="entry_details" colspan="6">
25127               <p>The k'th bucket (0-based) covers the input range
25128 (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/>
25129 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
25130 supported,<wbr/> all channels should have the same data</p>
25131             </td>
25132           </tr>
25133
25134
25135           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25136            <!-- end of entry -->
25137         
25138                 
25139           <tr class="entry" id="dynamic_android.statistics.histogramMode">
25140             <td class="entry_name
25141              " rowspan="1">
25142               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
25143             </td>
25144             <td class="entry_type">
25145                 <span class="entry_type_name entry_type_name_enum">byte</span>
25146
25147               <span class="entry_type_visibility"> [system as boolean]</span>
25148
25149
25150
25151
25152
25153                 <ul class="entry_type_enum">
25154                   <li>
25155                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25156                   </li>
25157                   <li>
25158                     <span class="entry_type_enum_name">ON (v3.2)</span>
25159                   </li>
25160                 </ul>
25161
25162             </td> <!-- entry_type -->
25163
25164             <td class="entry_description">
25165               <p>Operating mode for histogram
25166 generation</p>
25167             </td>
25168
25169             <td class="entry_units">
25170             </td>
25171
25172             <td class="entry_range">
25173             </td>
25174
25175             <td class="entry_hal_version">
25176               <p>3.<wbr/>2</p>
25177             </td>
25178
25179             <td class="entry_tags">
25180               <ul class="entry_tags">
25181                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25182               </ul>
25183             </td>
25184
25185           </tr>
25186
25187
25188           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25189            <!-- end of entry -->
25190         
25191                 
25192           <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
25193             <td class="entry_name
25194              " rowspan="3">
25195               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
25196             </td>
25197             <td class="entry_type">
25198                 <span class="entry_type_name">int32</span>
25199                 <span class="entry_type_container">x</span>
25200
25201                 <span class="entry_type_array">
25202                   n x m x 3
25203                 </span>
25204               <span class="entry_type_visibility"> [system]</span>
25205
25206
25207
25208
25209                 <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>
25210
25211
25212             </td> <!-- entry_type -->
25213
25214             <td class="entry_description">
25215               <p>A 3-channel sharpness map,<wbr/> based on the raw
25216 sensor data</p>
25217             </td>
25218
25219             <td class="entry_units">
25220             </td>
25221
25222             <td class="entry_range">
25223             </td>
25224
25225             <td class="entry_hal_version">
25226               <p>3.<wbr/>2</p>
25227             </td>
25228
25229             <td class="entry_tags">
25230               <ul class="entry_tags">
25231                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25232               </ul>
25233             </td>
25234
25235           </tr>
25236           <tr class="entries_header">
25237             <th class="th_details" colspan="6">Details</th>
25238           </tr>
25239           <tr class="entry_cont">
25240             <td class="entry_details" colspan="6">
25241               <p>If only a monochrome sharpness map is supported,<wbr/>
25242 all channels should have the same data</p>
25243             </td>
25244           </tr>
25245
25246
25247           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25248            <!-- end of entry -->
25249         
25250                 
25251           <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
25252             <td class="entry_name
25253              " rowspan="1">
25254               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
25255             </td>
25256             <td class="entry_type">
25257                 <span class="entry_type_name entry_type_name_enum">byte</span>
25258
25259               <span class="entry_type_visibility"> [system as boolean]</span>
25260
25261
25262
25263
25264
25265                 <ul class="entry_type_enum">
25266                   <li>
25267                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25268                   </li>
25269                   <li>
25270                     <span class="entry_type_enum_name">ON (v3.2)</span>
25271                   </li>
25272                 </ul>
25273
25274             </td> <!-- entry_type -->
25275
25276             <td class="entry_description">
25277               <p>Operating mode for sharpness map
25278 generation</p>
25279             </td>
25280
25281             <td class="entry_units">
25282             </td>
25283
25284             <td class="entry_range">
25285             </td>
25286
25287             <td class="entry_hal_version">
25288               <p>3.<wbr/>2</p>
25289             </td>
25290
25291             <td class="entry_tags">
25292               <ul class="entry_tags">
25293                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25294               </ul>
25295             </td>
25296
25297           </tr>
25298
25299
25300           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25301            <!-- end of entry -->
25302         
25303                 
25304           <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
25305             <td class="entry_name
25306              " rowspan="3">
25307               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
25308             </td>
25309             <td class="entry_type">
25310                 <span class="entry_type_name">byte</span>
25311
25312               <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
25313
25314
25315               <span class="entry_type_hwlevel">[full] </span>
25316
25317
25318
25319
25320             </td> <!-- entry_type -->
25321
25322             <td class="entry_description">
25323               <p>The shading map is a low-resolution floating-point map
25324 that lists the coefficients used to correct for vignetting,<wbr/> for each
25325 Bayer color channel.<wbr/></p>
25326             </td>
25327
25328             <td class="entry_units">
25329             </td>
25330
25331             <td class="entry_range">
25332               <p>Each gain factor is &gt;= 1</p>
25333             </td>
25334
25335             <td class="entry_hal_version">
25336               <p>3.<wbr/>2</p>
25337             </td>
25338
25339             <td class="entry_tags">
25340             </td>
25341
25342           </tr>
25343           <tr class="entries_header">
25344             <th class="th_details" colspan="6">Details</th>
25345           </tr>
25346           <tr class="entry_cont">
25347             <td class="entry_details" colspan="6">
25348               <p>The map provided here is the same map that is used by the camera device to
25349 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25350 <p>When there is no lens shading correction applied to RAW
25351 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25352 false),<wbr/> this map is the complete lens shading correction
25353 map; when there is some lens shading correction applied to
25354 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
25355 correction map that needs to be applied to get shading
25356 corrected images that match the camera device's output for
25357 non-RAW formats.<wbr/></p>
25358 <p>For a complete shading correction map,<wbr/> the least shaded
25359 section of the image will have a gain factor of 1; all
25360 other sections will have gains above 1.<wbr/></p>
25361 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25362 will take into account the colorCorrection settings.<wbr/></p>
25363 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25364 affected by the crop region specified in the request.<wbr/> Each shading map
25365 entry is the value of the shading compensation map over a specific
25366 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
25367 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25368 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25369 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25370 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25371 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25372 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25373 The shading map is stored in a fully interleaved format.<wbr/></p>
25374 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25375 and will be smaller than 64x64.<wbr/></p>
25376 <p>As an example,<wbr/> given a very small map defined as:</p>
25377 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
25378 values =
25379 [ 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/>
25380     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/>
25381   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/>
25382     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/>
25383   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/>
25384     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 ]
25385 </code></pre>
25386 <p>The low-resolution scaling map images for each channel are
25387 (displayed using nearest-neighbor interpolation):</p>
25388 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25389 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25390 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25391 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25392 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25393 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
25394 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25395             </td>
25396           </tr>
25397
25398
25399           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25400            <!-- end of entry -->
25401         
25402                 
25403           <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
25404             <td class="entry_name
25405              " rowspan="5">
25406               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
25407             </td>
25408             <td class="entry_type">
25409                 <span class="entry_type_name">float</span>
25410                 <span class="entry_type_container">x</span>
25411
25412                 <span class="entry_type_array">
25413                   4 x n x m
25414                 </span>
25415               <span class="entry_type_visibility"> [ndk_public]</span>
25416
25417
25418               <span class="entry_type_hwlevel">[full] </span>
25419
25420
25421                 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
25422
25423
25424             </td> <!-- entry_type -->
25425
25426             <td class="entry_description">
25427               <p>The shading map is a low-resolution floating-point map
25428 that lists the coefficients used to correct for vignetting and color shading,<wbr/>
25429 for each Bayer color channel of RAW image data.<wbr/></p>
25430             </td>
25431
25432             <td class="entry_units">
25433             </td>
25434
25435             <td class="entry_range">
25436               <p>Each gain factor is &gt;= 1</p>
25437             </td>
25438
25439             <td class="entry_hal_version">
25440               <p>3.<wbr/>2</p>
25441             </td>
25442
25443             <td class="entry_tags">
25444             </td>
25445
25446           </tr>
25447           <tr class="entries_header">
25448             <th class="th_details" colspan="6">Details</th>
25449           </tr>
25450           <tr class="entry_cont">
25451             <td class="entry_details" colspan="6">
25452               <p>The map provided here is the same map that is used by the camera device to
25453 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25454 <p>When there is no lens shading correction applied to RAW
25455 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25456 false),<wbr/> this map is the complete lens shading correction
25457 map; when there is some lens shading correction applied to
25458 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
25459 correction map that needs to be applied to get shading
25460 corrected images that match the camera device's output for
25461 non-RAW formats.<wbr/></p>
25462 <p>For a complete shading correction map,<wbr/> the least shaded
25463 section of the image will have a gain factor of 1; all
25464 other sections will have gains above 1.<wbr/></p>
25465 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25466 will take into account the colorCorrection settings.<wbr/></p>
25467 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25468 affected by the crop region specified in the request.<wbr/> Each shading map
25469 entry is the value of the shading compensation map over a specific
25470 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
25471 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25472 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25473 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25474 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25475 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25476 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25477 The shading map is stored in a fully interleaved format,<wbr/> and its size
25478 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>
25479 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25480 and will be smaller than 64x64.<wbr/></p>
25481 <p>As an example,<wbr/> given a very small map defined as:</p>
25482 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
25483 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
25484 [ 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/>
25485     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/>
25486   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/>
25487     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/>
25488   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/>
25489     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 ]
25490 </code></pre>
25491 <p>The low-resolution scaling map images for each channel are
25492 (displayed using nearest-neighbor interpolation):</p>
25493 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25494 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25495 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25496 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25497 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25498 image of a gray wall (using bicubic interpolation for visual quality)
25499 as captured by the sensor gives:</p>
25500 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25501 <p>Note that the RAW image data might be subject to lens shading
25502 correction not reported on this map.<wbr/> Query
25503 <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
25504 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>
25505 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
25506 correction.<wbr/> In the case full lens shading correction is applied to RAW
25507 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
25508 In other words,<wbr/> the map reported in this key is the remaining lens shading
25509 that needs to be applied on the RAW image to get images without lens shading
25510 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
25511 formats.<wbr/></p>
25512             </td>
25513           </tr>
25514
25515           <tr class="entries_header">
25516             <th class="th_details" colspan="6">HAL Implementation Details</th>
25517           </tr>
25518           <tr class="entry_cont">
25519             <td class="entry_details" colspan="6">
25520               <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
25521 When AE and AWB are in AUTO modes
25522 (<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
25523 may have all the information it need to generate most accurate lens shading map.<wbr/> When
25524 AE or AWB are in manual mode
25525 (<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
25526 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
25527 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
25528 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
25529             </td>
25530           </tr>
25531
25532           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25533            <!-- end of entry -->
25534         
25535                 
25536           <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
25537             <td class="entry_name
25538                 entry_name_deprecated
25539              " rowspan="3">
25540               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
25541             </td>
25542             <td class="entry_type">
25543                 <span class="entry_type_name">float</span>
25544                 <span class="entry_type_container">x</span>
25545
25546                 <span class="entry_type_array">
25547                   4
25548                 </span>
25549               <span class="entry_type_visibility"> [hidden]</span>
25550
25551
25552
25553               <span class="entry_type_deprecated">[deprecated] </span>
25554
25555                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
25556
25557
25558             </td> <!-- entry_type -->
25559
25560             <td class="entry_description">
25561               <p>The best-fit color channel gains calculated
25562 by the camera device's statistics units for the current output frame.<wbr/></p>
25563             </td>
25564
25565             <td class="entry_units">
25566             </td>
25567
25568             <td class="entry_range">
25569               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25570             </td>
25571
25572             <td class="entry_hal_version">
25573               <p>3.<wbr/>2</p>
25574             </td>
25575
25576             <td class="entry_tags">
25577             </td>
25578
25579           </tr>
25580           <tr class="entries_header">
25581             <th class="th_details" colspan="6">Details</th>
25582           </tr>
25583           <tr class="entry_cont">
25584             <td class="entry_details" colspan="6">
25585               <p>This may be different than the gains used for this frame,<wbr/>
25586 since statistics processing on data from a new frame
25587 typically completes after the transform has already been
25588 applied to that frame.<wbr/></p>
25589 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
25590 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
25591 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25592 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25593             </td>
25594           </tr>
25595
25596
25597           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25598            <!-- end of entry -->
25599         
25600                 
25601           <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
25602             <td class="entry_name
25603                 entry_name_deprecated
25604              " rowspan="3">
25605               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
25606             </td>
25607             <td class="entry_type">
25608                 <span class="entry_type_name">rational</span>
25609                 <span class="entry_type_container">x</span>
25610
25611                 <span class="entry_type_array">
25612                   3 x 3
25613                 </span>
25614               <span class="entry_type_visibility"> [hidden]</span>
25615
25616
25617
25618               <span class="entry_type_deprecated">[deprecated] </span>
25619
25620                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
25621
25622
25623             </td> <!-- entry_type -->
25624
25625             <td class="entry_description">
25626               <p>The best-fit color transform matrix estimate
25627 calculated by the camera device's statistics units for the current
25628 output frame.<wbr/></p>
25629             </td>
25630
25631             <td class="entry_units">
25632             </td>
25633
25634             <td class="entry_range">
25635               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25636             </td>
25637
25638             <td class="entry_hal_version">
25639               <p>3.<wbr/>2</p>
25640             </td>
25641
25642             <td class="entry_tags">
25643             </td>
25644
25645           </tr>
25646           <tr class="entries_header">
25647             <th class="th_details" colspan="6">Details</th>
25648           </tr>
25649           <tr class="entry_cont">
25650             <td class="entry_details" colspan="6">
25651               <p>The camera device will provide the estimate from its
25652 statistics unit on the white balance transforms to use
25653 for the next frame.<wbr/> These are the values the camera device believes
25654 are the best fit for the current output frame.<wbr/> This may
25655 be different than the transform used for this frame,<wbr/> since
25656 statistics processing on data from a new frame typically
25657 completes after the transform has already been applied to
25658 that frame.<wbr/></p>
25659 <p>These estimates must be provided for all frames,<wbr/> even if
25660 capture settings and color transforms are set by the application.<wbr/></p>
25661 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25662 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25663             </td>
25664           </tr>
25665
25666
25667           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25668            <!-- end of entry -->
25669         
25670                 
25671           <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
25672             <td class="entry_name
25673              " rowspan="3">
25674               android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
25675             </td>
25676             <td class="entry_type">
25677                 <span class="entry_type_name entry_type_name_enum">byte</span>
25678
25679               <span class="entry_type_visibility"> [public]</span>
25680
25681
25682               <span class="entry_type_hwlevel">[full] </span>
25683
25684
25685
25686                 <ul class="entry_type_enum">
25687                   <li>
25688                     <span class="entry_type_enum_name">NONE (v3.2)</span>
25689                     <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
25690 in the current scene.<wbr/></p></span>
25691                   </li>
25692                   <li>
25693                     <span class="entry_type_enum_name">50HZ (v3.2)</span>
25694                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
25695 in the current scene.<wbr/></p></span>
25696                   </li>
25697                   <li>
25698                     <span class="entry_type_enum_name">60HZ (v3.2)</span>
25699                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
25700 in the current scene.<wbr/></p></span>
25701                   </li>
25702                 </ul>
25703
25704             </td> <!-- entry_type -->
25705
25706             <td class="entry_description">
25707               <p>The camera device estimated scene illumination lighting
25708 frequency.<wbr/></p>
25709             </td>
25710
25711             <td class="entry_units">
25712             </td>
25713
25714             <td class="entry_range">
25715             </td>
25716
25717             <td class="entry_hal_version">
25718               <p>3.<wbr/>2</p>
25719             </td>
25720
25721             <td class="entry_tags">
25722             </td>
25723
25724           </tr>
25725           <tr class="entries_header">
25726             <th class="th_details" colspan="6">Details</th>
25727           </tr>
25728           <tr class="entry_cont">
25729             <td class="entry_details" colspan="6">
25730               <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
25731 that depends on the local utility power standards.<wbr/> This flicker must be
25732 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
25733 The camera device uses this entry to tell the application what the scene
25734 illuminant frequency is.<wbr/></p>
25735 <p>When manual exposure control is enabled
25736 (<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> ==
25737 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
25738 antibanding,<wbr/> and the application can ensure it selects
25739 exposure times that do not cause banding issues by looking
25740 into this metadata field.<wbr/> See
25741 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
25742 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
25743             </td>
25744           </tr>
25745
25746
25747           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25748            <!-- end of entry -->
25749         
25750                 
25751           <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
25752             <td class="entry_name
25753              " rowspan="3">
25754               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
25755             </td>
25756             <td class="entry_type">
25757                 <span class="entry_type_name entry_type_name_enum">byte</span>
25758
25759               <span class="entry_type_visibility"> [public as boolean]</span>
25760
25761
25762
25763
25764
25765                 <ul class="entry_type_enum">
25766                   <li>
25767                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25768                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
25769                   </li>
25770                   <li>
25771                     <span class="entry_type_enum_name">ON (v3.2)</span>
25772                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
25773                   </li>
25774                 </ul>
25775
25776             </td> <!-- entry_type -->
25777
25778             <td class="entry_description">
25779               <p>Operating mode for hot pixel map generation.<wbr/></p>
25780             </td>
25781
25782             <td class="entry_units">
25783             </td>
25784
25785             <td class="entry_range">
25786               <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>
25787             </td>
25788
25789             <td class="entry_hal_version">
25790               <p>3.<wbr/>2</p>
25791             </td>
25792
25793             <td class="entry_tags">
25794               <ul class="entry_tags">
25795                   <li><a href="#tag_V1">V1</a></li>
25796                   <li><a href="#tag_RAW">RAW</a></li>
25797               </ul>
25798             </td>
25799
25800           </tr>
25801           <tr class="entries_header">
25802             <th class="th_details" colspan="6">Details</th>
25803           </tr>
25804           <tr class="entry_cont">
25805             <td class="entry_details" colspan="6">
25806               <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/>
25807 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
25808             </td>
25809           </tr>
25810
25811
25812           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25813            <!-- end of entry -->
25814         
25815                 
25816           <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
25817             <td class="entry_name
25818              " rowspan="5">
25819               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
25820             </td>
25821             <td class="entry_type">
25822                 <span class="entry_type_name">int32</span>
25823                 <span class="entry_type_container">x</span>
25824
25825                 <span class="entry_type_array">
25826                   2 x n
25827                 </span>
25828               <span class="entry_type_visibility"> [public as point]</span>
25829
25830
25831
25832
25833                 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
25834
25835
25836             </td> <!-- entry_type -->
25837
25838             <td class="entry_description">
25839               <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
25840             </td>
25841
25842             <td class="entry_units">
25843             </td>
25844
25845             <td class="entry_range">
25846               <p>n &lt;= number of pixels on the sensor.<wbr/>
25847 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
25848 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25849             </td>
25850
25851             <td class="entry_hal_version">
25852               <p>3.<wbr/>2</p>
25853             </td>
25854
25855             <td class="entry_tags">
25856               <ul class="entry_tags">
25857                   <li><a href="#tag_V1">V1</a></li>
25858                   <li><a href="#tag_RAW">RAW</a></li>
25859               </ul>
25860             </td>
25861
25862           </tr>
25863           <tr class="entries_header">
25864             <th class="th_details" colspan="6">Details</th>
25865           </tr>
25866           <tr class="entry_cont">
25867             <td class="entry_details" colspan="6">
25868               <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
25869 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
25870 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
25871 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/>
25872 This may include hot pixels that lie outside of the active array
25873 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25874             </td>
25875           </tr>
25876
25877           <tr class="entries_header">
25878             <th class="th_details" colspan="6">HAL Implementation Details</th>
25879           </tr>
25880           <tr class="entry_cont">
25881             <td class="entry_details" colspan="6">
25882               <p>A hotpixel map contains the coordinates of pixels on the camera
25883 sensor that do report valid values (usually due to defects in
25884 the camera sensor).<wbr/> This includes pixels that are stuck at certain
25885 values,<wbr/> or have a response that does not accuractly encode the
25886 incoming light from the scene.<wbr/></p>
25887 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
25888 pixels than actual pixels on the camera sensor.<wbr/></p>
25889             </td>
25890           </tr>
25891
25892           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25893            <!-- end of entry -->
25894         
25895                 
25896           <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
25897             <td class="entry_name
25898              " rowspan="3">
25899               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
25900             </td>
25901             <td class="entry_type">
25902                 <span class="entry_type_name entry_type_name_enum">byte</span>
25903
25904               <span class="entry_type_visibility"> [public]</span>
25905
25906
25907               <span class="entry_type_hwlevel">[full] </span>
25908
25909
25910
25911                 <ul class="entry_type_enum">
25912                   <li>
25913                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25914                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
25915                   </li>
25916                   <li>
25917                     <span class="entry_type_enum_name">ON (v3.2)</span>
25918                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
25919                   </li>
25920                 </ul>
25921
25922             </td> <!-- entry_type -->
25923
25924             <td class="entry_description">
25925               <p>Whether the camera device will output the lens
25926 shading map in output result metadata.<wbr/></p>
25927             </td>
25928
25929             <td class="entry_units">
25930             </td>
25931
25932             <td class="entry_range">
25933               <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>
25934             </td>
25935
25936             <td class="entry_hal_version">
25937               <p>3.<wbr/>2</p>
25938             </td>
25939
25940             <td class="entry_tags">
25941               <ul class="entry_tags">
25942                   <li><a href="#tag_RAW">RAW</a></li>
25943               </ul>
25944             </td>
25945
25946           </tr>
25947           <tr class="entries_header">
25948             <th class="th_details" colspan="6">Details</th>
25949           </tr>
25950           <tr class="entry_cont">
25951             <td class="entry_details" colspan="6">
25952               <p>When set to ON,<wbr/>
25953 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
25954 the output result metadata.<wbr/></p>
25955 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
25956             </td>
25957           </tr>
25958
25959
25960           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25961            <!-- end of entry -->
25962         
25963                 
25964           <tr class="entry" id="dynamic_android.statistics.oisDataMode">
25965             <td class="entry_name
25966              " rowspan="3">
25967               android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
25968             </td>
25969             <td class="entry_type">
25970                 <span class="entry_type_name entry_type_name_enum">byte</span>
25971
25972               <span class="entry_type_visibility"> [public]</span>
25973
25974
25975
25976
25977
25978                 <ul class="entry_type_enum">
25979                   <li>
25980                     <span class="entry_type_enum_name">OFF (v3.3)</span>
25981                     <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
25982                   </li>
25983                   <li>
25984                     <span class="entry_type_enum_name">ON (v3.3)</span>
25985                     <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
25986                   </li>
25987                 </ul>
25988
25989             </td> <!-- entry_type -->
25990
25991             <td class="entry_description">
25992               <p>A control for selecting whether OIS position information is included in output
25993 result metadata.<wbr/></p>
25994             </td>
25995
25996             <td class="entry_units">
25997             </td>
25998
25999             <td class="entry_range">
26000               <p>android.<wbr/>Statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</p>
26001             </td>
26002
26003             <td class="entry_hal_version">
26004               <p>3.<wbr/>3</p>
26005             </td>
26006
26007             <td class="entry_tags">
26008             </td>
26009
26010           </tr>
26011           <tr class="entries_header">
26012             <th class="th_details" colspan="6">Details</th>
26013           </tr>
26014           <tr class="entry_cont">
26015             <td class="entry_details" colspan="6">
26016               <p>When set to ON,<wbr/>
26017 <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/>
26018 and android.<wbr/>statistics.<wbr/>ois<wbr/>Shift<wbr/>Pixel<wbr/>Y provide OIS data in the output result metadata.<wbr/></p>
26019             </td>
26020           </tr>
26021
26022
26023           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26024            <!-- end of entry -->
26025         
26026                 
26027           <tr class="entry" id="dynamic_android.statistics.oisTimestamps">
26028             <td class="entry_name
26029              " rowspan="3">
26030               android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps
26031             </td>
26032             <td class="entry_type">
26033                 <span class="entry_type_name">int64</span>
26034                 <span class="entry_type_container">x</span>
26035
26036                 <span class="entry_type_array">
26037                   n
26038                 </span>
26039               <span class="entry_type_visibility"> [public]</span>
26040
26041
26042
26043
26044
26045
26046             </td> <!-- entry_type -->
26047
26048             <td class="entry_description">
26049               <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p>
26050             </td>
26051
26052             <td class="entry_units">
26053               nanoseconds
26054             </td>
26055
26056             <td class="entry_range">
26057             </td>
26058
26059             <td class="entry_hal_version">
26060               <p>3.<wbr/>3</p>
26061             </td>
26062
26063             <td class="entry_tags">
26064             </td>
26065
26066           </tr>
26067           <tr class="entries_header">
26068             <th class="th_details" colspan="6">Details</th>
26069           </tr>
26070           <tr class="entry_cont">
26071             <td class="entry_details" colspan="6">
26072               <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same
26073 timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p>
26074             </td>
26075           </tr>
26076
26077
26078           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26079            <!-- end of entry -->
26080         
26081                 
26082           <tr class="entry" id="dynamic_android.statistics.oisXShifts">
26083             <td class="entry_name
26084              " rowspan="3">
26085               android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts
26086             </td>
26087             <td class="entry_type">
26088                 <span class="entry_type_name">float</span>
26089                 <span class="entry_type_container">x</span>
26090
26091                 <span class="entry_type_array">
26092                   n
26093                 </span>
26094               <span class="entry_type_visibility"> [public]</span>
26095
26096
26097
26098
26099
26100
26101             </td> <!-- entry_type -->
26102
26103             <td class="entry_description">
26104               <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p>
26105             </td>
26106
26107             <td class="entry_units">
26108               Pixels in active array.<wbr/>
26109             </td>
26110
26111             <td class="entry_range">
26112             </td>
26113
26114             <td class="entry_hal_version">
26115               <p>3.<wbr/>3</p>
26116             </td>
26117
26118             <td class="entry_tags">
26119             </td>
26120
26121           </tr>
26122           <tr class="entries_header">
26123             <th class="th_details" colspan="6">Details</th>
26124           </tr>
26125           <tr class="entry_cont">
26126             <td class="entry_details" colspan="6">
26127               <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26128 A positive value is a shift from left to right in active array coordinate system.<wbr/> For
26129 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> an shift of
26130 (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
26131 <p>The number of shifts must match the number of timestamps in
26132 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26133             </td>
26134           </tr>
26135
26136
26137           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26138            <!-- end of entry -->
26139         
26140                 
26141           <tr class="entry" id="dynamic_android.statistics.oisYShifts">
26142             <td class="entry_name
26143              " rowspan="3">
26144               android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts
26145             </td>
26146             <td class="entry_type">
26147                 <span class="entry_type_name">float</span>
26148                 <span class="entry_type_container">x</span>
26149
26150                 <span class="entry_type_array">
26151                   n
26152                 </span>
26153               <span class="entry_type_visibility"> [public]</span>
26154
26155
26156
26157
26158
26159
26160             </td> <!-- entry_type -->
26161
26162             <td class="entry_description">
26163               <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p>
26164             </td>
26165
26166             <td class="entry_units">
26167               Pixels in active array.<wbr/>
26168             </td>
26169
26170             <td class="entry_range">
26171             </td>
26172
26173             <td class="entry_hal_version">
26174               <p>3.<wbr/>3</p>
26175             </td>
26176
26177             <td class="entry_tags">
26178             </td>
26179
26180           </tr>
26181           <tr class="entries_header">
26182             <th class="th_details" colspan="6">Details</th>
26183           </tr>
26184           <tr class="entry_cont">
26185             <td class="entry_details" colspan="6">
26186               <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26187 A positive value is a shift from top to bottom in active array coordinate system.<wbr/> For
26188 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> an shift of
26189 (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
26190 <p>The number of shifts must match the number of timestamps in
26191 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26192             </td>
26193           </tr>
26194
26195
26196           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26197            <!-- end of entry -->
26198         
26199         
26200
26201       <!-- end of kind -->
26202       </tbody>
26203
26204   <!-- end of section -->
26205   <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
26206
26207
26208       <tr><td colspan="7" class="kind">controls</td></tr>
26209
26210       <thead class="entries_header">
26211         <tr>
26212           <th class="th_name">Property Name</th>
26213           <th class="th_type">Type</th>
26214           <th class="th_description">Description</th>
26215           <th class="th_units">Units</th>
26216           <th class="th_range">Range</th>
26217           <th class="th_hal_version">Initial HIDL HAL version</th>
26218           <th class="th_tags">Tags</th>
26219         </tr>
26220       </thead>
26221
26222       <tbody>
26223
26224         
26225
26226         
26227
26228         
26229
26230         
26231
26232                 
26233           <tr class="entry" id="controls_android.tonemap.curveBlue">
26234             <td class="entry_name
26235              " rowspan="3">
26236               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26237             </td>
26238             <td class="entry_type">
26239                 <span class="entry_type_name">float</span>
26240                 <span class="entry_type_container">x</span>
26241
26242                 <span class="entry_type_array">
26243                   n x 2
26244                 </span>
26245               <span class="entry_type_visibility"> [ndk_public]</span>
26246
26247
26248               <span class="entry_type_hwlevel">[full] </span>
26249
26250
26251                 <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>
26252
26253
26254             </td> <!-- entry_type -->
26255
26256             <td class="entry_description">
26257               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
26258 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26259 CONTRAST_<wbr/>CURVE.<wbr/></p>
26260             </td>
26261
26262             <td class="entry_units">
26263             </td>
26264
26265             <td class="entry_range">
26266             </td>
26267
26268             <td class="entry_hal_version">
26269               <p>3.<wbr/>2</p>
26270             </td>
26271
26272             <td class="entry_tags">
26273             </td>
26274
26275           </tr>
26276           <tr class="entries_header">
26277             <th class="th_details" colspan="6">Details</th>
26278           </tr>
26279           <tr class="entry_cont">
26280             <td class="entry_details" colspan="6">
26281               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26282             </td>
26283           </tr>
26284
26285
26286           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26287            <!-- end of entry -->
26288         
26289                 
26290           <tr class="entry" id="controls_android.tonemap.curveGreen">
26291             <td class="entry_name
26292              " rowspan="3">
26293               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
26294             </td>
26295             <td class="entry_type">
26296                 <span class="entry_type_name">float</span>
26297                 <span class="entry_type_container">x</span>
26298
26299                 <span class="entry_type_array">
26300                   n x 2
26301                 </span>
26302               <span class="entry_type_visibility"> [ndk_public]</span>
26303
26304
26305               <span class="entry_type_hwlevel">[full] </span>
26306
26307
26308                 <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>
26309
26310
26311             </td> <!-- entry_type -->
26312
26313             <td class="entry_description">
26314               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
26315 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26316 CONTRAST_<wbr/>CURVE.<wbr/></p>
26317             </td>
26318
26319             <td class="entry_units">
26320             </td>
26321
26322             <td class="entry_range">
26323             </td>
26324
26325             <td class="entry_hal_version">
26326               <p>3.<wbr/>2</p>
26327             </td>
26328
26329             <td class="entry_tags">
26330             </td>
26331
26332           </tr>
26333           <tr class="entries_header">
26334             <th class="th_details" colspan="6">Details</th>
26335           </tr>
26336           <tr class="entry_cont">
26337             <td class="entry_details" colspan="6">
26338               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26339             </td>
26340           </tr>
26341
26342
26343           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26344            <!-- end of entry -->
26345         
26346                 
26347           <tr class="entry" id="controls_android.tonemap.curveRed">
26348             <td class="entry_name
26349              " rowspan="5">
26350               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
26351             </td>
26352             <td class="entry_type">
26353                 <span class="entry_type_name">float</span>
26354                 <span class="entry_type_container">x</span>
26355
26356                 <span class="entry_type_array">
26357                   n x 2
26358                 </span>
26359               <span class="entry_type_visibility"> [ndk_public]</span>
26360
26361
26362               <span class="entry_type_hwlevel">[full] </span>
26363
26364
26365                 <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>
26366
26367
26368             </td> <!-- entry_type -->
26369
26370             <td class="entry_description">
26371               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
26372 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26373 CONTRAST_<wbr/>CURVE.<wbr/></p>
26374             </td>
26375
26376             <td class="entry_units">
26377             </td>
26378
26379             <td class="entry_range">
26380               <p>0-1 on both input and output coordinates,<wbr/> normalized
26381 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
26382             </td>
26383
26384             <td class="entry_hal_version">
26385               <p>3.<wbr/>2</p>
26386             </td>
26387
26388             <td class="entry_tags">
26389             </td>
26390
26391           </tr>
26392           <tr class="entries_header">
26393             <th class="th_details" colspan="6">Details</th>
26394           </tr>
26395           <tr class="entry_cont">
26396             <td class="entry_details" colspan="6">
26397               <p>Each channel's curve is defined by an array of control points:</p>
26398 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
26399   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
26400 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26401 <p>These are sorted in order of increasing <code>Pin</code>; it is
26402 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26403 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26404 the camera device must linearly interpolate between the control
26405 points.<wbr/></p>
26406 <p>Each curve can have an independent number of points,<wbr/> and the number
26407 of points can be less than max (that is,<wbr/> the request doesn't have to
26408 always provide a curve with number of points equivalent to
26409 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26410 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26411 only specify the red channel and the precision is limited to 4
26412 digits,<wbr/> for conciseness.<wbr/></p>
26413 <p>Linear mapping:</p>
26414 <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 ]
26415 </code></pre>
26416 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26417 <p>Invert mapping:</p>
26418 <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 ]
26419 </code></pre>
26420 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26421 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26422 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26423   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/>
26424   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/>
26425   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/>
26426   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 ]
26427 </code></pre>
26428 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26429 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26430 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26431   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/>
26432   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/>
26433   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/>
26434   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 ]
26435 </code></pre>
26436 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26437             </td>
26438           </tr>
26439
26440           <tr class="entries_header">
26441             <th class="th_details" colspan="6">HAL Implementation Details</th>
26442           </tr>
26443           <tr class="entry_cont">
26444             <td class="entry_details" colspan="6">
26445               <p>For good quality of mapping,<wbr/> at least 128 control points are
26446 preferred.<wbr/></p>
26447 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
26448 control points used as are available.<wbr/></p>
26449             </td>
26450           </tr>
26451
26452           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26453            <!-- end of entry -->
26454         
26455                 
26456           <tr class="entry" id="controls_android.tonemap.curve">
26457             <td class="entry_name
26458              " rowspan="5">
26459               android.<wbr/>tonemap.<wbr/>curve
26460             </td>
26461             <td class="entry_type">
26462                 <span class="entry_type_name">float</span>
26463
26464               <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
26465
26466               <span class="entry_type_synthetic">[synthetic] </span>
26467
26468               <span class="entry_type_hwlevel">[full] </span>
26469
26470
26471
26472
26473             </td> <!-- entry_type -->
26474
26475             <td class="entry_description">
26476               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
26477 is CONTRAST_<wbr/>CURVE.<wbr/></p>
26478             </td>
26479
26480             <td class="entry_units">
26481             </td>
26482
26483             <td class="entry_range">
26484             </td>
26485
26486             <td class="entry_hal_version">
26487               <p>3.<wbr/>2</p>
26488             </td>
26489
26490             <td class="entry_tags">
26491             </td>
26492
26493           </tr>
26494           <tr class="entries_header">
26495             <th class="th_details" colspan="6">Details</th>
26496           </tr>
26497           <tr class="entry_cont">
26498             <td class="entry_details" colspan="6">
26499               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
26500 channels respectively.<wbr/> The following example uses the red channel as an
26501 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
26502 Each channel's curve is defined by an array of control points:</p>
26503 <pre><code>curveRed =
26504   [ 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) ]
26505 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26506 <p>These are sorted in order of increasing <code>Pin</code>; it is always
26507 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26508 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26509 the camera device must linearly interpolate between the control
26510 points.<wbr/></p>
26511 <p>Each curve can have an independent number of points,<wbr/> and the number
26512 of points can be less than max (that is,<wbr/> the request doesn't have to
26513 always provide a curve with number of points equivalent to
26514 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26515 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26516 only specify the red channel and the precision is limited to 4
26517 digits,<wbr/> for conciseness.<wbr/></p>
26518 <p>Linear mapping:</p>
26519 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
26520 </code></pre>
26521 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26522 <p>Invert mapping:</p>
26523 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
26524 </code></pre>
26525 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26526 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26527 <pre><code>curveRed = [
26528   (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/>
26529   (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/>
26530   (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/>
26531   (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) ]
26532 </code></pre>
26533 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26534 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26535 <pre><code>curveRed = [
26536   (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/>
26537   (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/>
26538   (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/>
26539   (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) ]
26540 </code></pre>
26541 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26542             </td>
26543           </tr>
26544
26545           <tr class="entries_header">
26546             <th class="th_details" colspan="6">HAL Implementation Details</th>
26547           </tr>
26548           <tr class="entry_cont">
26549             <td class="entry_details" colspan="6">
26550               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
26551 curveBlue entries.<wbr/></p>
26552             </td>
26553           </tr>
26554
26555           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26556            <!-- end of entry -->
26557         
26558                 
26559           <tr class="entry" id="controls_android.tonemap.mode">
26560             <td class="entry_name
26561              " rowspan="3">
26562               android.<wbr/>tonemap.<wbr/>mode
26563             </td>
26564             <td class="entry_type">
26565                 <span class="entry_type_name entry_type_name_enum">byte</span>
26566
26567               <span class="entry_type_visibility"> [public]</span>
26568
26569
26570               <span class="entry_type_hwlevel">[full] </span>
26571
26572
26573
26574                 <ul class="entry_type_enum">
26575                   <li>
26576                     <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
26577                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
26578 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
26579 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26580 for applying the tonemapping curve specified by
26581 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26582 <p>Must not slow down frame rate relative to raw
26583 sensor output.<wbr/></p></span>
26584                   </li>
26585                   <li>
26586                     <span class="entry_type_enum_name">FAST (v3.2)</span>
26587                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
26588 reducing frame rate compared to raw sensor output.<wbr/></p></span>
26589                   </li>
26590                   <li>
26591                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
26592                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
26593 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
26594                   </li>
26595                   <li>
26596                     <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
26597                     <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
26598 tonemapping.<wbr/></p>
26599 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26600 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
26601 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26602                   </li>
26603                   <li>
26604                     <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
26605                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
26606 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
26607 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26608 for applying the tonemapping curve specified by
26609 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
26610 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26611                   </li>
26612                 </ul>
26613
26614             </td> <!-- entry_type -->
26615
26616             <td class="entry_description">
26617               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
26618             </td>
26619
26620             <td class="entry_units">
26621             </td>
26622
26623             <td class="entry_range">
26624               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
26625             </td>
26626
26627             <td class="entry_hal_version">
26628               <p>3.<wbr/>2</p>
26629             </td>
26630
26631             <td class="entry_tags">
26632             </td>
26633
26634           </tr>
26635           <tr class="entries_header">
26636             <th class="th_details" colspan="6">Details</th>
26637           </tr>
26638           <tr class="entry_cont">
26639             <td class="entry_details" colspan="6">
26640               <p>When switching to an application-defined contrast curve by setting
26641 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
26642 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
26643 mapping from input high-bit-depth pixel value to the output
26644 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
26645 and output may change depending on the camera pipeline,<wbr/> the values
26646 are specified by normalized floating-point numbers.<wbr/></p>
26647 <p>More-complex color mapping operations such as 3D color look-up
26648 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
26649 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26650 CONTRAST_<wbr/>CURVE.<wbr/></p>
26651 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
26652 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
26653 These values are always available,<wbr/> and as close as possible to the
26654 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
26655 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
26656 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
26657 roughly the same.<wbr/></p>
26658             </td>
26659           </tr>
26660
26661
26662           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26663            <!-- end of entry -->
26664         
26665                 
26666           <tr class="entry" id="controls_android.tonemap.gamma">
26667             <td class="entry_name
26668              " rowspan="3">
26669               android.<wbr/>tonemap.<wbr/>gamma
26670             </td>
26671             <td class="entry_type">
26672                 <span class="entry_type_name">float</span>
26673
26674               <span class="entry_type_visibility"> [public]</span>
26675
26676
26677
26678
26679
26680
26681             </td> <!-- entry_type -->
26682
26683             <td class="entry_description">
26684               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26685 GAMMA_<wbr/>VALUE</p>
26686             </td>
26687
26688             <td class="entry_units">
26689             </td>
26690
26691             <td class="entry_range">
26692             </td>
26693
26694             <td class="entry_hal_version">
26695               <p>3.<wbr/>2</p>
26696             </td>
26697
26698             <td class="entry_tags">
26699             </td>
26700
26701           </tr>
26702           <tr class="entries_header">
26703             <th class="th_details" colspan="6">Details</th>
26704           </tr>
26705           <tr class="entry_cont">
26706             <td class="entry_details" colspan="6">
26707               <p>The tonemap curve will be defined the following formula:
26708 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
26709 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
26710 pow is the power function and gamma is the gamma value specified by this
26711 key.<wbr/></p>
26712 <p>The same curve will be applied to all color channels.<wbr/> The camera device
26713 may clip the input gamma value to its supported range.<wbr/> The actual applied
26714 value will be returned in capture result.<wbr/></p>
26715 <p>The valid range of gamma value varies on different devices,<wbr/> but values
26716 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
26717             </td>
26718           </tr>
26719
26720
26721           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26722            <!-- end of entry -->
26723         
26724                 
26725           <tr class="entry" id="controls_android.tonemap.presetCurve">
26726             <td class="entry_name
26727              " rowspan="3">
26728               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
26729             </td>
26730             <td class="entry_type">
26731                 <span class="entry_type_name entry_type_name_enum">byte</span>
26732
26733               <span class="entry_type_visibility"> [public]</span>
26734
26735
26736
26737
26738
26739                 <ul class="entry_type_enum">
26740                   <li>
26741                     <span class="entry_type_enum_name">SRGB (v3.2)</span>
26742                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
26743                   </li>
26744                   <li>
26745                     <span class="entry_type_enum_name">REC709 (v3.2)</span>
26746                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
26747                   </li>
26748                 </ul>
26749
26750             </td> <!-- entry_type -->
26751
26752             <td class="entry_description">
26753               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26754 PRESET_<wbr/>CURVE</p>
26755             </td>
26756
26757             <td class="entry_units">
26758             </td>
26759
26760             <td class="entry_range">
26761             </td>
26762
26763             <td class="entry_hal_version">
26764               <p>3.<wbr/>2</p>
26765             </td>
26766
26767             <td class="entry_tags">
26768             </td>
26769
26770           </tr>
26771           <tr class="entries_header">
26772             <th class="th_details" colspan="6">Details</th>
26773           </tr>
26774           <tr class="entry_cont">
26775             <td class="entry_details" colspan="6">
26776               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
26777 <p>sRGB (approximated by 16 control points):</p>
26778 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26779 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
26780 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
26781 <p>Note that above figures show a 16 control points approximation of preset
26782 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
26783             </td>
26784           </tr>
26785
26786
26787           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26788            <!-- end of entry -->
26789         
26790         
26791
26792       <!-- end of kind -->
26793       </tbody>
26794       <tr><td colspan="7" class="kind">static</td></tr>
26795
26796       <thead class="entries_header">
26797         <tr>
26798           <th class="th_name">Property Name</th>
26799           <th class="th_type">Type</th>
26800           <th class="th_description">Description</th>
26801           <th class="th_units">Units</th>
26802           <th class="th_range">Range</th>
26803           <th class="th_hal_version">Initial HIDL HAL version</th>
26804           <th class="th_tags">Tags</th>
26805         </tr>
26806       </thead>
26807
26808       <tbody>
26809
26810         
26811
26812         
26813
26814         
26815
26816         
26817
26818                 
26819           <tr class="entry" id="static_android.tonemap.maxCurvePoints">
26820             <td class="entry_name
26821              " rowspan="5">
26822               android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
26823             </td>
26824             <td class="entry_type">
26825                 <span class="entry_type_name">int32</span>
26826
26827               <span class="entry_type_visibility"> [public]</span>
26828
26829
26830               <span class="entry_type_hwlevel">[full] </span>
26831
26832
26833
26834
26835             </td> <!-- entry_type -->
26836
26837             <td class="entry_description">
26838               <p>Maximum number of supported points in the
26839 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26840             </td>
26841
26842             <td class="entry_units">
26843             </td>
26844
26845             <td class="entry_range">
26846             </td>
26847
26848             <td class="entry_hal_version">
26849               <p>3.<wbr/>2</p>
26850             </td>
26851
26852             <td class="entry_tags">
26853             </td>
26854
26855           </tr>
26856           <tr class="entries_header">
26857             <th class="th_details" colspan="6">Details</th>
26858           </tr>
26859           <tr class="entry_cont">
26860             <td class="entry_details" colspan="6">
26861               <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
26862 less than this maximum,<wbr/> the camera device will resample the curve to its internal
26863 representation,<wbr/> using linear interpolation.<wbr/></p>
26864 <p>The output curves in the result metadata may have a different number
26865 of points than the input curves,<wbr/> and will represent the actual
26866 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
26867             </td>
26868           </tr>
26869
26870           <tr class="entries_header">
26871             <th class="th_details" colspan="6">HAL Implementation Details</th>
26872           </tr>
26873           <tr class="entry_cont">
26874             <td class="entry_details" colspan="6">
26875               <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
26876             </td>
26877           </tr>
26878
26879           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26880            <!-- end of entry -->
26881         
26882                 
26883           <tr class="entry" id="static_android.tonemap.availableToneMapModes">
26884             <td class="entry_name
26885              " rowspan="5">
26886               android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
26887             </td>
26888             <td class="entry_type">
26889                 <span class="entry_type_name">byte</span>
26890                 <span class="entry_type_container">x</span>
26891
26892                 <span class="entry_type_array">
26893                   n
26894                 </span>
26895               <span class="entry_type_visibility"> [public as enumList]</span>
26896
26897
26898               <span class="entry_type_hwlevel">[full] </span>
26899
26900
26901                 <div class="entry_type_notes">list of enums</div>
26902
26903
26904             </td> <!-- entry_type -->
26905
26906             <td class="entry_description">
26907               <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
26908 device.<wbr/></p>
26909             </td>
26910
26911             <td class="entry_units">
26912             </td>
26913
26914             <td class="entry_range">
26915               <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
26916             </td>
26917
26918             <td class="entry_hal_version">
26919               <p>3.<wbr/>2</p>
26920             </td>
26921
26922             <td class="entry_tags">
26923             </td>
26924
26925           </tr>
26926           <tr class="entries_header">
26927             <th class="th_details" colspan="6">Details</th>
26928           </tr>
26929           <tr class="entry_cont">
26930             <td class="entry_details" colspan="6">
26931               <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
26932 at least one of below mode combinations:</p>
26933 <ul>
26934 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
26935 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
26936 </ul>
26937 <p>This includes all FULL level devices.<wbr/></p>
26938             </td>
26939           </tr>
26940
26941           <tr class="entries_header">
26942             <th class="th_details" colspan="6">HAL Implementation Details</th>
26943           </tr>
26944           <tr class="entry_cont">
26945             <td class="entry_details" colspan="6">
26946               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
26947 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
26948 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
26949 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
26950             </td>
26951           </tr>
26952
26953           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26954            <!-- end of entry -->
26955         
26956         
26957
26958       <!-- end of kind -->
26959       </tbody>
26960       <tr><td colspan="7" class="kind">dynamic</td></tr>
26961
26962       <thead class="entries_header">
26963         <tr>
26964           <th class="th_name">Property Name</th>
26965           <th class="th_type">Type</th>
26966           <th class="th_description">Description</th>
26967           <th class="th_units">Units</th>
26968           <th class="th_range">Range</th>
26969           <th class="th_hal_version">Initial HIDL HAL version</th>
26970           <th class="th_tags">Tags</th>
26971         </tr>
26972       </thead>
26973
26974       <tbody>
26975
26976         
26977
26978         
26979
26980         
26981
26982         
26983
26984                 
26985           <tr class="entry" id="dynamic_android.tonemap.curveBlue">
26986             <td class="entry_name
26987              " rowspan="3">
26988               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26989             </td>
26990             <td class="entry_type">
26991                 <span class="entry_type_name">float</span>
26992                 <span class="entry_type_container">x</span>
26993
26994                 <span class="entry_type_array">
26995                   n x 2
26996                 </span>
26997               <span class="entry_type_visibility"> [ndk_public]</span>
26998
26999
27000               <span class="entry_type_hwlevel">[full] </span>
27001
27002
27003                 <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>
27004
27005
27006             </td> <!-- entry_type -->
27007
27008             <td class="entry_description">
27009               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
27010 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27011 CONTRAST_<wbr/>CURVE.<wbr/></p>
27012             </td>
27013
27014             <td class="entry_units">
27015             </td>
27016
27017             <td class="entry_range">
27018             </td>
27019
27020             <td class="entry_hal_version">
27021               <p>3.<wbr/>2</p>
27022             </td>
27023
27024             <td class="entry_tags">
27025             </td>
27026
27027           </tr>
27028           <tr class="entries_header">
27029             <th class="th_details" colspan="6">Details</th>
27030           </tr>
27031           <tr class="entry_cont">
27032             <td class="entry_details" colspan="6">
27033               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27034             </td>
27035           </tr>
27036
27037
27038           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27039            <!-- end of entry -->
27040         
27041                 
27042           <tr class="entry" id="dynamic_android.tonemap.curveGreen">
27043             <td class="entry_name
27044              " rowspan="3">
27045               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
27046             </td>
27047             <td class="entry_type">
27048                 <span class="entry_type_name">float</span>
27049                 <span class="entry_type_container">x</span>
27050
27051                 <span class="entry_type_array">
27052                   n x 2
27053                 </span>
27054               <span class="entry_type_visibility"> [ndk_public]</span>
27055
27056
27057               <span class="entry_type_hwlevel">[full] </span>
27058
27059
27060                 <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>
27061
27062
27063             </td> <!-- entry_type -->
27064
27065             <td class="entry_description">
27066               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
27067 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27068 CONTRAST_<wbr/>CURVE.<wbr/></p>
27069             </td>
27070
27071             <td class="entry_units">
27072             </td>
27073
27074             <td class="entry_range">
27075             </td>
27076
27077             <td class="entry_hal_version">
27078               <p>3.<wbr/>2</p>
27079             </td>
27080
27081             <td class="entry_tags">
27082             </td>
27083
27084           </tr>
27085           <tr class="entries_header">
27086             <th class="th_details" colspan="6">Details</th>
27087           </tr>
27088           <tr class="entry_cont">
27089             <td class="entry_details" colspan="6">
27090               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27091             </td>
27092           </tr>
27093
27094
27095           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27096            <!-- end of entry -->
27097         
27098                 
27099           <tr class="entry" id="dynamic_android.tonemap.curveRed">
27100             <td class="entry_name
27101              " rowspan="5">
27102               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
27103             </td>
27104             <td class="entry_type">
27105                 <span class="entry_type_name">float</span>
27106                 <span class="entry_type_container">x</span>
27107
27108                 <span class="entry_type_array">
27109                   n x 2
27110                 </span>
27111               <span class="entry_type_visibility"> [ndk_public]</span>
27112
27113
27114               <span class="entry_type_hwlevel">[full] </span>
27115
27116
27117                 <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>
27118
27119
27120             </td> <!-- entry_type -->
27121
27122             <td class="entry_description">
27123               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
27124 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27125 CONTRAST_<wbr/>CURVE.<wbr/></p>
27126             </td>
27127
27128             <td class="entry_units">
27129             </td>
27130
27131             <td class="entry_range">
27132               <p>0-1 on both input and output coordinates,<wbr/> normalized
27133 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
27134             </td>
27135
27136             <td class="entry_hal_version">
27137               <p>3.<wbr/>2</p>
27138             </td>
27139
27140             <td class="entry_tags">
27141             </td>
27142
27143           </tr>
27144           <tr class="entries_header">
27145             <th class="th_details" colspan="6">Details</th>
27146           </tr>
27147           <tr class="entry_cont">
27148             <td class="entry_details" colspan="6">
27149               <p>Each channel's curve is defined by an array of control points:</p>
27150 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
27151   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
27152 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27153 <p>These are sorted in order of increasing <code>Pin</code>; it is
27154 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27155 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27156 the camera device must linearly interpolate between the control
27157 points.<wbr/></p>
27158 <p>Each curve can have an independent number of points,<wbr/> and the number
27159 of points can be less than max (that is,<wbr/> the request doesn't have to
27160 always provide a curve with number of points equivalent to
27161 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27162 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27163 only specify the red channel and the precision is limited to 4
27164 digits,<wbr/> for conciseness.<wbr/></p>
27165 <p>Linear mapping:</p>
27166 <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 ]
27167 </code></pre>
27168 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27169 <p>Invert mapping:</p>
27170 <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 ]
27171 </code></pre>
27172 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27173 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27174 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27175   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/>
27176   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/>
27177   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/>
27178   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 ]
27179 </code></pre>
27180 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27181 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27182 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27183   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/>
27184   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/>
27185   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/>
27186   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 ]
27187 </code></pre>
27188 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27189             </td>
27190           </tr>
27191
27192           <tr class="entries_header">
27193             <th class="th_details" colspan="6">HAL Implementation Details</th>
27194           </tr>
27195           <tr class="entry_cont">
27196             <td class="entry_details" colspan="6">
27197               <p>For good quality of mapping,<wbr/> at least 128 control points are
27198 preferred.<wbr/></p>
27199 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
27200 control points used as are available.<wbr/></p>
27201             </td>
27202           </tr>
27203
27204           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27205            <!-- end of entry -->
27206         
27207                 
27208           <tr class="entry" id="dynamic_android.tonemap.curve">
27209             <td class="entry_name
27210              " rowspan="5">
27211               android.<wbr/>tonemap.<wbr/>curve
27212             </td>
27213             <td class="entry_type">
27214                 <span class="entry_type_name">float</span>
27215
27216               <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
27217
27218               <span class="entry_type_synthetic">[synthetic] </span>
27219
27220               <span class="entry_type_hwlevel">[full] </span>
27221
27222
27223
27224
27225             </td> <!-- entry_type -->
27226
27227             <td class="entry_description">
27228               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
27229 is CONTRAST_<wbr/>CURVE.<wbr/></p>
27230             </td>
27231
27232             <td class="entry_units">
27233             </td>
27234
27235             <td class="entry_range">
27236             </td>
27237
27238             <td class="entry_hal_version">
27239               <p>3.<wbr/>2</p>
27240             </td>
27241
27242             <td class="entry_tags">
27243             </td>
27244
27245           </tr>
27246           <tr class="entries_header">
27247             <th class="th_details" colspan="6">Details</th>
27248           </tr>
27249           <tr class="entry_cont">
27250             <td class="entry_details" colspan="6">
27251               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
27252 channels respectively.<wbr/> The following example uses the red channel as an
27253 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
27254 Each channel's curve is defined by an array of control points:</p>
27255 <pre><code>curveRed =
27256   [ 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) ]
27257 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27258 <p>These are sorted in order of increasing <code>Pin</code>; it is always
27259 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27260 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27261 the camera device must linearly interpolate between the control
27262 points.<wbr/></p>
27263 <p>Each curve can have an independent number of points,<wbr/> and the number
27264 of points can be less than max (that is,<wbr/> the request doesn't have to
27265 always provide a curve with number of points equivalent to
27266 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27267 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27268 only specify the red channel and the precision is limited to 4
27269 digits,<wbr/> for conciseness.<wbr/></p>
27270 <p>Linear mapping:</p>
27271 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
27272 </code></pre>
27273 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27274 <p>Invert mapping:</p>
27275 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
27276 </code></pre>
27277 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27278 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27279 <pre><code>curveRed = [
27280   (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/>
27281   (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/>
27282   (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/>
27283   (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) ]
27284 </code></pre>
27285 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27286 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27287 <pre><code>curveRed = [
27288   (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/>
27289   (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/>
27290   (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/>
27291   (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) ]
27292 </code></pre>
27293 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27294             </td>
27295           </tr>
27296
27297           <tr class="entries_header">
27298             <th class="th_details" colspan="6">HAL Implementation Details</th>
27299           </tr>
27300           <tr class="entry_cont">
27301             <td class="entry_details" colspan="6">
27302               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
27303 curveBlue entries.<wbr/></p>
27304             </td>
27305           </tr>
27306
27307           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27308            <!-- end of entry -->
27309         
27310                 
27311           <tr class="entry" id="dynamic_android.tonemap.mode">
27312             <td class="entry_name
27313              " rowspan="3">
27314               android.<wbr/>tonemap.<wbr/>mode
27315             </td>
27316             <td class="entry_type">
27317                 <span class="entry_type_name entry_type_name_enum">byte</span>
27318
27319               <span class="entry_type_visibility"> [public]</span>
27320
27321
27322               <span class="entry_type_hwlevel">[full] </span>
27323
27324
27325
27326                 <ul class="entry_type_enum">
27327                   <li>
27328                     <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
27329                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
27330 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
27331 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27332 for applying the tonemapping curve specified by
27333 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
27334 <p>Must not slow down frame rate relative to raw
27335 sensor output.<wbr/></p></span>
27336                   </li>
27337                   <li>
27338                     <span class="entry_type_enum_name">FAST (v3.2)</span>
27339                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
27340 reducing frame rate compared to raw sensor output.<wbr/></p></span>
27341                   </li>
27342                   <li>
27343                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
27344                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
27345 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
27346                   </li>
27347                   <li>
27348                     <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
27349                     <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
27350 tonemapping.<wbr/></p>
27351 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27352 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
27353 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27354                   </li>
27355                   <li>
27356                     <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
27357                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
27358 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
27359 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27360 for applying the tonemapping curve specified by
27361 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
27362 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27363                   </li>
27364                 </ul>
27365
27366             </td> <!-- entry_type -->
27367
27368             <td class="entry_description">
27369               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
27370             </td>
27371
27372             <td class="entry_units">
27373             </td>
27374
27375             <td class="entry_range">
27376               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
27377             </td>
27378
27379             <td class="entry_hal_version">
27380               <p>3.<wbr/>2</p>
27381             </td>
27382
27383             <td class="entry_tags">
27384             </td>
27385
27386           </tr>
27387           <tr class="entries_header">
27388             <th class="th_details" colspan="6">Details</th>
27389           </tr>
27390           <tr class="entry_cont">
27391             <td class="entry_details" colspan="6">
27392               <p>When switching to an application-defined contrast curve by setting
27393 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
27394 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
27395 mapping from input high-bit-depth pixel value to the output
27396 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
27397 and output may change depending on the camera pipeline,<wbr/> the values
27398 are specified by normalized floating-point numbers.<wbr/></p>
27399 <p>More-complex color mapping operations such as 3D color look-up
27400 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
27401 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27402 CONTRAST_<wbr/>CURVE.<wbr/></p>
27403 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
27404 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
27405 These values are always available,<wbr/> and as close as possible to the
27406 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
27407 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
27408 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
27409 roughly the same.<wbr/></p>
27410             </td>
27411           </tr>
27412
27413
27414           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27415            <!-- end of entry -->
27416         
27417                 
27418           <tr class="entry" id="dynamic_android.tonemap.gamma">
27419             <td class="entry_name
27420              " rowspan="3">
27421               android.<wbr/>tonemap.<wbr/>gamma
27422             </td>
27423             <td class="entry_type">
27424                 <span class="entry_type_name">float</span>
27425
27426               <span class="entry_type_visibility"> [public]</span>
27427
27428
27429
27430
27431
27432
27433             </td> <!-- entry_type -->
27434
27435             <td class="entry_description">
27436               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27437 GAMMA_<wbr/>VALUE</p>
27438             </td>
27439
27440             <td class="entry_units">
27441             </td>
27442
27443             <td class="entry_range">
27444             </td>
27445
27446             <td class="entry_hal_version">
27447               <p>3.<wbr/>2</p>
27448             </td>
27449
27450             <td class="entry_tags">
27451             </td>
27452
27453           </tr>
27454           <tr class="entries_header">
27455             <th class="th_details" colspan="6">Details</th>
27456           </tr>
27457           <tr class="entry_cont">
27458             <td class="entry_details" colspan="6">
27459               <p>The tonemap curve will be defined the following formula:
27460 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
27461 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
27462 pow is the power function and gamma is the gamma value specified by this
27463 key.<wbr/></p>
27464 <p>The same curve will be applied to all color channels.<wbr/> The camera device
27465 may clip the input gamma value to its supported range.<wbr/> The actual applied
27466 value will be returned in capture result.<wbr/></p>
27467 <p>The valid range of gamma value varies on different devices,<wbr/> but values
27468 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
27469             </td>
27470           </tr>
27471
27472
27473           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27474            <!-- end of entry -->
27475         
27476                 
27477           <tr class="entry" id="dynamic_android.tonemap.presetCurve">
27478             <td class="entry_name
27479              " rowspan="3">
27480               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
27481             </td>
27482             <td class="entry_type">
27483                 <span class="entry_type_name entry_type_name_enum">byte</span>
27484
27485               <span class="entry_type_visibility"> [public]</span>
27486
27487
27488
27489
27490
27491                 <ul class="entry_type_enum">
27492                   <li>
27493                     <span class="entry_type_enum_name">SRGB (v3.2)</span>
27494                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
27495                   </li>
27496                   <li>
27497                     <span class="entry_type_enum_name">REC709 (v3.2)</span>
27498                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
27499                   </li>
27500                 </ul>
27501
27502             </td> <!-- entry_type -->
27503
27504             <td class="entry_description">
27505               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27506 PRESET_<wbr/>CURVE</p>
27507             </td>
27508
27509             <td class="entry_units">
27510             </td>
27511
27512             <td class="entry_range">
27513             </td>
27514
27515             <td class="entry_hal_version">
27516               <p>3.<wbr/>2</p>
27517             </td>
27518
27519             <td class="entry_tags">
27520             </td>
27521
27522           </tr>
27523           <tr class="entries_header">
27524             <th class="th_details" colspan="6">Details</th>
27525           </tr>
27526           <tr class="entry_cont">
27527             <td class="entry_details" colspan="6">
27528               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
27529 <p>sRGB (approximated by 16 control points):</p>
27530 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27531 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
27532 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
27533 <p>Note that above figures show a 16 control points approximation of preset
27534 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
27535             </td>
27536           </tr>
27537
27538
27539           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27540            <!-- end of entry -->
27541         
27542         
27543
27544       <!-- end of kind -->
27545       </tbody>
27546
27547   <!-- end of section -->
27548   <tr><td colspan="7" id="section_led" class="section">led</td></tr>
27549
27550
27551       <tr><td colspan="7" class="kind">controls</td></tr>
27552
27553       <thead class="entries_header">
27554         <tr>
27555           <th class="th_name">Property Name</th>
27556           <th class="th_type">Type</th>
27557           <th class="th_description">Description</th>
27558           <th class="th_units">Units</th>
27559           <th class="th_range">Range</th>
27560           <th class="th_hal_version">Initial HIDL HAL version</th>
27561           <th class="th_tags">Tags</th>
27562         </tr>
27563       </thead>
27564
27565       <tbody>
27566
27567         
27568
27569         
27570
27571         
27572
27573         
27574
27575                 
27576           <tr class="entry" id="controls_android.led.transmit">
27577             <td class="entry_name
27578              " rowspan="1">
27579               android.<wbr/>led.<wbr/>transmit
27580             </td>
27581             <td class="entry_type">
27582                 <span class="entry_type_name entry_type_name_enum">byte</span>
27583
27584               <span class="entry_type_visibility"> [hidden as boolean]</span>
27585
27586
27587
27588
27589
27590                 <ul class="entry_type_enum">
27591                   <li>
27592                     <span class="entry_type_enum_name">OFF (v3.2)</span>
27593                   </li>
27594                   <li>
27595                     <span class="entry_type_enum_name">ON (v3.2)</span>
27596                   </li>
27597                 </ul>
27598
27599             </td> <!-- entry_type -->
27600
27601             <td class="entry_description">
27602               <p>This LED is nominally used to indicate to the user
27603 that the camera is powered on and may be streaming images back to the
27604 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27605 disable this when video is processed locally and not transmitted to
27606 any untrusted applications.<wbr/></p>
27607 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27608 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27609 data is stored locally on the device.<wbr/></p>
27610 <p>The LED <em>may</em> be off if a trusted application is using the data that
27611 doesn't violate the above rules.<wbr/></p>
27612             </td>
27613
27614             <td class="entry_units">
27615             </td>
27616
27617             <td class="entry_range">
27618             </td>
27619
27620             <td class="entry_hal_version">
27621               <p>3.<wbr/>2</p>
27622             </td>
27623
27624             <td class="entry_tags">
27625             </td>
27626
27627           </tr>
27628
27629
27630           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27631            <!-- end of entry -->
27632         
27633         
27634
27635       <!-- end of kind -->
27636       </tbody>
27637       <tr><td colspan="7" class="kind">dynamic</td></tr>
27638
27639       <thead class="entries_header">
27640         <tr>
27641           <th class="th_name">Property Name</th>
27642           <th class="th_type">Type</th>
27643           <th class="th_description">Description</th>
27644           <th class="th_units">Units</th>
27645           <th class="th_range">Range</th>
27646           <th class="th_hal_version">Initial HIDL HAL version</th>
27647           <th class="th_tags">Tags</th>
27648         </tr>
27649       </thead>
27650
27651       <tbody>
27652
27653         
27654
27655         
27656
27657         
27658
27659         
27660
27661                 
27662           <tr class="entry" id="dynamic_android.led.transmit">
27663             <td class="entry_name
27664              " rowspan="1">
27665               android.<wbr/>led.<wbr/>transmit
27666             </td>
27667             <td class="entry_type">
27668                 <span class="entry_type_name entry_type_name_enum">byte</span>
27669
27670               <span class="entry_type_visibility"> [hidden as boolean]</span>
27671
27672
27673
27674
27675
27676                 <ul class="entry_type_enum">
27677                   <li>
27678                     <span class="entry_type_enum_name">OFF (v3.2)</span>
27679                   </li>
27680                   <li>
27681                     <span class="entry_type_enum_name">ON (v3.2)</span>
27682                   </li>
27683                 </ul>
27684
27685             </td> <!-- entry_type -->
27686
27687             <td class="entry_description">
27688               <p>This LED is nominally used to indicate to the user
27689 that the camera is powered on and may be streaming images back to the
27690 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27691 disable this when video is processed locally and not transmitted to
27692 any untrusted applications.<wbr/></p>
27693 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27694 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27695 data is stored locally on the device.<wbr/></p>
27696 <p>The LED <em>may</em> be off if a trusted application is using the data that
27697 doesn't violate the above rules.<wbr/></p>
27698             </td>
27699
27700             <td class="entry_units">
27701             </td>
27702
27703             <td class="entry_range">
27704             </td>
27705
27706             <td class="entry_hal_version">
27707               <p>3.<wbr/>2</p>
27708             </td>
27709
27710             <td class="entry_tags">
27711             </td>
27712
27713           </tr>
27714
27715
27716           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27717            <!-- end of entry -->
27718         
27719         
27720
27721       <!-- end of kind -->
27722       </tbody>
27723       <tr><td colspan="7" class="kind">static</td></tr>
27724
27725       <thead class="entries_header">
27726         <tr>
27727           <th class="th_name">Property Name</th>
27728           <th class="th_type">Type</th>
27729           <th class="th_description">Description</th>
27730           <th class="th_units">Units</th>
27731           <th class="th_range">Range</th>
27732           <th class="th_hal_version">Initial HIDL HAL version</th>
27733           <th class="th_tags">Tags</th>
27734         </tr>
27735       </thead>
27736
27737       <tbody>
27738
27739         
27740
27741         
27742
27743         
27744
27745         
27746
27747                 
27748           <tr class="entry" id="static_android.led.availableLeds">
27749             <td class="entry_name
27750              " rowspan="1">
27751               android.<wbr/>led.<wbr/>available<wbr/>Leds
27752             </td>
27753             <td class="entry_type">
27754                 <span class="entry_type_name entry_type_name_enum">byte</span>
27755                 <span class="entry_type_container">x</span>
27756
27757                 <span class="entry_type_array">
27758                   n
27759                 </span>
27760               <span class="entry_type_visibility"> [hidden]</span>
27761
27762
27763
27764
27765
27766                 <ul class="entry_type_enum">
27767                   <li>
27768                     <span class="entry_type_enum_name">TRANSMIT (v3.2)</span>
27769                     <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>
27770                   </li>
27771                 </ul>
27772
27773             </td> <!-- entry_type -->
27774
27775             <td class="entry_description">
27776               <p>A list of camera LEDs that are available on this system.<wbr/></p>
27777             </td>
27778
27779             <td class="entry_units">
27780             </td>
27781
27782             <td class="entry_range">
27783             </td>
27784
27785             <td class="entry_hal_version">
27786               <p>3.<wbr/>2</p>
27787             </td>
27788
27789             <td class="entry_tags">
27790             </td>
27791
27792           </tr>
27793
27794
27795           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27796            <!-- end of entry -->
27797         
27798         
27799
27800       <!-- end of kind -->
27801       </tbody>
27802
27803   <!-- end of section -->
27804   <tr><td colspan="7" id="section_info" class="section">info</td></tr>
27805
27806
27807       <tr><td colspan="7" class="kind">static</td></tr>
27808
27809       <thead class="entries_header">
27810         <tr>
27811           <th class="th_name">Property Name</th>
27812           <th class="th_type">Type</th>
27813           <th class="th_description">Description</th>
27814           <th class="th_units">Units</th>
27815           <th class="th_range">Range</th>
27816           <th class="th_hal_version">Initial HIDL HAL version</th>
27817           <th class="th_tags">Tags</th>
27818         </tr>
27819       </thead>
27820
27821       <tbody>
27822
27823         
27824
27825         
27826
27827         
27828
27829         
27830
27831                 
27832           <tr class="entry" id="static_android.info.supportedHardwareLevel">
27833             <td class="entry_name
27834              " rowspan="5">
27835               android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
27836             </td>
27837             <td class="entry_type">
27838                 <span class="entry_type_name entry_type_name_enum">byte</span>
27839
27840               <span class="entry_type_visibility"> [public]</span>
27841
27842
27843               <span class="entry_type_hwlevel">[legacy] </span>
27844
27845
27846
27847                 <ul class="entry_type_enum">
27848                   <li>
27849                     <span class="entry_type_enum_name">LIMITED (v3.2)</span>
27850                     <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
27851 better.<wbr/></p>
27852 <p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
27853 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27854 <p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
27855 support for color image capture.<wbr/> The only exception is that the device may
27856 alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
27857 measurements and not color images.<wbr/></p>
27858 <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>
27859 to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
27860 capturing a high-quality still image.<wbr/></p>
27861 <p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
27862 required to support full-automatic operation and post-processing (<code>OFF</code> is not
27863 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
27864 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
27865 <p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
27866 can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
27867                   </li>
27868                   <li>
27869                     <span class="entry_type_enum_name">FULL (v3.2)</span>
27870                     <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
27871 <p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
27872 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27873 <p>A <code>FULL</code> device will support below capabilities:</p>
27874 <ul>
27875 <li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27876   <code>BURST_<wbr/>CAPTURE</code>)</li>
27877 <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>
27878 <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>
27879 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27880   <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
27881 <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>
27882 <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>
27883 </ul>
27884 <p>Note:
27885 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
27886 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
27887 23,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
27888                   </li>
27889                   <li>
27890                     <span class="entry_type_enum_name">LEGACY (v3.2)</span>
27891                     <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
27892 <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>
27893 <p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
27894 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
27895 No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
27896 <code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
27897 <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>
27898 devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
27899 as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/>  This may
27900 fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
27901 for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
27902 enable the flash.<wbr/></p></span>
27903                   </li>
27904                   <li>
27905                     <span class="entry_type_enum_name">3 (v3.2)</span>
27906                     <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
27907 FULL-level capabilities.<wbr/></p>
27908 <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
27909 <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>
27910 <p>The following additional capabilities are guaranteed to be supported:</p>
27911 <ul>
27912 <li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27913   <code>YUV_<wbr/>REPROCESSING</code>)</li>
27914 <li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27915   <code>RAW</code>)</li>
27916 </ul></span>
27917                   </li>
27918                   <li>
27919                     <span class="entry_type_enum_name">EXTERNAL (v3.3)</span>
27920                     <span class="entry_type_enum_notes"><p>This camera device is backed by an external camera connected to this Android device.<wbr/></p>
27921 <p>The device has capability identical to a LIMITED level device,<wbr/> with the following
27922 exceptions:</p>
27923 <ul>
27924 <li>The device may not report lens/<wbr/>sensor related information such as<ul>
27925 <li><a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a></li>
27926 <li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li>
27927 <li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li>
27928 <li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li>
27929 <li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li>
27930 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li>
27931 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a></li>
27932 </ul>
27933 </li>
27934 <li>The device will report 0 for <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a></li>
27935 <li>The device has less guarantee on stable framerate,<wbr/> as the framerate partly depends
27936   on the external camera being used.<wbr/></li>
27937 </ul></span>
27938                   </li>
27939                 </ul>
27940
27941             </td> <!-- entry_type -->
27942
27943             <td class="entry_description">
27944               <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
27945             </td>
27946
27947             <td class="entry_units">
27948             </td>
27949
27950             <td class="entry_range">
27951             </td>
27952
27953             <td class="entry_hal_version">
27954               <p>3.<wbr/>2</p>
27955             </td>
27956
27957             <td class="entry_tags">
27958             </td>
27959
27960           </tr>
27961           <tr class="entries_header">
27962             <th class="th_details" colspan="6">Details</th>
27963           </tr>
27964           <tr class="entry_cont">
27965             <td class="entry_details" colspan="6">
27966               <p>The supported hardware level is a high-level description of the camera device's
27967 capabilities,<wbr/> summarizing several capabilities into one field.<wbr/>  Each level adds additional
27968 features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
27969 The ordering is <code>LEGACY &lt; LIMITED &lt; FULL &lt; LEVEL_<wbr/>3</code>.<wbr/></p>
27970 <p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
27971 numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
27972 the following code snippet can be used:</p>
27973 <pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
27974 boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
27975     int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
27976     if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
27977         return requiredLevel == deviceLevel;
27978     }
27979     //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
27980     return requiredLevel &lt;= deviceLevel;
27981 }
27982 </code></pre>
27983 <p>At a high level,<wbr/> the levels are:</p>
27984 <ul>
27985 <li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
27986   Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
27987 <li><code>LIMITED</code> devices represent the
27988   baseline feature set,<wbr/> and may also include additional capabilities that are
27989   subsets of <code>FULL</code>.<wbr/></li>
27990 <li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
27991   post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
27992 <li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
27993   with additional output stream configurations.<wbr/></li>
27994 </ul>
27995 <p>See the individual level enums for full descriptions of the supported capabilities.<wbr/>  The
27996 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
27997 finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
27998 ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
27999 <p>Some features are not part of any particular hardware level or capability and must be
28000 queried separately.<wbr/> These include:</p>
28001 <ul>
28002 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
28003 <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>
28004 <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>
28005 <li>Optical or electrical image stabilization
28006   (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
28007    <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
28008 </ul>
28009             </td>
28010           </tr>
28011
28012           <tr class="entries_header">
28013             <th class="th_details" colspan="6">HAL Implementation Details</th>
28014           </tr>
28015           <tr class="entry_cont">
28016             <td class="entry_details" colspan="6">
28017               <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
28018 FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
28019 <p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
28020 mode has hardware requirements roughly in line with those for a camera HAL device v1
28021 implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
28022 superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
28023 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
28024 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
28025 the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
28026 implemented by the camera framework code.<wbr/></p>
28027 <p>EXTERNAL level devices have lower peformance bar in CTS since the peformance might depend
28028 on the external camera being used and is not fully controlled by the device manufacturer.<wbr/>
28029 The ITS test suite is exempted for the same reason.<wbr/></p>
28030             </td>
28031           </tr>
28032
28033           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28034            <!-- end of entry -->
28035         
28036                 
28037           <tr class="entry" id="static_android.info.version">
28038             <td class="entry_name
28039              " rowspan="5">
28040               android.<wbr/>info.<wbr/>version
28041             </td>
28042             <td class="entry_type">
28043                 <span class="entry_type_name">byte</span>
28044
28045               <span class="entry_type_visibility"> [public as string]</span>
28046
28047
28048
28049
28050
28051
28052             </td> <!-- entry_type -->
28053
28054             <td class="entry_description">
28055               <p>A short string for manufacturer version information about the camera device,<wbr/> such as
28056 ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p>
28057             </td>
28058
28059             <td class="entry_units">
28060             </td>
28061
28062             <td class="entry_range">
28063             </td>
28064
28065             <td class="entry_hal_version">
28066               <p>3.<wbr/>3</p>
28067             </td>
28068
28069             <td class="entry_tags">
28070             </td>
28071
28072           </tr>
28073           <tr class="entries_header">
28074             <th class="th_details" colspan="6">Details</th>
28075           </tr>
28076           <tr class="entry_cont">
28077             <td class="entry_details" colspan="6">
28078               <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>
28079 in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the
28080 device.<wbr/></p>
28081             </td>
28082           </tr>
28083
28084           <tr class="entries_header">
28085             <th class="th_details" colspan="6">HAL Implementation Details</th>
28086           </tr>
28087           <tr class="entry_cont">
28088             <td class="entry_details" colspan="6">
28089               <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and
28090 whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/>
28091 It must not exceed 256 characters.<wbr/></p>
28092             </td>
28093           </tr>
28094
28095           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28096            <!-- end of entry -->
28097         
28098         
28099
28100       <!-- end of kind -->
28101       </tbody>
28102
28103   <!-- end of section -->
28104   <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
28105
28106
28107       <tr><td colspan="7" class="kind">controls</td></tr>
28108
28109       <thead class="entries_header">
28110         <tr>
28111           <th class="th_name">Property Name</th>
28112           <th class="th_type">Type</th>
28113           <th class="th_description">Description</th>
28114           <th class="th_units">Units</th>
28115           <th class="th_range">Range</th>
28116           <th class="th_hal_version">Initial HIDL HAL version</th>
28117           <th class="th_tags">Tags</th>
28118         </tr>
28119       </thead>
28120
28121       <tbody>
28122
28123         
28124
28125         
28126
28127         
28128
28129         
28130
28131                 
28132           <tr class="entry" id="controls_android.blackLevel.lock">
28133             <td class="entry_name
28134              " rowspan="5">
28135               android.<wbr/>black<wbr/>Level.<wbr/>lock
28136             </td>
28137             <td class="entry_type">
28138                 <span class="entry_type_name entry_type_name_enum">byte</span>
28139
28140               <span class="entry_type_visibility"> [public as boolean]</span>
28141
28142
28143               <span class="entry_type_hwlevel">[full] </span>
28144
28145
28146
28147                 <ul class="entry_type_enum">
28148                   <li>
28149                     <span class="entry_type_enum_name">OFF (v3.2)</span>
28150                   </li>
28151                   <li>
28152                     <span class="entry_type_enum_name">ON (v3.2)</span>
28153                   </li>
28154                 </ul>
28155
28156             </td> <!-- entry_type -->
28157
28158             <td class="entry_description">
28159               <p>Whether black-level compensation is locked
28160 to its current values,<wbr/> or is free to vary.<wbr/></p>
28161             </td>
28162
28163             <td class="entry_units">
28164             </td>
28165
28166             <td class="entry_range">
28167             </td>
28168
28169             <td class="entry_hal_version">
28170               <p>3.<wbr/>2</p>
28171             </td>
28172
28173             <td class="entry_tags">
28174               <ul class="entry_tags">
28175                   <li><a href="#tag_HAL2">HAL2</a></li>
28176               </ul>
28177             </td>
28178
28179           </tr>
28180           <tr class="entries_header">
28181             <th class="th_details" colspan="6">Details</th>
28182           </tr>
28183           <tr class="entry_cont">
28184             <td class="entry_details" colspan="6">
28185               <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
28186 compensation will not change until the lock is set to
28187 <code>false</code> (OFF).<wbr/></p>
28188 <p>Since changes to certain capture parameters (such as
28189 exposure time) may require resetting of black level
28190 compensation,<wbr/> the camera device must report whether setting
28191 the black level lock was successful in the output result
28192 metadata.<wbr/></p>
28193 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
28194 <ul>
28195 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28196 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28197 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28198 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28199 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28200 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28201 </ul>
28202 <p>And the exposure change in Request 4 requires the camera
28203 device to reset the black level offsets,<wbr/> then the output
28204 result metadata is expected to be:</p>
28205 <ul>
28206 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28207 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28208 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28209 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
28210 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28211 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28212 </ul>
28213 <p>This indicates to the application that on frame 4,<wbr/> black
28214 levels were reset due to exposure value changes,<wbr/> and pixel
28215 values may not be consistent across captures.<wbr/></p>
28216 <p>The camera device will maintain the lock to the extent
28217 possible,<wbr/> only overriding the lock to OFF when changes to
28218 other request parameters require a black level recalculation
28219 or reset.<wbr/></p>
28220             </td>
28221           </tr>
28222
28223           <tr class="entries_header">
28224             <th class="th_details" colspan="6">HAL Implementation Details</th>
28225           </tr>
28226           <tr class="entry_cont">
28227             <td class="entry_details" colspan="6">
28228               <p>If for some reason black level locking is no longer possible
28229 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28230 black level offsets to be recalculated),<wbr/> then the HAL must
28231 override this request (and it must report 'OFF' when this
28232 does happen) until the next capture for which locking is
28233 possible again.<wbr/></p>
28234             </td>
28235           </tr>
28236
28237           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28238            <!-- end of entry -->
28239         
28240         
28241
28242       <!-- end of kind -->
28243       </tbody>
28244       <tr><td colspan="7" class="kind">dynamic</td></tr>
28245
28246       <thead class="entries_header">
28247         <tr>
28248           <th class="th_name">Property Name</th>
28249           <th class="th_type">Type</th>
28250           <th class="th_description">Description</th>
28251           <th class="th_units">Units</th>
28252           <th class="th_range">Range</th>
28253           <th class="th_hal_version">Initial HIDL HAL version</th>
28254           <th class="th_tags">Tags</th>
28255         </tr>
28256       </thead>
28257
28258       <tbody>
28259
28260         
28261
28262         
28263
28264         
28265
28266         
28267
28268                 
28269           <tr class="entry" id="dynamic_android.blackLevel.lock">
28270             <td class="entry_name
28271              " rowspan="5">
28272               android.<wbr/>black<wbr/>Level.<wbr/>lock
28273             </td>
28274             <td class="entry_type">
28275                 <span class="entry_type_name entry_type_name_enum">byte</span>
28276
28277               <span class="entry_type_visibility"> [public as boolean]</span>
28278
28279
28280               <span class="entry_type_hwlevel">[full] </span>
28281
28282
28283
28284                 <ul class="entry_type_enum">
28285                   <li>
28286                     <span class="entry_type_enum_name">OFF (v3.2)</span>
28287                   </li>
28288                   <li>
28289                     <span class="entry_type_enum_name">ON (v3.2)</span>
28290                   </li>
28291                 </ul>
28292
28293             </td> <!-- entry_type -->
28294
28295             <td class="entry_description">
28296               <p>Whether black-level compensation is locked
28297 to its current values,<wbr/> or is free to vary.<wbr/></p>
28298             </td>
28299
28300             <td class="entry_units">
28301             </td>
28302
28303             <td class="entry_range">
28304             </td>
28305
28306             <td class="entry_hal_version">
28307               <p>3.<wbr/>2</p>
28308             </td>
28309
28310             <td class="entry_tags">
28311               <ul class="entry_tags">
28312                   <li><a href="#tag_HAL2">HAL2</a></li>
28313               </ul>
28314             </td>
28315
28316           </tr>
28317           <tr class="entries_header">
28318             <th class="th_details" colspan="6">Details</th>
28319           </tr>
28320           <tr class="entry_cont">
28321             <td class="entry_details" colspan="6">
28322               <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
28323 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
28324 a change in other capture settings forced the camera device to
28325 perform a black level reset.<wbr/></p>
28326             </td>
28327           </tr>
28328
28329           <tr class="entries_header">
28330             <th class="th_details" colspan="6">HAL Implementation Details</th>
28331           </tr>
28332           <tr class="entry_cont">
28333             <td class="entry_details" colspan="6">
28334               <p>If for some reason black level locking is no longer possible
28335 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28336 black level offsets to be recalculated),<wbr/> then the HAL must
28337 override this request (and it must report 'OFF' when this
28338 does happen) until the next capture for which locking is
28339 possible again.<wbr/></p>
28340             </td>
28341           </tr>
28342
28343           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28344            <!-- end of entry -->
28345         
28346         
28347
28348       <!-- end of kind -->
28349       </tbody>
28350
28351   <!-- end of section -->
28352   <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
28353
28354
28355       <tr><td colspan="7" class="kind">dynamic</td></tr>
28356
28357       <thead class="entries_header">
28358         <tr>
28359           <th class="th_name">Property Name</th>
28360           <th class="th_type">Type</th>
28361           <th class="th_description">Description</th>
28362           <th class="th_units">Units</th>
28363           <th class="th_range">Range</th>
28364           <th class="th_hal_version">Initial HIDL HAL version</th>
28365           <th class="th_tags">Tags</th>
28366         </tr>
28367       </thead>
28368
28369       <tbody>
28370
28371         
28372
28373         
28374
28375         
28376
28377         
28378
28379                 
28380           <tr class="entry" id="dynamic_android.sync.frameNumber">
28381             <td class="entry_name
28382              " rowspan="5">
28383               android.<wbr/>sync.<wbr/>frame<wbr/>Number
28384             </td>
28385             <td class="entry_type">
28386                 <span class="entry_type_name entry_type_name_enum">int64</span>
28387
28388               <span class="entry_type_visibility"> [ndk_public]</span>
28389
28390
28391               <span class="entry_type_hwlevel">[legacy] </span>
28392
28393
28394
28395                 <ul class="entry_type_enum">
28396                   <li>
28397                     <span class="entry_type_enum_name">CONVERGING (v3.2)</span>
28398                     <span class="entry_type_enum_value">-1</span>
28399                     <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
28400 <p>Synchronization is in progress,<wbr/> and reading metadata from this
28401 result may include a mix of data that have taken effect since the
28402 last synchronization time.<wbr/></p>
28403 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
28404 this value will update to the actual frame number frame number
28405 the result is guaranteed to be synchronized to (as long as the
28406 request settings remain constant).<wbr/></p></span>
28407                   </li>
28408                   <li>
28409                     <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28410                     <span class="entry_type_enum_value">-2</span>
28411                     <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
28412 <p>The result may have already converged,<wbr/> or it may be in
28413 progress.<wbr/>  Reading from this result may include some mix
28414 of settings from past requests.<wbr/></p>
28415 <p>After a settings change,<wbr/> the new settings will eventually all
28416 take effect for the output buffers and results.<wbr/> However,<wbr/> this
28417 value will not change when that happens.<wbr/> Altering settings
28418 rapidly may provide outcomes using mixes of settings from recent
28419 requests.<wbr/></p>
28420 <p>This value is intended primarily for backwards compatibility with
28421 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
28422                   </li>
28423                 </ul>
28424
28425             </td> <!-- entry_type -->
28426
28427             <td class="entry_description">
28428               <p>The frame number corresponding to the last request
28429 with which the output result (metadata + buffers) has been fully
28430 synchronized.<wbr/></p>
28431             </td>
28432
28433             <td class="entry_units">
28434             </td>
28435
28436             <td class="entry_range">
28437               <p>Either a non-negative value corresponding to a
28438 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
28439             </td>
28440
28441             <td class="entry_hal_version">
28442               <p>3.<wbr/>2</p>
28443             </td>
28444
28445             <td class="entry_tags">
28446               <ul class="entry_tags">
28447                   <li><a href="#tag_V1">V1</a></li>
28448               </ul>
28449             </td>
28450
28451           </tr>
28452           <tr class="entries_header">
28453             <th class="th_details" colspan="6">Details</th>
28454           </tr>
28455           <tr class="entry_cont">
28456             <td class="entry_details" colspan="6">
28457               <p>When a request is submitted to the camera device,<wbr/> there is usually a
28458 delay of several frames before the controls get applied.<wbr/> A camera
28459 device may either choose to account for this delay by implementing a
28460 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
28461 it may start streaming control changes that span over several frame
28462 boundaries.<wbr/></p>
28463 <p>In the latter case,<wbr/> whenever a request's settings change relative to
28464 the previous submitted request,<wbr/> the full set of changes may take
28465 multiple frame durations to fully take effect.<wbr/> Some settings may
28466 take effect sooner (in less frame durations) than others.<wbr/></p>
28467 <p>While a set of control changes are being propagated,<wbr/> this value
28468 will be CONVERGING.<wbr/></p>
28469 <p>Once it is fully known that a set of control changes have been
28470 finished propagating,<wbr/> and the resulting updated control settings
28471 have been read back by the camera device,<wbr/> this value will be set
28472 to a non-negative frame number (corresponding to the request to
28473 which the results have synchronized to).<wbr/></p>
28474 <p>Older camera device implementations may not have a way to detect
28475 when all camera controls have been applied,<wbr/> and will always set this
28476 value to UNKNOWN.<wbr/></p>
28477 <p>FULL capability devices will always have this value set to the
28478 frame number of the request corresponding to this result.<wbr/></p>
28479 <p><em>Further details</em>:</p>
28480 <ul>
28481 <li>Whenever a request differs from the last request,<wbr/> any future
28482 results not yet returned may have this value set to CONVERGING (this
28483 could include any in-progress captures not yet returned by the camera
28484 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
28485 <li>Submitting a series of multiple requests that differ from the
28486 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
28487 moves the new synchronization frame to the last non-repeating
28488 request (using the smallest frame number from the contiguous list of
28489 repeating requests).<wbr/></li>
28490 <li>Submitting the same request repeatedly will not change this value
28491 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
28492 <li>When this value changes to non-negative,<wbr/> that means that all of the
28493 metadata controls from the request have been applied,<wbr/> all of the
28494 metadata controls from the camera device have been read to the
28495 updated values (into the result),<wbr/> and all of the graphics buffers
28496 corresponding to this result are also synchronized to the request.<wbr/></li>
28497 </ul>
28498 <p><em>Pipeline considerations</em>:</p>
28499 <p>Submitting a request with updated controls relative to the previously
28500 submitted requests may also invalidate the synchronization state
28501 of all the results corresponding to currently in-flight requests.<wbr/></p>
28502 <p>In other words,<wbr/> results for this current request and up to
28503 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
28504 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
28505             </td>
28506           </tr>
28507
28508           <tr class="entries_header">
28509             <th class="th_details" colspan="6">HAL Implementation Details</th>
28510           </tr>
28511           <tr class="entry_cont">
28512             <td class="entry_details" colspan="6">
28513               <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
28514 is also UNKNOWN.<wbr/></p>
28515 <p>FULL capability devices should simply set this value to the
28516 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
28517             </td>
28518           </tr>
28519
28520           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28521            <!-- end of entry -->
28522         
28523         
28524
28525       <!-- end of kind -->
28526       </tbody>
28527       <tr><td colspan="7" class="kind">static</td></tr>
28528
28529       <thead class="entries_header">
28530         <tr>
28531           <th class="th_name">Property Name</th>
28532           <th class="th_type">Type</th>
28533           <th class="th_description">Description</th>
28534           <th class="th_units">Units</th>
28535           <th class="th_range">Range</th>
28536           <th class="th_hal_version">Initial HIDL HAL version</th>
28537           <th class="th_tags">Tags</th>
28538         </tr>
28539       </thead>
28540
28541       <tbody>
28542
28543         
28544
28545         
28546
28547         
28548
28549         
28550
28551                 
28552           <tr class="entry" id="static_android.sync.maxLatency">
28553             <td class="entry_name
28554              " rowspan="5">
28555               android.<wbr/>sync.<wbr/>max<wbr/>Latency
28556             </td>
28557             <td class="entry_type">
28558                 <span class="entry_type_name entry_type_name_enum">int32</span>
28559
28560               <span class="entry_type_visibility"> [public]</span>
28561
28562
28563               <span class="entry_type_hwlevel">[legacy] </span>
28564
28565
28566
28567                 <ul class="entry_type_enum">
28568                   <li>
28569                     <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span>
28570                     <span class="entry_type_enum_value">0</span>
28571                     <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
28572 <p>Changing controls over multiple requests one after another will
28573 produce results that have those controls applied atomically
28574 each frame.<wbr/></p>
28575 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
28576                   </li>
28577                   <li>
28578                     <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28579                     <span class="entry_type_enum_value">-1</span>
28580                     <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
28581 of the past requests applied to the camera settings.<wbr/></p>
28582 <p>By submitting a series of identical requests,<wbr/> the camera device
28583 will eventually have the camera settings applied,<wbr/> but it is
28584 unknown when that exact point will be.<wbr/></p>
28585 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
28586                   </li>
28587                 </ul>
28588
28589             </td> <!-- entry_type -->
28590
28591             <td class="entry_description">
28592               <p>The maximum number of frames that can occur after a request
28593 (different than the previous) has been submitted,<wbr/> and before the
28594 result's state becomes synchronized.<wbr/></p>
28595             </td>
28596
28597             <td class="entry_units">
28598               Frame counts
28599             </td>
28600
28601             <td class="entry_range">
28602               <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
28603             </td>
28604
28605             <td class="entry_hal_version">
28606               <p>3.<wbr/>2</p>
28607             </td>
28608
28609             <td class="entry_tags">
28610               <ul class="entry_tags">
28611                   <li><a href="#tag_V1">V1</a></li>
28612               </ul>
28613             </td>
28614
28615           </tr>
28616           <tr class="entries_header">
28617             <th class="th_details" colspan="6">Details</th>
28618           </tr>
28619           <tr class="entry_cont">
28620             <td class="entry_details" colspan="6">
28621               <p>This defines the maximum distance (in number of metadata results),<wbr/>
28622 between the frame number of the request that has new controls to apply
28623 and the frame number of the result that has all the controls applied.<wbr/></p>
28624 <p>In other words this acts as an upper boundary for how many frames
28625 must occur before the camera device knows for a fact that the new
28626 submitted camera settings have been applied in outgoing frames.<wbr/></p>
28627             </td>
28628           </tr>
28629
28630           <tr class="entries_header">
28631             <th class="th_details" colspan="6">HAL Implementation Details</th>
28632           </tr>
28633           <tr class="entry_cont">
28634             <td class="entry_details" colspan="6">
28635               <p>For example if maxLatency was 2,<wbr/></p>
28636 <pre><code>initial request = X (repeating)
28637 request1 = X
28638 request2 = Y
28639 request3 = Y
28640 request4 = Y
28641
28642 where requestN has frameNumber N,<wbr/> and the first of the repeating
28643 initial request's has frameNumber F (and F &lt; 1).<wbr/>
28644
28645 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28646 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28647 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28648 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28649 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
28650
28651 where resultN has frameNumber N.<wbr/>
28652 </code></pre>
28653 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
28654 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
28655 <code>4 - 2 = 2</code>.<wbr/></p>
28656 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
28657 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
28658 <code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
28659 <p>LIMITED devices are strongly encouraged to use a non-negative
28660 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
28661 to know when sensor settings have been applied.<wbr/></p>
28662             </td>
28663           </tr>
28664
28665           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28666            <!-- end of entry -->
28667         
28668         
28669
28670       <!-- end of kind -->
28671       </tbody>
28672
28673   <!-- end of section -->
28674   <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
28675
28676
28677       <tr><td colspan="7" class="kind">controls</td></tr>
28678
28679       <thead class="entries_header">
28680         <tr>
28681           <th class="th_name">Property Name</th>
28682           <th class="th_type">Type</th>
28683           <th class="th_description">Description</th>
28684           <th class="th_units">Units</th>
28685           <th class="th_range">Range</th>
28686           <th class="th_hal_version">Initial HIDL HAL version</th>
28687           <th class="th_tags">Tags</th>
28688         </tr>
28689       </thead>
28690
28691       <tbody>
28692
28693         
28694
28695         
28696
28697         
28698
28699         
28700
28701                 
28702           <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
28703             <td class="entry_name
28704              " rowspan="3">
28705               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
28706             </td>
28707             <td class="entry_type">
28708                 <span class="entry_type_name">float</span>
28709
28710               <span class="entry_type_visibility"> [java_public]</span>
28711
28712
28713               <span class="entry_type_hwlevel">[limited] </span>
28714
28715
28716
28717
28718             </td> <!-- entry_type -->
28719
28720             <td class="entry_description">
28721               <p>The amount of exposure time increase factor applied to the original output
28722 frame by the application processing before sending for reprocessing.<wbr/></p>
28723             </td>
28724
28725             <td class="entry_units">
28726               Relative exposure time increase factor.<wbr/>
28727             </td>
28728
28729             <td class="entry_range">
28730               <p>&gt;= 1.<wbr/>0</p>
28731             </td>
28732
28733             <td class="entry_hal_version">
28734               <p>3.<wbr/>2</p>
28735             </td>
28736
28737             <td class="entry_tags">
28738               <ul class="entry_tags">
28739                   <li><a href="#tag_REPROC">REPROC</a></li>
28740               </ul>
28741             </td>
28742
28743           </tr>
28744           <tr class="entries_header">
28745             <th class="th_details" colspan="6">Details</th>
28746           </tr>
28747           <tr class="entry_cont">
28748             <td class="entry_details" colspan="6">
28749               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
28750 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
28751 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
28752 output frames to effectively reduce the noise to the same level as a frame that was
28753 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
28754 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
28755 the camera device is that the amount of noise in the image would be approximately what
28756 would be expected if the original capture parameters had been a sensitivity of
28757 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
28758 than S and T respectively.<wbr/> If the captured images were processed by the application
28759 before being sent for reprocessing,<wbr/> then the application may have used image processing
28760 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
28761 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
28762 control,<wbr/> the application can communicate to the camera device the actual noise level
28763 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
28764 device can select appropriate noise reduction and edge enhancement parameters to avoid
28765 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
28766 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
28767 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
28768 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
28769 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
28770 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
28771 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
28772 produce the best quality images.<wbr/></p>
28773 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
28774 buffer in a way that affects its effective exposure time.<wbr/></p>
28775 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
28776 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/>
28777 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
28778 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
28779             </td>
28780           </tr>
28781
28782
28783           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28784            <!-- end of entry -->
28785         
28786         
28787
28788       <!-- end of kind -->
28789       </tbody>
28790       <tr><td colspan="7" class="kind">dynamic</td></tr>
28791
28792       <thead class="entries_header">
28793         <tr>
28794           <th class="th_name">Property Name</th>
28795           <th class="th_type">Type</th>
28796           <th class="th_description">Description</th>
28797           <th class="th_units">Units</th>
28798           <th class="th_range">Range</th>
28799           <th class="th_hal_version">Initial HIDL HAL version</th>
28800           <th class="th_tags">Tags</th>
28801         </tr>
28802       </thead>
28803
28804       <tbody>
28805
28806         
28807
28808         
28809
28810         
28811
28812         
28813
28814                 
28815           <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
28816             <td class="entry_name
28817              " rowspan="3">
28818               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
28819             </td>
28820             <td class="entry_type">
28821                 <span class="entry_type_name">float</span>
28822
28823               <span class="entry_type_visibility"> [java_public]</span>
28824
28825
28826               <span class="entry_type_hwlevel">[limited] </span>
28827
28828
28829
28830
28831             </td> <!-- entry_type -->
28832
28833             <td class="entry_description">
28834               <p>The amount of exposure time increase factor applied to the original output
28835 frame by the application processing before sending for reprocessing.<wbr/></p>
28836             </td>
28837
28838             <td class="entry_units">
28839               Relative exposure time increase factor.<wbr/>
28840             </td>
28841
28842             <td class="entry_range">
28843               <p>&gt;= 1.<wbr/>0</p>
28844             </td>
28845
28846             <td class="entry_hal_version">
28847               <p>3.<wbr/>2</p>
28848             </td>
28849
28850             <td class="entry_tags">
28851               <ul class="entry_tags">
28852                   <li><a href="#tag_REPROC">REPROC</a></li>
28853               </ul>
28854             </td>
28855
28856           </tr>
28857           <tr class="entries_header">
28858             <th class="th_details" colspan="6">Details</th>
28859           </tr>
28860           <tr class="entry_cont">
28861             <td class="entry_details" colspan="6">
28862               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
28863 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
28864 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
28865 output frames to effectively reduce the noise to the same level as a frame that was
28866 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
28867 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
28868 the camera device is that the amount of noise in the image would be approximately what
28869 would be expected if the original capture parameters had been a sensitivity of
28870 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
28871 than S and T respectively.<wbr/> If the captured images were processed by the application
28872 before being sent for reprocessing,<wbr/> then the application may have used image processing
28873 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
28874 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
28875 control,<wbr/> the application can communicate to the camera device the actual noise level
28876 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
28877 device can select appropriate noise reduction and edge enhancement parameters to avoid
28878 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
28879 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
28880 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
28881 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
28882 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
28883 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
28884 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
28885 produce the best quality images.<wbr/></p>
28886 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
28887 buffer in a way that affects its effective exposure time.<wbr/></p>
28888 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
28889 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/>
28890 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
28891 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
28892             </td>
28893           </tr>
28894
28895
28896           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28897            <!-- end of entry -->
28898         
28899         
28900
28901       <!-- end of kind -->
28902       </tbody>
28903       <tr><td colspan="7" class="kind">static</td></tr>
28904
28905       <thead class="entries_header">
28906         <tr>
28907           <th class="th_name">Property Name</th>
28908           <th class="th_type">Type</th>
28909           <th class="th_description">Description</th>
28910           <th class="th_units">Units</th>
28911           <th class="th_range">Range</th>
28912           <th class="th_hal_version">Initial HIDL HAL version</th>
28913           <th class="th_tags">Tags</th>
28914         </tr>
28915       </thead>
28916
28917       <tbody>
28918
28919         
28920
28921         
28922
28923         
28924
28925         
28926
28927                 
28928           <tr class="entry" id="static_android.reprocess.maxCaptureStall">
28929             <td class="entry_name
28930              " rowspan="3">
28931               android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
28932             </td>
28933             <td class="entry_type">
28934                 <span class="entry_type_name">int32</span>
28935
28936               <span class="entry_type_visibility"> [java_public]</span>
28937
28938
28939               <span class="entry_type_hwlevel">[limited] </span>
28940
28941
28942
28943
28944             </td> <!-- entry_type -->
28945
28946             <td class="entry_description">
28947               <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
28948 reprocess capture request.<wbr/></p>
28949             </td>
28950
28951             <td class="entry_units">
28952               Number of frames.<wbr/>
28953             </td>
28954
28955             <td class="entry_range">
28956               <p>&lt;= 4</p>
28957             </td>
28958
28959             <td class="entry_hal_version">
28960               <p>3.<wbr/>2</p>
28961             </td>
28962
28963             <td class="entry_tags">
28964               <ul class="entry_tags">
28965                   <li><a href="#tag_REPROC">REPROC</a></li>
28966               </ul>
28967             </td>
28968
28969           </tr>
28970           <tr class="entries_header">
28971             <th class="th_details" colspan="6">Details</th>
28972           </tr>
28973           <tr class="entry_cont">
28974             <td class="entry_details" colspan="6">
28975               <p>The key describes the maximal interference that one reprocess (input) request
28976 can introduce to the camera simultaneous streaming of regular (output) capture
28977 requests,<wbr/> including repeating requests.<wbr/></p>
28978 <p>When a reprocessing capture request is submitted while a camera output repeating request
28979 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
28980 pipeline for at least one frame duration so that the camera device is unable to process
28981 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
28982 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
28983 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
28984 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
28985 the worst-case number of frame stall introduced by one reprocess request with any kind of
28986 formats/<wbr/>sizes combination.<wbr/></p>
28987 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
28988 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
28989 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
28990 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
28991 YUV_<wbr/>REPROCESSING).<wbr/></p>
28992             </td>
28993           </tr>
28994
28995
28996           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28997            <!-- end of entry -->
28998         
28999         
29000
29001       <!-- end of kind -->
29002       </tbody>
29003
29004   <!-- end of section -->
29005   <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
29006
29007
29008       <tr><td colspan="7" class="kind">static</td></tr>
29009
29010       <thead class="entries_header">
29011         <tr>
29012           <th class="th_name">Property Name</th>
29013           <th class="th_type">Type</th>
29014           <th class="th_description">Description</th>
29015           <th class="th_units">Units</th>
29016           <th class="th_range">Range</th>
29017           <th class="th_hal_version">Initial HIDL HAL version</th>
29018           <th class="th_tags">Tags</th>
29019         </tr>
29020       </thead>
29021
29022       <tbody>
29023
29024         
29025
29026         
29027
29028         
29029
29030         
29031
29032                 
29033           <tr class="entry" id="static_android.depth.maxDepthSamples">
29034             <td class="entry_name
29035              " rowspan="3">
29036               android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
29037             </td>
29038             <td class="entry_type">
29039                 <span class="entry_type_name">int32</span>
29040
29041               <span class="entry_type_visibility"> [system]</span>
29042
29043
29044               <span class="entry_type_hwlevel">[limited] </span>
29045
29046
29047
29048
29049             </td> <!-- entry_type -->
29050
29051             <td class="entry_description">
29052               <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
29053             </td>
29054
29055             <td class="entry_units">
29056             </td>
29057
29058             <td class="entry_range">
29059             </td>
29060
29061             <td class="entry_hal_version">
29062               <p>3.<wbr/>2</p>
29063             </td>
29064
29065             <td class="entry_tags">
29066               <ul class="entry_tags">
29067                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29068               </ul>
29069             </td>
29070
29071           </tr>
29072           <tr class="entries_header">
29073             <th class="th_details" colspan="6">Details</th>
29074           </tr>
29075           <tr class="entry_cont">
29076             <td class="entry_details" colspan="6">
29077               <p>If a camera device supports outputting depth range data in the form of a depth point
29078 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
29079 number of points an output buffer may contain.<wbr/></p>
29080 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
29081 If output in the depth point cloud format is not supported,<wbr/> this entry will
29082 not be defined.<wbr/></p>
29083             </td>
29084           </tr>
29085
29086
29087           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29088            <!-- end of entry -->
29089         
29090                 
29091           <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
29092             <td class="entry_name
29093              " rowspan="3">
29094               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
29095             </td>
29096             <td class="entry_type">
29097                 <span class="entry_type_name entry_type_name_enum">int32</span>
29098                 <span class="entry_type_container">x</span>
29099
29100                 <span class="entry_type_array">
29101                   n x 4
29102                 </span>
29103               <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
29104
29105
29106               <span class="entry_type_hwlevel">[limited] </span>
29107
29108
29109
29110                 <ul class="entry_type_enum">
29111                   <li>
29112                     <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
29113                   </li>
29114                   <li>
29115                     <span class="entry_type_enum_name">INPUT (v3.2)</span>
29116                   </li>
29117                 </ul>
29118
29119             </td> <!-- entry_type -->
29120
29121             <td class="entry_description">
29122               <p>The available depth dataspace stream
29123 configurations that this camera device supports
29124 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
29125             </td>
29126
29127             <td class="entry_units">
29128             </td>
29129
29130             <td class="entry_range">
29131             </td>
29132
29133             <td class="entry_hal_version">
29134               <p>3.<wbr/>2</p>
29135             </td>
29136
29137             <td class="entry_tags">
29138               <ul class="entry_tags">
29139                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29140               </ul>
29141             </td>
29142
29143           </tr>
29144           <tr class="entries_header">
29145             <th class="th_details" colspan="6">Details</th>
29146           </tr>
29147           <tr class="entry_cont">
29148             <td class="entry_details" colspan="6">
29149               <p>These are output stream configurations for use with
29150 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
29151 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
29152 <p>Only devices that support depth output for at least
29153 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
29154 this entry.<wbr/></p>
29155 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
29156 sparse depth point cloud must report a single entry for
29157 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
29158 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
29159 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
29160             </td>
29161           </tr>
29162
29163
29164           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29165            <!-- end of entry -->
29166         
29167                 
29168           <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
29169             <td class="entry_name
29170              " rowspan="3">
29171               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
29172             </td>
29173             <td class="entry_type">
29174                 <span class="entry_type_name">int64</span>
29175                 <span class="entry_type_container">x</span>
29176
29177                 <span class="entry_type_array">
29178                   4 x n
29179                 </span>
29180               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29181
29182
29183               <span class="entry_type_hwlevel">[limited] </span>
29184
29185
29186
29187
29188             </td> <!-- entry_type -->
29189
29190             <td class="entry_description">
29191               <p>This lists the minimum frame duration for each
29192 format/<wbr/>size combination for depth output formats.<wbr/></p>
29193             </td>
29194
29195             <td class="entry_units">
29196               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29197             </td>
29198
29199             <td class="entry_range">
29200             </td>
29201
29202             <td class="entry_hal_version">
29203               <p>3.<wbr/>2</p>
29204             </td>
29205
29206             <td class="entry_tags">
29207               <ul class="entry_tags">
29208                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29209               </ul>
29210             </td>
29211
29212           </tr>
29213           <tr class="entries_header">
29214             <th class="th_details" colspan="6">Details</th>
29215           </tr>
29216           <tr class="entry_cont">
29217             <td class="entry_details" colspan="6">
29218               <p>This should correspond to the frame duration when only that
29219 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
29220 set to either OFF or FAST.<wbr/></p>
29221 <p>When multiple streams are used in a request,<wbr/> the minimum frame
29222 duration will be max(individual stream min durations).<wbr/></p>
29223 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
29224 is the same regardless of whether the stream is input or output.<wbr/></p>
29225 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
29226 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
29227 calculating the max frame rate.<wbr/></p>
29228             </td>
29229           </tr>
29230
29231
29232           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29233            <!-- end of entry -->
29234         
29235                 
29236           <tr class="entry" id="static_android.depth.availableDepthStallDurations">
29237             <td class="entry_name
29238              " rowspan="3">
29239               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
29240             </td>
29241             <td class="entry_type">
29242                 <span class="entry_type_name">int64</span>
29243                 <span class="entry_type_container">x</span>
29244
29245                 <span class="entry_type_array">
29246                   4 x n
29247                 </span>
29248               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29249
29250
29251               <span class="entry_type_hwlevel">[limited] </span>
29252
29253
29254
29255
29256             </td> <!-- entry_type -->
29257
29258             <td class="entry_description">
29259               <p>This lists the maximum stall duration for each
29260 output format/<wbr/>size combination for depth streams.<wbr/></p>
29261             </td>
29262
29263             <td class="entry_units">
29264               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29265             </td>
29266
29267             <td class="entry_range">
29268             </td>
29269
29270             <td class="entry_hal_version">
29271               <p>3.<wbr/>2</p>
29272             </td>
29273
29274             <td class="entry_tags">
29275               <ul class="entry_tags">
29276                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29277               </ul>
29278             </td>
29279
29280           </tr>
29281           <tr class="entries_header">
29282             <th class="th_details" colspan="6">Details</th>
29283           </tr>
29284           <tr class="entry_cont">
29285             <td class="entry_details" colspan="6">
29286               <p>A stall duration is how much extra time would get added
29287 to the normal minimum frame duration for a repeating request
29288 that has streams with non-zero stall.<wbr/></p>
29289 <p>This functions similarly to
29290 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
29291 streams.<wbr/></p>
29292 <p>All depth output stream formats may have a nonzero stall
29293 duration.<wbr/></p>
29294             </td>
29295           </tr>
29296
29297
29298           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29299            <!-- end of entry -->
29300         
29301                 
29302           <tr class="entry" id="static_android.depth.depthIsExclusive">
29303             <td class="entry_name
29304              " rowspan="3">
29305               android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
29306             </td>
29307             <td class="entry_type">
29308                 <span class="entry_type_name entry_type_name_enum">byte</span>
29309
29310               <span class="entry_type_visibility"> [public as boolean]</span>
29311
29312
29313               <span class="entry_type_hwlevel">[limited] </span>
29314
29315
29316
29317                 <ul class="entry_type_enum">
29318                   <li>
29319                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
29320                   </li>
29321                   <li>
29322                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
29323                   </li>
29324                 </ul>
29325
29326             </td> <!-- entry_type -->
29327
29328             <td class="entry_description">
29329               <p>Indicates whether a capture request may target both a
29330 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
29331 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
29332             </td>
29333
29334             <td class="entry_units">
29335             </td>
29336
29337             <td class="entry_range">
29338             </td>
29339
29340             <td class="entry_hal_version">
29341               <p>3.<wbr/>2</p>
29342             </td>
29343
29344             <td class="entry_tags">
29345             </td>
29346
29347           </tr>
29348           <tr class="entries_header">
29349             <th class="th_details" colspan="6">Details</th>
29350           </tr>
29351           <tr class="entry_cont">
29352             <td class="entry_details" colspan="6">
29353               <p>If TRUE,<wbr/> including both depth and color outputs in a single
29354 capture request is not supported.<wbr/> An application must interleave color
29355 and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
29356 of output.<wbr/></p>
29357 <p>Typically,<wbr/> this restriction exists on camera devices that
29358 need to emit a specific pattern or wavelength of light to
29359 measure depth values,<wbr/> which causes the color image to be
29360 corrupted during depth measurement.<wbr/></p>
29361             </td>
29362           </tr>
29363
29364
29365           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29366            <!-- end of entry -->
29367         
29368         
29369
29370       <!-- end of kind -->
29371       </tbody>
29372
29373   <!-- end of section -->
29374   <tr><td colspan="7" id="section_logicalMultiCamera" class="section">logicalMultiCamera</td></tr>
29375
29376
29377       <tr><td colspan="7" class="kind">static</td></tr>
29378
29379       <thead class="entries_header">
29380         <tr>
29381           <th class="th_name">Property Name</th>
29382           <th class="th_type">Type</th>
29383           <th class="th_description">Description</th>
29384           <th class="th_units">Units</th>
29385           <th class="th_range">Range</th>
29386           <th class="th_hal_version">Initial HIDL HAL version</th>
29387           <th class="th_tags">Tags</th>
29388         </tr>
29389       </thead>
29390
29391       <tbody>
29392
29393         
29394
29395         
29396
29397         
29398
29399         
29400
29401                 
29402           <tr class="entry" id="static_android.logicalMultiCamera.physicalIds">
29403             <td class="entry_name
29404              " rowspan="3">
29405               android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids
29406             </td>
29407             <td class="entry_type">
29408                 <span class="entry_type_name">byte</span>
29409                 <span class="entry_type_container">x</span>
29410
29411                 <span class="entry_type_array">
29412                   n
29413                 </span>
29414               <span class="entry_type_visibility"> [hidden]</span>
29415
29416
29417               <span class="entry_type_hwlevel">[limited] </span>
29418
29419
29420
29421
29422             </td> <!-- entry_type -->
29423
29424             <td class="entry_description">
29425               <p>String containing the ids of the underlying physical cameras.<wbr/></p>
29426             </td>
29427
29428             <td class="entry_units">
29429               UTF-8 null-terminated string
29430             </td>
29431
29432             <td class="entry_range">
29433             </td>
29434
29435             <td class="entry_hal_version">
29436               <p>3.<wbr/>3</p>
29437             </td>
29438
29439             <td class="entry_tags">
29440               <ul class="entry_tags">
29441                   <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
29442               </ul>
29443             </td>
29444
29445           </tr>
29446           <tr class="entries_header">
29447             <th class="th_details" colspan="6">Details</th>
29448           </tr>
29449           <tr class="entry_cont">
29450             <td class="entry_details" colspan="6">
29451               <p>For a logical camera,<wbr/> this is concatenation of all underlying physical camera ids.<wbr/>
29452 The null terminator for physical camera id must be preserved so that the whole string
29453 can be tokenized using '\0' to generate list of physical camera ids.<wbr/></p>
29454 <p>For example,<wbr/> if the physical camera ids of the logical camera are "2" and "3",<wbr/> the
29455 value of this tag will be ['2',<wbr/> '\0',<wbr/> '3',<wbr/> '\0'].<wbr/></p>
29456 <p>The number of physical camera ids must be no less than 2.<wbr/></p>
29457             </td>
29458           </tr>
29459
29460
29461           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29462            <!-- end of entry -->
29463         
29464                 
29465           <tr class="entry" id="static_android.logicalMultiCamera.sensorSyncType">
29466             <td class="entry_name
29467              " rowspan="3">
29468               android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type
29469             </td>
29470             <td class="entry_type">
29471                 <span class="entry_type_name entry_type_name_enum">byte</span>
29472
29473               <span class="entry_type_visibility"> [public]</span>
29474
29475
29476               <span class="entry_type_hwlevel">[limited] </span>
29477
29478
29479
29480                 <ul class="entry_type_enum">
29481                   <li>
29482                     <span class="entry_type_enum_name">APPROXIMATE (v3.3)</span>
29483                     <span class="entry_type_enum_notes"><p>A software mechanism is used to synchronize between the physical cameras.<wbr/> As a result,<wbr/>
29484 the timestamp of an image from a physical stream is only an approximation of the
29485 image sensor start-of-exposure time.<wbr/></p></span>
29486                   </li>
29487                   <li>
29488                     <span class="entry_type_enum_name">CALIBRATED (v3.3)</span>
29489                     <span class="entry_type_enum_notes"><p>The camera device supports frame timestamp synchronization at the hardware level,<wbr/>
29490 and the timestamp of a physical stream image accurately reflects its
29491 start-of-exposure time.<wbr/></p></span>
29492                   </li>
29493                 </ul>
29494
29495             </td> <!-- entry_type -->
29496
29497             <td class="entry_description">
29498               <p>The accuracy of frame timestamp synchronization between physical cameras</p>
29499             </td>
29500
29501             <td class="entry_units">
29502             </td>
29503
29504             <td class="entry_range">
29505             </td>
29506
29507             <td class="entry_hal_version">
29508               <p>3.<wbr/>3</p>
29509             </td>
29510
29511             <td class="entry_tags">
29512               <ul class="entry_tags">
29513                   <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
29514               </ul>
29515             </td>
29516
29517           </tr>
29518           <tr class="entries_header">
29519             <th class="th_details" colspan="6">Details</th>
29520           </tr>
29521           <tr class="entry_cont">
29522             <td class="entry_details" colspan="6">
29523               <p>The accuracy of the frame timestamp synchronization determines the physical cameras'
29524 ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/>
29525 the physical camera sensors usually run in master-slave mode so that their shutter
29526 time is synchronized.<wbr/> For APPROXIMATE sensorSyncType,<wbr/> the camera sensors usually run in
29527 master-master mode,<wbr/> and there could be offset between their start of exposure.<wbr/></p>
29528 <p>In both cases,<wbr/> all images generated for a particular capture request still carry the same
29529 timestamps,<wbr/> so that they can be used to look up the matching frame number and
29530 onCaptureStarted callback.<wbr/></p>
29531             </td>
29532           </tr>
29533
29534
29535           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29536            <!-- end of entry -->
29537         
29538         
29539
29540       <!-- end of kind -->
29541       </tbody>
29542
29543   <!-- end of section -->
29544 <!-- </namespace> -->
29545   </table>
29546
29547   <div class="tags" id="tag_index">
29548     <h2>Tags</h2>
29549     <ul>
29550       <li id="tag_BC">BC - 
29551         Needed for backwards compatibility with old Java API
29552     
29553         <ul class="tags_entries">
29554           <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
29555           <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
29556           <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
29557           <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
29558           <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
29559           <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
29560           <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
29561           <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
29562           <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
29563           <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
29564           <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
29565           <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
29566           <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
29567           <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
29568           <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
29569           <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
29570           <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
29571           <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
29572           <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
29573           <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
29574           <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
29575           <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
29576           <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
29577           <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
29578           <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
29579           <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
29580           <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
29581           <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
29582           <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
29583           <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
29584           <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
29585           <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
29586           <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
29587           <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
29588           <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
29589           <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
29590           <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
29591           <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
29592           <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
29593           <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
29594           <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
29595           <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
29596           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
29597           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
29598           <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
29599           <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
29600           <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
29601           <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
29602           <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
29603           <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
29604           <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
29605           <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
29606           <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
29607           <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
29608           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
29609           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
29610           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
29611           <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
29612           <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
29613           <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
29614           <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
29615           <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
29616           <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
29617           <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
29618           <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
29619           <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
29620           <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
29621         </ul>
29622       </li> <!-- tag_BC -->
29623       <li id="tag_V1">V1 - 
29624         New features for first camera 2 release (API1)
29625     
29626         <ul class="tags_entries">
29627           <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
29628           <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
29629           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
29630           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
29631           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
29632           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
29633           <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
29634           <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
29635           <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
29636           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
29637           <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
29638           <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
29639           <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
29640           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
29641           <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
29642           <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
29643           <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
29644           <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
29645           <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
29646           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
29647           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
29648           <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
29649           <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
29650           <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
29651           <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
29652           <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
29653           <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
29654           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
29655           <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
29656           <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
29657           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
29658           <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
29659           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
29660           <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
29661           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
29662           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
29663           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
29664           <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
29665           <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
29666           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
29667           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
29668           <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
29669           <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
29670           <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
29671           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
29672         </ul>
29673       </li> <!-- tag_V1 -->
29674       <li id="tag_RAW">RAW - 
29675         Needed for useful RAW image processing and DNG file support
29676     
29677         <ul class="tags_entries">
29678           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
29679           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
29680           <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
29681           <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
29682           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
29683           <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
29684           <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
29685           <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
29686           <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
29687           <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
29688           <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
29689           <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
29690           <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
29691           <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
29692           <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
29693           <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
29694           <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
29695           <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
29696           <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
29697           <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
29698           <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
29699           <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
29700           <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
29701           <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
29702           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
29703           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
29704           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
29705           <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
29706           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
29707         </ul>
29708       </li> <!-- tag_RAW -->
29709       <li id="tag_HAL2">HAL2 - 
29710         Entry is only used by camera device legacy HAL 2.x
29711     
29712         <ul class="tags_entries">
29713           <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
29714           <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
29715           <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
29716           <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
29717           <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
29718         </ul>
29719       </li> <!-- tag_HAL2 -->
29720       <li id="tag_FULL">FULL - 
29721         Entry is required for full hardware level devices, and optional for other hardware levels
29722     
29723         <ul class="tags_entries">
29724           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
29725         </ul>
29726       </li> <!-- tag_FULL -->
29727       <li id="tag_DEPTH">DEPTH - 
29728         Entry is required for the depth capability.
29729     
29730         <ul class="tags_entries">
29731           <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
29732           <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
29733           <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
29734           <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
29735           <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
29736           <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
29737           <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
29738           <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
29739         </ul>
29740       </li> <!-- tag_DEPTH -->
29741       <li id="tag_REPROC">REPROC - 
29742         Entry is required for the YUV or PRIVATE reprocessing capability.
29743     
29744         <ul class="tags_entries">
29745           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
29746           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
29747           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
29748           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
29749           <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
29750           <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
29751           <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
29752           <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
29753           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
29754           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
29755         </ul>
29756       </li> <!-- tag_REPROC -->
29757       <li id="tag_LOGICALCAMERA">LOGICALCAMERA - 
29758         Entry is required for logical multi-camera capability.
29759     
29760         <ul class="tags_entries">
29761           <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li>
29762           <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li>
29763         </ul>
29764       </li> <!-- tag_LOGICALCAMERA -->
29765       <li id="tag_FUTURE">FUTURE - 
29766         Entry is  under-specified and is not required for now. This is for book-keeping purpose,
29767         do not implement or use it, it may be revised for future.
29768     
29769         <ul class="tags_entries">
29770           <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
29771           <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
29772           <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
29773           <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
29774           <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
29775           <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
29776           <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
29777           <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
29778           <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
29779           <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
29780           <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
29781           <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
29782           <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
29783           <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
29784           <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
29785           <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
29786           <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
29787           <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
29788           <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
29789           <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
29790           <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
29791         </ul>
29792       </li> <!-- tag_FUTURE -->
29793     </ul>
29794   </div>
29795
29796   [ <a href="#">top</a> ]
29797
29798 </body>
29799 </html>