OSDN Git Service

Camera2: Add distortion correction support
[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                 class="toc_deprecated"
521             ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
522             <li
523             ><a href="#static_android.lens.poseReference">android.lens.poseReference</a></li>
524             <li
525             ><a href="#static_android.lens.distortion">android.lens.distortion</a></li>
526           </ul>
527         </li>
528         <li>
529           <span class="toc_kind_header">dynamic</span>
530           <ul class="toc_section">
531             <li
532             ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
533             <li
534             ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
535             <li
536             ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
537             <li
538             ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
539             <li
540             ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
541             <li
542             ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
543             <li
544             ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
545             <li
546             ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
547             <li
548             ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
549             <li
550             ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
551             <li
552                 class="toc_deprecated"
553             ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
554             <li
555             ><a href="#dynamic_android.lens.distortion">android.lens.distortion</a></li>
556           </ul>
557         </li>
558       </ul> <!-- toc_section -->
559     </li>
560     <li>
561       <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
562       <ul class="toc_section">
563         <li>
564           <span class="toc_kind_header">controls</span>
565           <ul class="toc_section">
566             <li
567             ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
568             <li
569             ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
570           </ul>
571         </li>
572         <li>
573           <span class="toc_kind_header">static</span>
574           <ul class="toc_section">
575             <li
576             ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
577           </ul>
578         </li>
579         <li>
580           <span class="toc_kind_header">dynamic</span>
581           <ul class="toc_section">
582             <li
583             ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
584           </ul>
585         </li>
586       </ul> <!-- toc_section -->
587     </li>
588     <li>
589       <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
590       <ul class="toc_section">
591         <li>
592           <span class="toc_kind_header">static</span>
593           <ul class="toc_section">
594             <li
595                 class="toc_deprecated"
596             ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
597             <li
598                 class="toc_deprecated"
599             ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
600             <li
601                 class="toc_deprecated"
602             ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
603             <li
604                 class="toc_deprecated"
605             ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
606           </ul>
607         </li>
608         <li>
609           <span class="toc_kind_header">dynamic</span>
610           <ul class="toc_section">
611             <li
612                 class="toc_deprecated"
613             ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
614           </ul>
615         </li>
616       </ul> <!-- toc_section -->
617     </li>
618     <li>
619       <span class="toc_section_header"><a href="#section_request">request</a></span>
620       <ul class="toc_section">
621         <li>
622           <span class="toc_kind_header">controls</span>
623           <ul class="toc_section">
624             <li
625                 class="toc_deprecated"
626             ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
627             <li
628             ><a href="#controls_android.request.id">android.request.id</a></li>
629             <li
630                 class="toc_deprecated"
631             ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
632             <li
633             ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
634             <li
635                 class="toc_deprecated"
636             ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
637             <li
638                 class="toc_deprecated"
639             ><a href="#controls_android.request.type">android.request.type</a></li>
640           </ul>
641         </li>
642         <li>
643           <span class="toc_kind_header">static</span>
644           <ul class="toc_section">
645             <li
646             ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
647             <li
648             ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
649             <li
650             ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
651             <li
652             ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
653             <li
654                 class="toc_deprecated"
655             ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
656             <li
657             ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
658             <li
659             ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
660             <li
661             ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
662             <li
663             ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
664             <li
665             ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
666             <li
667             ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
668             <li
669             ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
670             <li
671             ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li>
672             <li
673             ><a href="#static_android.request.availablePhysicalCameraRequestKeys">android.request.availablePhysicalCameraRequestKeys</a></li>
674           </ul>
675         </li>
676         <li>
677           <span class="toc_kind_header">dynamic</span>
678           <ul class="toc_section">
679             <li
680                 class="toc_deprecated"
681             ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
682             <li
683             ><a href="#dynamic_android.request.id">android.request.id</a></li>
684             <li
685             ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
686             <li
687                 class="toc_deprecated"
688             ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
689             <li
690             ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
691           </ul>
692         </li>
693       </ul> <!-- toc_section -->
694     </li>
695     <li>
696       <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
697       <ul class="toc_section">
698         <li>
699           <span class="toc_kind_header">controls</span>
700           <ul class="toc_section">
701             <li
702             ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
703           </ul>
704         </li>
705         <li>
706           <span class="toc_kind_header">static</span>
707           <ul class="toc_section">
708             <li
709                 class="toc_deprecated"
710             ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
711             <li
712                 class="toc_deprecated"
713             ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
714             <li
715                 class="toc_deprecated"
716             ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
717             <li
718             ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
719             <li
720                 class="toc_deprecated"
721             ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
722             <li
723                 class="toc_deprecated"
724             ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
725             <li
726                 class="toc_deprecated"
727             ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
728             <li
729                 class="toc_deprecated"
730             ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
731             <li
732             ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
733             <li
734             ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
735             <li
736             ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
737             <li
738             ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
739             <li
740             ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
741             <li
742             ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
743           </ul>
744         </li>
745         <li>
746           <span class="toc_kind_header">dynamic</span>
747           <ul class="toc_section">
748             <li
749             ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
750           </ul>
751         </li>
752       </ul> <!-- toc_section -->
753     </li>
754     <li>
755       <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
756       <ul class="toc_section">
757         <li>
758           <span class="toc_kind_header">controls</span>
759           <ul class="toc_section">
760             <li
761             ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
762             <li
763             ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
764             <li
765             ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
766             <li
767             ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
768             <li
769             ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
770           </ul>
771         </li>
772         <li>
773           <span class="toc_kind_header">static</span>
774           <ul class="toc_section">
775
776             <li
777             ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
778             <li
779             ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
780             <li
781             ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
782             <li
783             ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
784             <li
785             ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
786             <li
787             ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
788             <li
789             ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
790             <li
791             ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
792             <li
793             ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
794             <li
795             ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
796             <li
797             ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
798
799             <li
800             ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
801             <li
802             ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
803             <li
804             ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
805             <li
806             ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
807             <li
808             ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
809             <li
810             ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
811             <li
812             ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
813             <li
814             ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
815             <li
816             ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
817             <li
818             ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
819             <li
820             ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
821             <li
822             ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
823             <li
824             ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
825             <li
826             ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
827             <li
828             ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
829             <li
830             ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
831           </ul>
832         </li>
833         <li>
834           <span class="toc_kind_header">dynamic</span>
835           <ul class="toc_section">
836             <li
837             ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
838             <li
839             ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
840             <li
841             ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
842             <li
843             ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
844             <li
845             ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
846             <li
847             ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
848             <li
849             ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
850             <li
851             ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
852             <li
853             ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
854             <li
855             ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
856             <li
857             ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
858             <li
859             ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
860             <li
861             ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
862             <li
863             ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
864             <li
865             ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
866           </ul>
867         </li>
868       </ul> <!-- toc_section -->
869     </li>
870     <li>
871       <span class="toc_section_header"><a href="#section_shading">shading</a></span>
872       <ul class="toc_section">
873         <li>
874           <span class="toc_kind_header">controls</span>
875           <ul class="toc_section">
876             <li
877             ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
878             <li
879             ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
880           </ul>
881         </li>
882         <li>
883           <span class="toc_kind_header">dynamic</span>
884           <ul class="toc_section">
885             <li
886             ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
887           </ul>
888         </li>
889         <li>
890           <span class="toc_kind_header">static</span>
891           <ul class="toc_section">
892             <li
893             ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
894           </ul>
895         </li>
896       </ul> <!-- toc_section -->
897     </li>
898     <li>
899       <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
900       <ul class="toc_section">
901         <li>
902           <span class="toc_kind_header">controls</span>
903           <ul class="toc_section">
904             <li
905             ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
906             <li
907             ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
908             <li
909             ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
910             <li
911             ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
912             <li
913             ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
914             <li
915             ><a href="#controls_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
916           </ul>
917         </li>
918         <li>
919           <span class="toc_kind_header">static</span>
920           <ul class="toc_section">
921
922             <li
923             ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
924             <li
925             ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
926             <li
927             ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
928             <li
929             ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
930             <li
931             ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
932             <li
933             ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
934             <li
935             ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
936             <li
937             ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
938             <li
939             ><a href="#static_android.statistics.info.availableOisDataModes">android.statistics.info.availableOisDataModes</a></li>
940
941           </ul>
942         </li>
943         <li>
944           <span class="toc_kind_header">dynamic</span>
945           <ul class="toc_section">
946             <li
947             ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
948             <li
949             ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
950             <li
951             ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
952             <li
953             ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
954             <li
955             ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
956             <li
957             ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
958             <li
959             ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
960             <li
961             ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
962             <li
963             ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
964             <li
965             ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
966             <li
967             ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
968             <li
969             ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
970             <li
971                 class="toc_deprecated"
972             ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
973             <li
974                 class="toc_deprecated"
975             ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
976             <li
977             ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
978             <li
979             ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
980             <li
981             ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
982             <li
983             ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
984             <li
985             ><a href="#dynamic_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
986             <li
987             ><a href="#dynamic_android.statistics.oisTimestamps">android.statistics.oisTimestamps</a></li>
988             <li
989             ><a href="#dynamic_android.statistics.oisXShifts">android.statistics.oisXShifts</a></li>
990             <li
991             ><a href="#dynamic_android.statistics.oisYShifts">android.statistics.oisYShifts</a></li>
992             <li
993             ><a href="#dynamic_android.statistics.oisSamples">android.statistics.oisSamples</a></li>
994           </ul>
995         </li>
996       </ul> <!-- toc_section -->
997     </li>
998     <li>
999       <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
1000       <ul class="toc_section">
1001         <li>
1002           <span class="toc_kind_header">controls</span>
1003           <ul class="toc_section">
1004             <li
1005             ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1006             <li
1007             ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1008             <li
1009             ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1010             <li
1011             ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
1012             <li
1013             ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
1014             <li
1015             ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
1016             <li
1017             ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1018           </ul>
1019         </li>
1020         <li>
1021           <span class="toc_kind_header">static</span>
1022           <ul class="toc_section">
1023             <li
1024             ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
1025             <li
1026             ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
1027           </ul>
1028         </li>
1029         <li>
1030           <span class="toc_kind_header">dynamic</span>
1031           <ul class="toc_section">
1032             <li
1033             ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1034             <li
1035             ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1036             <li
1037             ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1038             <li
1039             ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1040             <li
1041             ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1042             <li
1043             ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1044             <li
1045             ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1046           </ul>
1047         </li>
1048       </ul> <!-- toc_section -->
1049     </li>
1050     <li>
1051       <span class="toc_section_header"><a href="#section_led">led</a></span>
1052       <ul class="toc_section">
1053         <li>
1054           <span class="toc_kind_header">controls</span>
1055           <ul class="toc_section">
1056             <li
1057             ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1058           </ul>
1059         </li>
1060         <li>
1061           <span class="toc_kind_header">dynamic</span>
1062           <ul class="toc_section">
1063             <li
1064             ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1065           </ul>
1066         </li>
1067         <li>
1068           <span class="toc_kind_header">static</span>
1069           <ul class="toc_section">
1070             <li
1071             ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1072           </ul>
1073         </li>
1074       </ul> <!-- toc_section -->
1075     </li>
1076     <li>
1077       <span class="toc_section_header"><a href="#section_info">info</a></span>
1078       <ul class="toc_section">
1079         <li>
1080           <span class="toc_kind_header">static</span>
1081           <ul class="toc_section">
1082             <li
1083             ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1084             <li
1085             ><a href="#static_android.info.version">android.info.version</a></li>
1086           </ul>
1087         </li>
1088       </ul> <!-- toc_section -->
1089     </li>
1090     <li>
1091       <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1092       <ul class="toc_section">
1093         <li>
1094           <span class="toc_kind_header">controls</span>
1095           <ul class="toc_section">
1096             <li
1097             ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1098           </ul>
1099         </li>
1100         <li>
1101           <span class="toc_kind_header">dynamic</span>
1102           <ul class="toc_section">
1103             <li
1104             ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1105           </ul>
1106         </li>
1107       </ul> <!-- toc_section -->
1108     </li>
1109     <li>
1110       <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1111       <ul class="toc_section">
1112         <li>
1113           <span class="toc_kind_header">dynamic</span>
1114           <ul class="toc_section">
1115             <li
1116             ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1117           </ul>
1118         </li>
1119         <li>
1120           <span class="toc_kind_header">static</span>
1121           <ul class="toc_section">
1122             <li
1123             ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1124           </ul>
1125         </li>
1126       </ul> <!-- toc_section -->
1127     </li>
1128     <li>
1129       <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1130       <ul class="toc_section">
1131         <li>
1132           <span class="toc_kind_header">controls</span>
1133           <ul class="toc_section">
1134             <li
1135             ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1136           </ul>
1137         </li>
1138         <li>
1139           <span class="toc_kind_header">dynamic</span>
1140           <ul class="toc_section">
1141             <li
1142             ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1143           </ul>
1144         </li>
1145         <li>
1146           <span class="toc_kind_header">static</span>
1147           <ul class="toc_section">
1148             <li
1149             ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1150           </ul>
1151         </li>
1152       </ul> <!-- toc_section -->
1153     </li>
1154     <li>
1155       <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1156       <ul class="toc_section">
1157         <li>
1158           <span class="toc_kind_header">static</span>
1159           <ul class="toc_section">
1160             <li
1161             ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1162             <li
1163             ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1164             <li
1165             ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1166             <li
1167             ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1168             <li
1169             ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1170           </ul>
1171         </li>
1172       </ul> <!-- toc_section -->
1173     </li>
1174     <li>
1175       <span class="toc_section_header"><a href="#section_logicalMultiCamera">logicalMultiCamera</a></span>
1176       <ul class="toc_section">
1177         <li>
1178           <span class="toc_kind_header">static</span>
1179           <ul class="toc_section">
1180             <li
1181             ><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a></li>
1182             <li
1183             ><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a></li>
1184           </ul>
1185         </li>
1186       </ul> <!-- toc_section -->
1187     </li>
1188     <li>
1189       <span class="toc_section_header"><a href="#section_distortionCorrection">distortionCorrection</a></span>
1190       <ul class="toc_section">
1191         <li>
1192           <span class="toc_kind_header">controls</span>
1193           <ul class="toc_section">
1194             <li
1195             ><a href="#controls_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li>
1196           </ul>
1197         </li>
1198         <li>
1199           <span class="toc_kind_header">static</span>
1200           <ul class="toc_section">
1201             <li
1202             ><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a></li>
1203           </ul>
1204         </li>
1205         <li>
1206           <span class="toc_kind_header">dynamic</span>
1207           <ul class="toc_section">
1208             <li
1209             ><a href="#dynamic_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li>
1210           </ul>
1211         </li>
1212       </ul> <!-- toc_section -->
1213     </li>
1214   </ul>
1215
1216
1217   <h1>Properties</h1>
1218   <table class="properties">
1219
1220     <thead class="thead_dummy">
1221       <tr>
1222         <th class="th_name">Property Name</th>
1223         <th class="th_type">Type</th>
1224         <th class="th_description">Description</th>
1225         <th class="th_units">Units</th>
1226         <th class="th_range">Range</th>
1227         <th class="th_hal_version">HIDL HAL version</th>
1228         <th class="th_tags">Tags</th>
1229       </tr>
1230     </thead> <!-- so that the first occurrence of thead is not
1231                          above the first occurrence of tr -->
1232 <!-- <namespace name="android"> -->
1233   <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1234
1235
1236       <tr><td colspan="7" class="kind">controls</td></tr>
1237
1238       <thead class="entries_header">
1239         <tr>
1240           <th class="th_name">Property Name</th>
1241           <th class="th_type">Type</th>
1242           <th class="th_description">Description</th>
1243           <th class="th_units">Units</th>
1244           <th class="th_range">Range</th>
1245           <th class="th_hal_version">Initial HIDL HAL version</th>
1246           <th class="th_tags">Tags</th>
1247         </tr>
1248       </thead>
1249
1250       <tbody>
1251
1252         
1253
1254         
1255
1256         
1257
1258         
1259
1260                 
1261           <tr class="entry" id="controls_android.colorCorrection.mode">
1262             <td class="entry_name
1263              " rowspan="5">
1264               android.<wbr/>color<wbr/>Correction.<wbr/>mode
1265             </td>
1266             <td class="entry_type">
1267                 <span class="entry_type_name entry_type_name_enum">byte</span>
1268
1269               <span class="entry_type_visibility"> [public]</span>
1270
1271
1272               <span class="entry_type_hwlevel">[full] </span>
1273
1274
1275
1276                 <ul class="entry_type_enum">
1277                   <li>
1278                     <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1279                     <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1280 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1281 <p>All advanced white balance adjustments (not specified
1282 by our white balance pipeline) must be disabled.<wbr/></p>
1283 <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
1284 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1285 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1286                   </li>
1287                   <li>
1288                     <span class="entry_type_enum_name">FAST (v3.2)</span>
1289                     <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1290 capture rate relative to sensor raw output.<wbr/></p>
1291 <p>Advanced white balance adjustments above and beyond
1292 the specified white balance pipeline may be applied.<wbr/></p>
1293 <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
1294 the camera device uses the last frame's AWB values
1295 (or defaults if AWB has never been run).<wbr/></p></span>
1296                   </li>
1297                   <li>
1298                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1299                     <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1300 quality but the capture rate might be reduced (relative to sensor
1301 raw output rate)</p>
1302 <p>Advanced white balance adjustments above and beyond
1303 the specified white balance pipeline may be applied.<wbr/></p>
1304 <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
1305 the camera device uses the last frame's AWB values
1306 (or defaults if AWB has never been run).<wbr/></p></span>
1307                   </li>
1308                 </ul>
1309
1310             </td> <!-- entry_type -->
1311
1312             <td class="entry_description">
1313               <p>The mode control selects how the image data is converted from the
1314 sensor's native color into linear sRGB color.<wbr/></p>
1315             </td>
1316
1317             <td class="entry_units">
1318             </td>
1319
1320             <td class="entry_range">
1321             </td>
1322
1323             <td class="entry_hal_version">
1324               <p>3.<wbr/>2</p>
1325             </td>
1326
1327             <td class="entry_tags">
1328             </td>
1329
1330           </tr>
1331           <tr class="entries_header">
1332             <th class="th_details" colspan="6">Details</th>
1333           </tr>
1334           <tr class="entry_cont">
1335             <td class="entry_details" colspan="6">
1336               <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
1337 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1338 application controls how the color mapping is performed.<wbr/></p>
1339 <p>We define the expected processing pipeline below.<wbr/> For consistency
1340 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1341 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1342 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1343 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1344 camera device (in the results) and be roughly correct.<wbr/></p>
1345 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1346 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1347 as what was produced by the camera device in the earlier frame.<wbr/></p>
1348 <p>The expected processing pipeline is as follows:</p>
1349 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1350 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1351 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1352 matrix (applied after demosaic).<wbr/></p>
1353 <p>The 4-channel white-balance gains are defined as:</p>
1354 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1355 </code></pre>
1356 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1357 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1358 These may be identical for a given camera device implementation; if
1359 the camera device does not support a separate gain for even/<wbr/>odd green
1360 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1361 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1362 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1363 <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 ]
1364 </code></pre>
1365 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1366 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1367 <p>with colors as follows:</p>
1368 <pre><code>r' = I0r + I1g + I2b
1369 g' = I3r + I4g + I5b
1370 b' = I6r + I7g + I8b
1371 </code></pre>
1372 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1373 values are clipped to fit within the range.<wbr/></p>
1374             </td>
1375           </tr>
1376
1377           <tr class="entries_header">
1378             <th class="th_details" colspan="6">HAL Implementation Details</th>
1379           </tr>
1380           <tr class="entry_cont">
1381             <td class="entry_details" colspan="6">
1382               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1383 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1384 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1385 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1386             </td>
1387           </tr>
1388
1389           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1390            <!-- end of entry -->
1391         
1392                 
1393           <tr class="entry" id="controls_android.colorCorrection.transform">
1394             <td class="entry_name
1395              " rowspan="3">
1396               android.<wbr/>color<wbr/>Correction.<wbr/>transform
1397             </td>
1398             <td class="entry_type">
1399                 <span class="entry_type_name">rational</span>
1400                 <span class="entry_type_container">x</span>
1401
1402                 <span class="entry_type_array">
1403                   3 x 3
1404                 </span>
1405               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1406
1407
1408               <span class="entry_type_hwlevel">[full] </span>
1409
1410
1411                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1412
1413
1414             </td> <!-- entry_type -->
1415
1416             <td class="entry_description">
1417               <p>A color transform matrix to use to transform
1418 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1419             </td>
1420
1421             <td class="entry_units">
1422               Unitless scale factors
1423             </td>
1424
1425             <td class="entry_range">
1426             </td>
1427
1428             <td class="entry_hal_version">
1429               <p>3.<wbr/>2</p>
1430             </td>
1431
1432             <td class="entry_tags">
1433             </td>
1434
1435           </tr>
1436           <tr class="entries_header">
1437             <th class="th_details" colspan="6">Details</th>
1438           </tr>
1439           <tr class="entry_cont">
1440             <td class="entry_details" colspan="6">
1441               <p>This matrix is either set by the camera device when the request
1442 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1443 directly by the application in the request when the
1444 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1445 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1446 for precision issues; the final rounded matrix should be reported back
1447 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1448 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1449 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1450 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1451 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1452             </td>
1453           </tr>
1454
1455
1456           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1457            <!-- end of entry -->
1458         
1459                 
1460           <tr class="entry" id="controls_android.colorCorrection.gains">
1461             <td class="entry_name
1462              " rowspan="5">
1463               android.<wbr/>color<wbr/>Correction.<wbr/>gains
1464             </td>
1465             <td class="entry_type">
1466                 <span class="entry_type_name">float</span>
1467                 <span class="entry_type_container">x</span>
1468
1469                 <span class="entry_type_array">
1470                   4
1471                 </span>
1472               <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1473
1474
1475               <span class="entry_type_hwlevel">[full] </span>
1476
1477
1478                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1479
1480
1481             </td> <!-- entry_type -->
1482
1483             <td class="entry_description">
1484               <p>Gains applying to Bayer raw color channels for
1485 white-balance.<wbr/></p>
1486             </td>
1487
1488             <td class="entry_units">
1489               Unitless gain factors
1490             </td>
1491
1492             <td class="entry_range">
1493             </td>
1494
1495             <td class="entry_hal_version">
1496               <p>3.<wbr/>2</p>
1497             </td>
1498
1499             <td class="entry_tags">
1500             </td>
1501
1502           </tr>
1503           <tr class="entries_header">
1504             <th class="th_details" colspan="6">Details</th>
1505           </tr>
1506           <tr class="entry_cont">
1507             <td class="entry_details" colspan="6">
1508               <p>These per-channel gains are either set by the camera device
1509 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1510 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1511 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1512 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1513 <p>The gains in the result metadata are the gains actually
1514 applied by the camera device to the current frame.<wbr/></p>
1515 <p>The valid range of gains varies on different devices,<wbr/> but gains
1516 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1517 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1518 this can create color artifacts.<wbr/></p>
1519             </td>
1520           </tr>
1521
1522           <tr class="entries_header">
1523             <th class="th_details" colspan="6">HAL Implementation Details</th>
1524           </tr>
1525           <tr class="entry_cont">
1526             <td class="entry_details" colspan="6">
1527               <p>The 4-channel white-balance gains are defined in
1528 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1529 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1530 is the gain for green pixels on the odd rows.<wbr/></p>
1531 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1532 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1533 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1534             </td>
1535           </tr>
1536
1537           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1538            <!-- end of entry -->
1539         
1540                 
1541           <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1542             <td class="entry_name
1543              " rowspan="3">
1544               android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1545             </td>
1546             <td class="entry_type">
1547                 <span class="entry_type_name entry_type_name_enum">byte</span>
1548
1549               <span class="entry_type_visibility"> [public]</span>
1550
1551
1552               <span class="entry_type_hwlevel">[legacy] </span>
1553
1554
1555
1556                 <ul class="entry_type_enum">
1557                   <li>
1558                     <span class="entry_type_enum_name">OFF (v3.2)</span>
1559                     <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1560                   </li>
1561                   <li>
1562                     <span class="entry_type_enum_name">FAST (v3.2)</span>
1563                     <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1564 relative to sensor raw output.<wbr/></p></span>
1565                   </li>
1566                   <li>
1567                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1568                     <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1569 reduced (relative to sensor raw output rate)</p></span>
1570                   </li>
1571                 </ul>
1572
1573             </td> <!-- entry_type -->
1574
1575             <td class="entry_description">
1576               <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1577             </td>
1578
1579             <td class="entry_units">
1580             </td>
1581
1582             <td class="entry_range">
1583               <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1584             </td>
1585
1586             <td class="entry_hal_version">
1587               <p>3.<wbr/>2</p>
1588             </td>
1589
1590             <td class="entry_tags">
1591             </td>
1592
1593           </tr>
1594           <tr class="entries_header">
1595             <th class="th_details" colspan="6">Details</th>
1596           </tr>
1597           <tr class="entry_cont">
1598             <td class="entry_details" colspan="6">
1599               <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1600 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1601 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1602 minimize the chromatic artifacts that may occur along the object boundaries in an
1603 image.<wbr/></p>
1604 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1605 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1606 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1607 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1608 applying aberration correction.<wbr/></p>
1609 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1610             </td>
1611           </tr>
1612
1613
1614           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1615            <!-- end of entry -->
1616         
1617         
1618
1619       <!-- end of kind -->
1620       </tbody>
1621       <tr><td colspan="7" class="kind">dynamic</td></tr>
1622
1623       <thead class="entries_header">
1624         <tr>
1625           <th class="th_name">Property Name</th>
1626           <th class="th_type">Type</th>
1627           <th class="th_description">Description</th>
1628           <th class="th_units">Units</th>
1629           <th class="th_range">Range</th>
1630           <th class="th_hal_version">Initial HIDL HAL version</th>
1631           <th class="th_tags">Tags</th>
1632         </tr>
1633       </thead>
1634
1635       <tbody>
1636
1637         
1638
1639         
1640
1641         
1642
1643         
1644
1645                 
1646           <tr class="entry" id="dynamic_android.colorCorrection.mode">
1647             <td class="entry_name
1648              " rowspan="5">
1649               android.<wbr/>color<wbr/>Correction.<wbr/>mode
1650             </td>
1651             <td class="entry_type">
1652                 <span class="entry_type_name entry_type_name_enum">byte</span>
1653
1654               <span class="entry_type_visibility"> [public]</span>
1655
1656
1657               <span class="entry_type_hwlevel">[full] </span>
1658
1659
1660
1661                 <ul class="entry_type_enum">
1662                   <li>
1663                     <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1664                     <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1665 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1666 <p>All advanced white balance adjustments (not specified
1667 by our white balance pipeline) must be disabled.<wbr/></p>
1668 <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
1669 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1670 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1671                   </li>
1672                   <li>
1673                     <span class="entry_type_enum_name">FAST (v3.2)</span>
1674                     <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1675 capture rate relative to sensor raw output.<wbr/></p>
1676 <p>Advanced white balance adjustments above and beyond
1677 the specified white balance pipeline may be applied.<wbr/></p>
1678 <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
1679 the camera device uses the last frame's AWB values
1680 (or defaults if AWB has never been run).<wbr/></p></span>
1681                   </li>
1682                   <li>
1683                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1684                     <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1685 quality but the capture rate might be reduced (relative to sensor
1686 raw output rate)</p>
1687 <p>Advanced white balance adjustments above and beyond
1688 the specified white balance pipeline may be applied.<wbr/></p>
1689 <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
1690 the camera device uses the last frame's AWB values
1691 (or defaults if AWB has never been run).<wbr/></p></span>
1692                   </li>
1693                 </ul>
1694
1695             </td> <!-- entry_type -->
1696
1697             <td class="entry_description">
1698               <p>The mode control selects how the image data is converted from the
1699 sensor's native color into linear sRGB color.<wbr/></p>
1700             </td>
1701
1702             <td class="entry_units">
1703             </td>
1704
1705             <td class="entry_range">
1706             </td>
1707
1708             <td class="entry_hal_version">
1709               <p>3.<wbr/>2</p>
1710             </td>
1711
1712             <td class="entry_tags">
1713             </td>
1714
1715           </tr>
1716           <tr class="entries_header">
1717             <th class="th_details" colspan="6">Details</th>
1718           </tr>
1719           <tr class="entry_cont">
1720             <td class="entry_details" colspan="6">
1721               <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
1722 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1723 application controls how the color mapping is performed.<wbr/></p>
1724 <p>We define the expected processing pipeline below.<wbr/> For consistency
1725 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1726 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1727 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1728 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1729 camera device (in the results) and be roughly correct.<wbr/></p>
1730 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1731 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1732 as what was produced by the camera device in the earlier frame.<wbr/></p>
1733 <p>The expected processing pipeline is as follows:</p>
1734 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1735 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1736 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1737 matrix (applied after demosaic).<wbr/></p>
1738 <p>The 4-channel white-balance gains are defined as:</p>
1739 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1740 </code></pre>
1741 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1742 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1743 These may be identical for a given camera device implementation; if
1744 the camera device does not support a separate gain for even/<wbr/>odd green
1745 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1746 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1747 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1748 <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 ]
1749 </code></pre>
1750 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1751 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1752 <p>with colors as follows:</p>
1753 <pre><code>r' = I0r + I1g + I2b
1754 g' = I3r + I4g + I5b
1755 b' = I6r + I7g + I8b
1756 </code></pre>
1757 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1758 values are clipped to fit within the range.<wbr/></p>
1759             </td>
1760           </tr>
1761
1762           <tr class="entries_header">
1763             <th class="th_details" colspan="6">HAL Implementation Details</th>
1764           </tr>
1765           <tr class="entry_cont">
1766             <td class="entry_details" colspan="6">
1767               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1768 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1769 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1770 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1771             </td>
1772           </tr>
1773
1774           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1775            <!-- end of entry -->
1776         
1777                 
1778           <tr class="entry" id="dynamic_android.colorCorrection.transform">
1779             <td class="entry_name
1780              " rowspan="3">
1781               android.<wbr/>color<wbr/>Correction.<wbr/>transform
1782             </td>
1783             <td class="entry_type">
1784                 <span class="entry_type_name">rational</span>
1785                 <span class="entry_type_container">x</span>
1786
1787                 <span class="entry_type_array">
1788                   3 x 3
1789                 </span>
1790               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1791
1792
1793               <span class="entry_type_hwlevel">[full] </span>
1794
1795
1796                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1797
1798
1799             </td> <!-- entry_type -->
1800
1801             <td class="entry_description">
1802               <p>A color transform matrix to use to transform
1803 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1804             </td>
1805
1806             <td class="entry_units">
1807               Unitless scale factors
1808             </td>
1809
1810             <td class="entry_range">
1811             </td>
1812
1813             <td class="entry_hal_version">
1814               <p>3.<wbr/>2</p>
1815             </td>
1816
1817             <td class="entry_tags">
1818             </td>
1819
1820           </tr>
1821           <tr class="entries_header">
1822             <th class="th_details" colspan="6">Details</th>
1823           </tr>
1824           <tr class="entry_cont">
1825             <td class="entry_details" colspan="6">
1826               <p>This matrix is either set by the camera device when the request
1827 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1828 directly by the application in the request when the
1829 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1830 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1831 for precision issues; the final rounded matrix should be reported back
1832 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1833 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1834 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1835 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1836 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1837             </td>
1838           </tr>
1839
1840
1841           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1842            <!-- end of entry -->
1843         
1844                 
1845           <tr class="entry" id="dynamic_android.colorCorrection.gains">
1846             <td class="entry_name
1847              " rowspan="5">
1848               android.<wbr/>color<wbr/>Correction.<wbr/>gains
1849             </td>
1850             <td class="entry_type">
1851                 <span class="entry_type_name">float</span>
1852                 <span class="entry_type_container">x</span>
1853
1854                 <span class="entry_type_array">
1855                   4
1856                 </span>
1857               <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1858
1859
1860               <span class="entry_type_hwlevel">[full] </span>
1861
1862
1863                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1864
1865
1866             </td> <!-- entry_type -->
1867
1868             <td class="entry_description">
1869               <p>Gains applying to Bayer raw color channels for
1870 white-balance.<wbr/></p>
1871             </td>
1872
1873             <td class="entry_units">
1874               Unitless gain factors
1875             </td>
1876
1877             <td class="entry_range">
1878             </td>
1879
1880             <td class="entry_hal_version">
1881               <p>3.<wbr/>2</p>
1882             </td>
1883
1884             <td class="entry_tags">
1885             </td>
1886
1887           </tr>
1888           <tr class="entries_header">
1889             <th class="th_details" colspan="6">Details</th>
1890           </tr>
1891           <tr class="entry_cont">
1892             <td class="entry_details" colspan="6">
1893               <p>These per-channel gains are either set by the camera device
1894 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1895 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1896 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1897 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1898 <p>The gains in the result metadata are the gains actually
1899 applied by the camera device to the current frame.<wbr/></p>
1900 <p>The valid range of gains varies on different devices,<wbr/> but gains
1901 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1902 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1903 this can create color artifacts.<wbr/></p>
1904             </td>
1905           </tr>
1906
1907           <tr class="entries_header">
1908             <th class="th_details" colspan="6">HAL Implementation Details</th>
1909           </tr>
1910           <tr class="entry_cont">
1911             <td class="entry_details" colspan="6">
1912               <p>The 4-channel white-balance gains are defined in
1913 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1914 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1915 is the gain for green pixels on the odd rows.<wbr/></p>
1916 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1917 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1918 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1919             </td>
1920           </tr>
1921
1922           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1923            <!-- end of entry -->
1924         
1925                 
1926           <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1927             <td class="entry_name
1928              " rowspan="3">
1929               android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1930             </td>
1931             <td class="entry_type">
1932                 <span class="entry_type_name entry_type_name_enum">byte</span>
1933
1934               <span class="entry_type_visibility"> [public]</span>
1935
1936
1937               <span class="entry_type_hwlevel">[legacy] </span>
1938
1939
1940
1941                 <ul class="entry_type_enum">
1942                   <li>
1943                     <span class="entry_type_enum_name">OFF (v3.2)</span>
1944                     <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1945                   </li>
1946                   <li>
1947                     <span class="entry_type_enum_name">FAST (v3.2)</span>
1948                     <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1949 relative to sensor raw output.<wbr/></p></span>
1950                   </li>
1951                   <li>
1952                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1953                     <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1954 reduced (relative to sensor raw output rate)</p></span>
1955                   </li>
1956                 </ul>
1957
1958             </td> <!-- entry_type -->
1959
1960             <td class="entry_description">
1961               <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1962             </td>
1963
1964             <td class="entry_units">
1965             </td>
1966
1967             <td class="entry_range">
1968               <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1969             </td>
1970
1971             <td class="entry_hal_version">
1972               <p>3.<wbr/>2</p>
1973             </td>
1974
1975             <td class="entry_tags">
1976             </td>
1977
1978           </tr>
1979           <tr class="entries_header">
1980             <th class="th_details" colspan="6">Details</th>
1981           </tr>
1982           <tr class="entry_cont">
1983             <td class="entry_details" colspan="6">
1984               <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1985 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1986 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1987 minimize the chromatic artifacts that may occur along the object boundaries in an
1988 image.<wbr/></p>
1989 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1990 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1991 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1992 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1993 applying aberration correction.<wbr/></p>
1994 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1995             </td>
1996           </tr>
1997
1998
1999           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2000            <!-- end of entry -->
2001         
2002         
2003
2004       <!-- end of kind -->
2005       </tbody>
2006       <tr><td colspan="7" class="kind">static</td></tr>
2007
2008       <thead class="entries_header">
2009         <tr>
2010           <th class="th_name">Property Name</th>
2011           <th class="th_type">Type</th>
2012           <th class="th_description">Description</th>
2013           <th class="th_units">Units</th>
2014           <th class="th_range">Range</th>
2015           <th class="th_hal_version">Initial HIDL HAL version</th>
2016           <th class="th_tags">Tags</th>
2017         </tr>
2018       </thead>
2019
2020       <tbody>
2021
2022         
2023
2024         
2025
2026         
2027
2028         
2029
2030                 
2031           <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
2032             <td class="entry_name
2033              " rowspan="5">
2034               android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
2035             </td>
2036             <td class="entry_type">
2037                 <span class="entry_type_name">byte</span>
2038                 <span class="entry_type_container">x</span>
2039
2040                 <span class="entry_type_array">
2041                   n
2042                 </span>
2043               <span class="entry_type_visibility"> [public as enumList]</span>
2044
2045
2046               <span class="entry_type_hwlevel">[legacy] </span>
2047
2048
2049                 <div class="entry_type_notes">list of enums</div>
2050
2051
2052             </td> <!-- entry_type -->
2053
2054             <td class="entry_description">
2055               <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
2056 supported by this camera device.<wbr/></p>
2057             </td>
2058
2059             <td class="entry_units">
2060             </td>
2061
2062             <td class="entry_range">
2063               <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
2064             </td>
2065
2066             <td class="entry_hal_version">
2067               <p>3.<wbr/>2</p>
2068             </td>
2069
2070             <td class="entry_tags">
2071               <ul class="entry_tags">
2072                   <li><a href="#tag_V1">V1</a></li>
2073               </ul>
2074             </td>
2075
2076           </tr>
2077           <tr class="entries_header">
2078             <th class="th_details" colspan="6">Details</th>
2079           </tr>
2080           <tr class="entry_cont">
2081             <td class="entry_details" colspan="6">
2082               <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
2083 aberration correction modes are available for a device,<wbr/> this list will solely include
2084 OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
2085 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
2086 OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
2087 <p>LEGACY devices will always only support FAST mode.<wbr/></p>
2088             </td>
2089           </tr>
2090
2091           <tr class="entries_header">
2092             <th class="th_details" colspan="6">HAL Implementation Details</th>
2093           </tr>
2094           <tr class="entry_cont">
2095             <td class="entry_details" colspan="6">
2096               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
2097 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
2098 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
2099 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
2100             </td>
2101           </tr>
2102
2103           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2104            <!-- end of entry -->
2105         
2106         
2107
2108       <!-- end of kind -->
2109       </tbody>
2110
2111   <!-- end of section -->
2112   <tr><td colspan="7" id="section_control" class="section">control</td></tr>
2113
2114
2115       <tr><td colspan="7" class="kind">controls</td></tr>
2116
2117       <thead class="entries_header">
2118         <tr>
2119           <th class="th_name">Property Name</th>
2120           <th class="th_type">Type</th>
2121           <th class="th_description">Description</th>
2122           <th class="th_units">Units</th>
2123           <th class="th_range">Range</th>
2124           <th class="th_hal_version">Initial HIDL HAL version</th>
2125           <th class="th_tags">Tags</th>
2126         </tr>
2127       </thead>
2128
2129       <tbody>
2130
2131         
2132
2133         
2134
2135         
2136
2137         
2138
2139                 
2140           <tr class="entry" id="controls_android.control.aeAntibandingMode">
2141             <td class="entry_name
2142              " rowspan="5">
2143               android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2144             </td>
2145             <td class="entry_type">
2146                 <span class="entry_type_name entry_type_name_enum">byte</span>
2147
2148               <span class="entry_type_visibility"> [public]</span>
2149
2150
2151               <span class="entry_type_hwlevel">[legacy] </span>
2152
2153
2154
2155                 <ul class="entry_type_enum">
2156                   <li>
2157                     <span class="entry_type_enum_name">OFF (v3.2)</span>
2158                     <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2159 avoid banding problems.<wbr/></p></span>
2160                   </li>
2161                   <li>
2162                     <span class="entry_type_enum_name">50HZ (v3.2)</span>
2163                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2164 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2165                   </li>
2166                   <li>
2167                     <span class="entry_type_enum_name">60HZ (v3.2)</span>
2168                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2169 avoid banding problems with 60Hz illumination
2170 sources.<wbr/></p></span>
2171                   </li>
2172                   <li>
2173                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
2174                     <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2175 antibanding routine to the current illumination
2176 condition.<wbr/> This is the default mode if AUTO is
2177 available on given camera device.<wbr/></p></span>
2178                   </li>
2179                 </ul>
2180
2181             </td> <!-- entry_type -->
2182
2183             <td class="entry_description">
2184               <p>The desired setting for the camera device's auto-exposure
2185 algorithm's antibanding compensation.<wbr/></p>
2186             </td>
2187
2188             <td class="entry_units">
2189             </td>
2190
2191             <td class="entry_range">
2192               <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2193             </td>
2194
2195             <td class="entry_hal_version">
2196               <p>3.<wbr/>2</p>
2197             </td>
2198
2199             <td class="entry_tags">
2200               <ul class="entry_tags">
2201                   <li><a href="#tag_BC">BC</a></li>
2202               </ul>
2203             </td>
2204
2205           </tr>
2206           <tr class="entries_header">
2207             <th class="th_details" colspan="6">Details</th>
2208           </tr>
2209           <tr class="entry_cont">
2210             <td class="entry_details" colspan="6">
2211               <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2212 lights,<wbr/> flicker at the rate of the power supply frequency
2213 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2214 typically not noticeable to a person,<wbr/> it can be visible to
2215 a camera device.<wbr/> If a camera sets its exposure time to the
2216 wrong value,<wbr/> the flicker may become visible in the
2217 viewfinder as flicker or in a final captured image,<wbr/> as a
2218 set of variable-brightness bands across the image.<wbr/></p>
2219 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
2220 include antibanding routines that ensure that the chosen
2221 exposure value will not cause such banding.<wbr/> The choice of
2222 exposure time depends on the rate of flicker,<wbr/> which the
2223 camera device can detect automatically,<wbr/> or the expected
2224 rate can be selected by the application using this
2225 control.<wbr/></p>
2226 <p>A given camera device may not support all of the possible
2227 options for the antibanding mode.<wbr/> The
2228 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2229 the available modes for a given camera device.<wbr/></p>
2230 <p>AUTO mode is the default if it is available on given
2231 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2232 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2233 and 60HZ will be available.<wbr/></p>
2234 <p>If manual exposure control is enabled (by setting
2235 <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/>
2236 then this setting has no effect,<wbr/> and the application must
2237 ensure it selects exposure times that do not cause banding
2238 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2239 the application in this.<wbr/></p>
2240             </td>
2241           </tr>
2242
2243           <tr class="entries_header">
2244             <th class="th_details" colspan="6">HAL Implementation Details</th>
2245           </tr>
2246           <tr class="entry_cont">
2247             <td class="entry_details" colspan="6">
2248               <p>For all capture request templates,<wbr/> this field must be set
2249 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2250 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
2251 60HZ must be available.<wbr/></p>
2252 <p>If manual exposure control is enabled (by setting
2253 <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/>
2254 then the exposure values provided by the application must not be
2255 adjusted for antibanding.<wbr/></p>
2256             </td>
2257           </tr>
2258
2259           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2260            <!-- end of entry -->
2261         
2262                 
2263           <tr class="entry" id="controls_android.control.aeExposureCompensation">
2264             <td class="entry_name
2265              " rowspan="3">
2266               android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2267             </td>
2268             <td class="entry_type">
2269                 <span class="entry_type_name">int32</span>
2270
2271               <span class="entry_type_visibility"> [public]</span>
2272
2273
2274               <span class="entry_type_hwlevel">[legacy] </span>
2275
2276
2277
2278
2279             </td> <!-- entry_type -->
2280
2281             <td class="entry_description">
2282               <p>Adjustment to auto-exposure (AE) target image
2283 brightness.<wbr/></p>
2284             </td>
2285
2286             <td class="entry_units">
2287               Compensation steps
2288             </td>
2289
2290             <td class="entry_range">
2291               <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2292             </td>
2293
2294             <td class="entry_hal_version">
2295               <p>3.<wbr/>2</p>
2296             </td>
2297
2298             <td class="entry_tags">
2299               <ul class="entry_tags">
2300                   <li><a href="#tag_BC">BC</a></li>
2301               </ul>
2302             </td>
2303
2304           </tr>
2305           <tr class="entries_header">
2306             <th class="th_details" colspan="6">Details</th>
2307           </tr>
2308           <tr class="entry_cont">
2309             <td class="entry_details" colspan="6">
2310               <p>The adjustment is measured as a count of steps,<wbr/> with the
2311 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2312 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2313 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2314 will mean an exposure compensation of +2 EV; -3 will mean an
2315 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2316 of image brightness.<wbr/> Note that this control will only be
2317 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2318 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2319 <p>In the event of exposure compensation value being changed,<wbr/> camera device
2320 may take several frames to reach the newly requested exposure target.<wbr/>
2321 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2322 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
2323 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2324 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2325             </td>
2326           </tr>
2327
2328
2329           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2330            <!-- end of entry -->
2331         
2332                 
2333           <tr class="entry" id="controls_android.control.aeLock">
2334             <td class="entry_name
2335              " rowspan="3">
2336               android.<wbr/>control.<wbr/>ae<wbr/>Lock
2337             </td>
2338             <td class="entry_type">
2339                 <span class="entry_type_name entry_type_name_enum">byte</span>
2340
2341               <span class="entry_type_visibility"> [public as boolean]</span>
2342
2343
2344               <span class="entry_type_hwlevel">[legacy] </span>
2345
2346
2347
2348                 <ul class="entry_type_enum">
2349                   <li>
2350                     <span class="entry_type_enum_name">OFF (v3.2)</span>
2351                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2352 is free to update its parameters.<wbr/></p></span>
2353                   </li>
2354                   <li>
2355                     <span class="entry_type_enum_name">ON (v3.2)</span>
2356                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2357 must not update the exposure and sensitivity parameters
2358 while the lock is active.<wbr/></p>
2359 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2360 will still take effect while auto-exposure is locked.<wbr/></p>
2361 <p>Some rare LEGACY devices may not support
2362 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2363                   </li>
2364                 </ul>
2365
2366             </td> <!-- entry_type -->
2367
2368             <td class="entry_description">
2369               <p>Whether auto-exposure (AE) is currently locked to its latest
2370 calculated values.<wbr/></p>
2371             </td>
2372
2373             <td class="entry_units">
2374             </td>
2375
2376             <td class="entry_range">
2377             </td>
2378
2379             <td class="entry_hal_version">
2380               <p>3.<wbr/>2</p>
2381             </td>
2382
2383             <td class="entry_tags">
2384               <ul class="entry_tags">
2385                   <li><a href="#tag_BC">BC</a></li>
2386               </ul>
2387             </td>
2388
2389           </tr>
2390           <tr class="entries_header">
2391             <th class="th_details" colspan="6">Details</th>
2392           </tr>
2393           <tr class="entry_cont">
2394             <td class="entry_details" colspan="6">
2395               <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2396 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2397 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
2398 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2399 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2400 <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
2401 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2402 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2403 when AE is already locked,<wbr/> the camera device will not change the exposure time
2404 (<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>)
2405 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2406 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2407 <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/>
2408 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2409 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2410 the AE if AE is locked by the camera device internally during precapture metering
2411 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2412 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2413 will never succeed in a sequence of preview requests where AE lock is always set
2414 to <code>false</code>.<wbr/></p>
2415 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2416 get locked do not necessarily correspond to the settings that were present in the
2417 latest capture result received from the camera device,<wbr/> since additional captures
2418 and AE updates may have occurred even before the result was sent out.<wbr/> If an
2419 application is switching between automatic and manual control and wishes to eliminate
2420 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2421 <ol>
2422 <li>Starting in auto-AE mode:</li>
2423 <li>Lock AE</li>
2424 <li>Wait for the first result to be output that has the AE locked</li>
2425 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2426 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2427 </ol>
2428 <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>
2429             </td>
2430           </tr>
2431
2432
2433           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2434            <!-- end of entry -->
2435         
2436                 
2437           <tr class="entry" id="controls_android.control.aeMode">
2438             <td class="entry_name
2439              " rowspan="3">
2440               android.<wbr/>control.<wbr/>ae<wbr/>Mode
2441             </td>
2442             <td class="entry_type">
2443                 <span class="entry_type_name entry_type_name_enum">byte</span>
2444
2445               <span class="entry_type_visibility"> [public]</span>
2446
2447
2448               <span class="entry_type_hwlevel">[legacy] </span>
2449
2450
2451
2452                 <ul class="entry_type_enum">
2453                   <li>
2454                     <span class="entry_type_enum_name">OFF (v3.2)</span>
2455                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2456 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2457 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2458 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2459 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2460 a flash unit for this camera device.<wbr/></p>
2461 <p>Note that auto-white balance (AWB) and auto-focus (AF)
2462 behavior is device dependent when AE is in OFF mode.<wbr/>
2463 To have consistent behavior across different devices,<wbr/>
2464 it is recommended to either set AWB and AF to OFF mode
2465 or lock AWB and AF before setting AE to OFF.<wbr/>
2466 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/>
2467 <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>
2468 for more details.<wbr/></p>
2469 <p>LEGACY devices do not support the OFF mode and will
2470 override attempts to use this value to ON.<wbr/></p></span>
2471                   </li>
2472                   <li>
2473                     <span class="entry_type_enum_name">ON (v3.2)</span>
2474                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2475 with no flash control.<wbr/></p>
2476 <p>The application's values for
2477 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2478 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2479 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2480 application has control over the various
2481 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2482                   </li>
2483                   <li>
2484                     <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
2485                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2486 the camera's flash unit,<wbr/> firing it in low-light
2487 conditions.<wbr/></p>
2488 <p>The flash may be fired during a precapture sequence
2489 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2490 may be fired for captures for which the
2491 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2492 STILL_<wbr/>CAPTURE</p></span>
2493                   </li>
2494                   <li>
2495                     <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
2496                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2497 the camera's flash unit,<wbr/> always firing it for still
2498 captures.<wbr/></p>
2499 <p>The flash may be fired during a precapture sequence
2500 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2501 will always be fired for captures for which the
2502 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2503 STILL_<wbr/>CAPTURE</p></span>
2504                   </li>
2505                   <li>
2506                     <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
2507                     <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2508 reduction.<wbr/></p>
2509 <p>If deemed necessary by the camera device,<wbr/> a red eye
2510 reduction flash will fire during the precapture
2511 sequence.<wbr/></p></span>
2512                   </li>
2513                   <li>
2514                     <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
2515                     <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
2516 <p>It informs the camera device that an external flash has been turned on,<wbr/> and that
2517 metering (and continuous focus if active) should be quickly recaculated to account
2518 for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
2519 <p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
2520 other available AE modes.<wbr/></p>
2521 <p>If the camera device supports AE external flash mode,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must
2522 be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
2523 flash.<wbr/></p></span>
2524                   </li>
2525                 </ul>
2526
2527             </td> <!-- entry_type -->
2528
2529             <td class="entry_description">
2530               <p>The desired mode for the camera device's
2531 auto-exposure routine.<wbr/></p>
2532             </td>
2533
2534             <td class="entry_units">
2535             </td>
2536
2537             <td class="entry_range">
2538               <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2539             </td>
2540
2541             <td class="entry_hal_version">
2542               <p>3.<wbr/>2</p>
2543             </td>
2544
2545             <td class="entry_tags">
2546               <ul class="entry_tags">
2547                   <li><a href="#tag_BC">BC</a></li>
2548               </ul>
2549             </td>
2550
2551           </tr>
2552           <tr class="entries_header">
2553             <th class="th_details" colspan="6">Details</th>
2554           </tr>
2555           <tr class="entry_cont">
2556             <td class="entry_details" colspan="6">
2557               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2558 AUTO.<wbr/></p>
2559 <p>When set to any of the ON modes,<wbr/> the camera device's
2560 auto-exposure routine is enabled,<wbr/> overriding the
2561 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2562 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2563 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2564 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2565 is selected,<wbr/> the camera device's flash unit controls are
2566 also overridden.<wbr/></p>
2567 <p>The FLASH modes are only available if the camera device
2568 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>
2569 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
2570 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2571 <p>When set to any of the ON modes,<wbr/> the values chosen by the
2572 camera device auto-exposure routine for the overridden
2573 fields for a given capture will be available in its
2574 CaptureResult.<wbr/></p>
2575             </td>
2576           </tr>
2577
2578
2579           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2580            <!-- end of entry -->
2581         
2582                 
2583           <tr class="entry" id="controls_android.control.aeRegions">
2584             <td class="entry_name
2585              " rowspan="5">
2586               android.<wbr/>control.<wbr/>ae<wbr/>Regions
2587             </td>
2588             <td class="entry_type">
2589                 <span class="entry_type_name">int32</span>
2590                 <span class="entry_type_container">x</span>
2591
2592                 <span class="entry_type_array">
2593                   5 x area_count
2594                 </span>
2595               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2596
2597
2598
2599
2600
2601
2602             </td> <!-- entry_type -->
2603
2604             <td class="entry_description">
2605               <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2606             </td>
2607
2608             <td class="entry_units">
2609               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2610             </td>
2611
2612             <td class="entry_range">
2613               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2614 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2615             </td>
2616
2617             <td class="entry_hal_version">
2618               <p>3.<wbr/>2</p>
2619             </td>
2620
2621             <td class="entry_tags">
2622               <ul class="entry_tags">
2623                   <li><a href="#tag_BC">BC</a></li>
2624               </ul>
2625             </td>
2626
2627           </tr>
2628           <tr class="entries_header">
2629             <th class="th_details" colspan="6">Details</th>
2630           </tr>
2631           <tr class="entry_cont">
2632             <td class="entry_details" colspan="6">
2633               <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2634 Otherwise will always be present.<wbr/></p>
2635 <p>The maximum number of regions supported by the device is determined by the value
2636 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2637 <p>The coordinate system is based on the active pixel array,<wbr/>
2638 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2639 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2640 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2641 bottom-right pixel in the active pixel array.<wbr/></p>
2642 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2643 for every pixel in the area.<wbr/> This means that a large metering area
2644 with the same weight as a smaller area will have more effect in
2645 the metering result.<wbr/> Metering areas can partially overlap and the
2646 camera device will add the weights in the overlap region.<wbr/></p>
2647 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2648 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2649 weight is ignored.<wbr/></p>
2650 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2651 camera device.<wbr/></p>
2652 <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
2653 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2654 region and output only the intersection rectangle as the metering region in the result
2655 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
2656 not reported in the result metadata.<wbr/></p>
2657             </td>
2658           </tr>
2659
2660           <tr class="entries_header">
2661             <th class="th_details" colspan="6">HAL Implementation Details</th>
2662           </tr>
2663           <tr class="entry_cont">
2664             <td class="entry_details" colspan="6">
2665               <p>The HAL level representation of MeteringRectangle[] is a
2666 int[5 * area_<wbr/>count].<wbr/>
2667 Every five elements represent a metering region of
2668 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2669 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2670 exclusive on xmax and ymax.<wbr/></p>
2671             </td>
2672           </tr>
2673
2674           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2675            <!-- end of entry -->
2676         
2677                 
2678           <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2679             <td class="entry_name
2680              " rowspan="3">
2681               android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2682             </td>
2683             <td class="entry_type">
2684                 <span class="entry_type_name">int32</span>
2685                 <span class="entry_type_container">x</span>
2686
2687                 <span class="entry_type_array">
2688                   2
2689                 </span>
2690               <span class="entry_type_visibility"> [public as rangeInt]</span>
2691
2692
2693               <span class="entry_type_hwlevel">[legacy] </span>
2694
2695
2696
2697
2698             </td> <!-- entry_type -->
2699
2700             <td class="entry_description">
2701               <p>Range over which the auto-exposure routine can
2702 adjust the capture frame rate to maintain good
2703 exposure.<wbr/></p>
2704             </td>
2705
2706             <td class="entry_units">
2707               Frames per second (FPS)
2708             </td>
2709
2710             <td class="entry_range">
2711               <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>
2712             </td>
2713
2714             <td class="entry_hal_version">
2715               <p>3.<wbr/>2</p>
2716             </td>
2717
2718             <td class="entry_tags">
2719               <ul class="entry_tags">
2720                   <li><a href="#tag_BC">BC</a></li>
2721               </ul>
2722             </td>
2723
2724           </tr>
2725           <tr class="entries_header">
2726             <th class="th_details" colspan="6">Details</th>
2727           </tr>
2728           <tr class="entry_cont">
2729             <td class="entry_details" colspan="6">
2730               <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2731 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2732 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2733             </td>
2734           </tr>
2735
2736
2737           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2738            <!-- end of entry -->
2739         
2740                 
2741           <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2742             <td class="entry_name
2743              " rowspan="5">
2744               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2745             </td>
2746             <td class="entry_type">
2747                 <span class="entry_type_name entry_type_name_enum">byte</span>
2748
2749               <span class="entry_type_visibility"> [public]</span>
2750
2751
2752               <span class="entry_type_hwlevel">[limited] </span>
2753
2754
2755
2756                 <ul class="entry_type_enum">
2757                   <li>
2758                     <span class="entry_type_enum_name">IDLE (v3.2)</span>
2759                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2760                   </li>
2761                   <li>
2762                     <span class="entry_type_enum_name">START (v3.2)</span>
2763                     <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2764 by the camera device.<wbr/></p>
2765 <p>The exact effect of the precapture trigger depends on
2766 the current AE mode and state.<wbr/></p></span>
2767                   </li>
2768                   <li>
2769                     <span class="entry_type_enum_name">CANCEL (v3.2)</span>
2770                     <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2771 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2772 initial state.<wbr/></p></span>
2773                   </li>
2774                 </ul>
2775
2776             </td> <!-- entry_type -->
2777
2778             <td class="entry_description">
2779               <p>Whether the camera device will trigger a precapture
2780 metering sequence when it processes this request.<wbr/></p>
2781             </td>
2782
2783             <td class="entry_units">
2784             </td>
2785
2786             <td class="entry_range">
2787             </td>
2788
2789             <td class="entry_hal_version">
2790               <p>3.<wbr/>2</p>
2791             </td>
2792
2793             <td class="entry_tags">
2794               <ul class="entry_tags">
2795                   <li><a href="#tag_BC">BC</a></li>
2796               </ul>
2797             </td>
2798
2799           </tr>
2800           <tr class="entries_header">
2801             <th class="th_details" colspan="6">Details</th>
2802           </tr>
2803           <tr class="entry_cont">
2804             <td class="entry_details" colspan="6">
2805               <p>This entry is normally set to IDLE,<wbr/> or is not
2806 included at all in the request settings.<wbr/> When included and
2807 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2808 precapture metering sequence.<wbr/></p>
2809 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
2810 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2811 If a precapture metering sequence is already completed,<wbr/> and the camera
2812 device has implicitly locked the AE for subsequent still capture,<wbr/> the
2813 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2814 <p>The precapture sequence should be triggered before starting a
2815 high-quality still capture for final metering decisions to
2816 be made,<wbr/> and for firing pre-capture flash pulses to estimate
2817 scene brightness and required final capture flash power,<wbr/> when
2818 the flash is enabled.<wbr/></p>
2819 <p>Normally,<wbr/> this entry should be set to START for only a
2820 single request,<wbr/> and the application should wait until the
2821 sequence completes before starting a new one.<wbr/></p>
2822 <p>When a precapture metering sequence is finished,<wbr/> the camera device
2823 may lock the auto-exposure routine internally to be able to accurately expose the
2824 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2825 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2826 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2827 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
2828 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
2829 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2830 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2831 internally locked AE if the application doesn't submit a still capture request after
2832 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2833 be used in devices that have earlier API levels.<wbr/></p>
2834 <p>The exact effect of auto-exposure (AE) precapture trigger
2835 depends on the current AE mode and state; see
2836 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2837 details.<wbr/></p>
2838 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2839 capturing a high-resolution JPEG image will automatically trigger a
2840 precapture sequence before the high-resolution capture,<wbr/> including
2841 potentially firing a pre-capture flash.<wbr/></p>
2842 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2843 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2844 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2845 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2846 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2847 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
2848 example.<wbr/></p>
2849 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2850 the camera device will complete them in the optimal order for that device.<wbr/></p>
2851             </td>
2852           </tr>
2853
2854           <tr class="entries_header">
2855             <th class="th_details" colspan="6">HAL Implementation Details</th>
2856           </tr>
2857           <tr class="entry_cont">
2858             <td class="entry_details" colspan="6">
2859               <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2860 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
2861 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2862 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2863 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2864             </td>
2865           </tr>
2866
2867           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2868            <!-- end of entry -->
2869         
2870                 
2871           <tr class="entry" id="controls_android.control.afMode">
2872             <td class="entry_name
2873              " rowspan="5">
2874               android.<wbr/>control.<wbr/>af<wbr/>Mode
2875             </td>
2876             <td class="entry_type">
2877                 <span class="entry_type_name entry_type_name_enum">byte</span>
2878
2879               <span class="entry_type_visibility"> [public]</span>
2880
2881
2882               <span class="entry_type_hwlevel">[legacy] </span>
2883
2884
2885
2886                 <ul class="entry_type_enum">
2887                   <li>
2888                     <span class="entry_type_enum_name">OFF (v3.2)</span>
2889                     <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2890 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2891 application.<wbr/></p></span>
2892                   </li>
2893                   <li>
2894                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
2895                     <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2896 <p>In this mode,<wbr/> the lens does not move unless
2897 the autofocus trigger action is called.<wbr/> When that trigger
2898 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2899 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2900 <p>Always supported if lens is not fixed focus.<wbr/></p>
2901 <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
2902 is fixed-focus.<wbr/></p>
2903 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2904 and sets the AF state to INACTIVE.<wbr/></p></span>
2905                   </li>
2906                   <li>
2907                     <span class="entry_type_enum_name">MACRO (v3.2)</span>
2908                     <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2909 <p>In this mode,<wbr/> the lens does not move unless the
2910 autofocus trigger action is called.<wbr/> When that trigger is
2911 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2912 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2913 mode is optimized for focusing on objects very close to
2914 the camera.<wbr/></p>
2915 <p>When that trigger is activated,<wbr/> AF will transition to
2916 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2917 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2918 position to default,<wbr/> and sets the AF state to
2919 INACTIVE.<wbr/></p></span>
2920                   </li>
2921                   <li>
2922                     <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
2923                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2924 position continually to attempt to provide a
2925 constantly-in-focus image stream.<wbr/></p>
2926 <p>The focusing behavior should be suitable for good quality
2927 video recording; typically this means slower focus
2928 movement and no overshoots.<wbr/> When the AF trigger is not
2929 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2930 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2931 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2932 the algorithm should immediately transition into
2933 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2934 lens position until a cancel AF trigger is received.<wbr/></p>
2935 <p>Once cancel is received,<wbr/> the algorithm should transition
2936 back to INACTIVE and resume passive scan.<wbr/> Note that this
2937 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2938 ongoing PASSIVE_<wbr/>SCAN must immediately be
2939 canceled.<wbr/></p></span>
2940                   </li>
2941                   <li>
2942                     <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
2943                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2944 position continually to attempt to provide a
2945 constantly-in-focus image stream.<wbr/></p>
2946 <p>The focusing behavior should be suitable for still image
2947 capture; typically this means focusing as fast as
2948 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2949 algorithm should start in INACTIVE state,<wbr/> and then
2950 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2951 appropriate as it attempts to maintain focus.<wbr/> When the AF
2952 trigger is activated,<wbr/> the algorithm should finish its
2953 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2954 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2955 lens position until a cancel AF trigger is received.<wbr/></p>
2956 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
2957 should transition back to INACTIVE and then act as if it
2958 has just been started.<wbr/></p></span>
2959                   </li>
2960                   <li>
2961                     <span class="entry_type_enum_name">EDOF (v3.2)</span>
2962                     <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2963 <p>The camera device will produce images with an extended
2964 depth of field automatically; no special focusing
2965 operations need to be done before taking a picture.<wbr/></p>
2966 <p>AF triggers are ignored,<wbr/> and the AF state will always be
2967 INACTIVE.<wbr/></p></span>
2968                   </li>
2969                 </ul>
2970
2971             </td> <!-- entry_type -->
2972
2973             <td class="entry_description">
2974               <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2975 mode it is set to.<wbr/></p>
2976             </td>
2977
2978             <td class="entry_units">
2979             </td>
2980
2981             <td class="entry_range">
2982               <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2983             </td>
2984
2985             <td class="entry_hal_version">
2986               <p>3.<wbr/>2</p>
2987             </td>
2988
2989             <td class="entry_tags">
2990               <ul class="entry_tags">
2991                   <li><a href="#tag_BC">BC</a></li>
2992               </ul>
2993             </td>
2994
2995           </tr>
2996           <tr class="entries_header">
2997             <th class="th_details" colspan="6">Details</th>
2998           </tr>
2999           <tr class="entry_cont">
3000             <td class="entry_details" colspan="6">
3001               <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
3002 (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
3003 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
3004 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
3005 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>
3006 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
3007 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
3008 in result metadata.<wbr/></p>
3009             </td>
3010           </tr>
3011
3012           <tr class="entries_header">
3013             <th class="th_details" colspan="6">HAL Implementation Details</th>
3014           </tr>
3015           <tr class="entry_cont">
3016             <td class="entry_details" colspan="6">
3017               <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
3018 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
3019 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
3020 <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
3021 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
3022 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
3023 the same focal plane remains in focus.<wbr/></p>
3024 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
3025 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
3026 (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
3027 same lock behavior as above.<wbr/></p>
3028 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
3029 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/>
3030 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
3031 manual control.<wbr/></p>
3032 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
3033 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
3034 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
3035 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
3036 that will arise on camera modules with open-loop VCMs.<wbr/></p>
3037             </td>
3038           </tr>
3039
3040           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3041            <!-- end of entry -->
3042         
3043                 
3044           <tr class="entry" id="controls_android.control.afRegions">
3045             <td class="entry_name
3046              " rowspan="5">
3047               android.<wbr/>control.<wbr/>af<wbr/>Regions
3048             </td>
3049             <td class="entry_type">
3050                 <span class="entry_type_name">int32</span>
3051                 <span class="entry_type_container">x</span>
3052
3053                 <span class="entry_type_array">
3054                   5 x area_count
3055                 </span>
3056               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3057
3058
3059
3060
3061
3062
3063             </td> <!-- entry_type -->
3064
3065             <td class="entry_description">
3066               <p>List of metering areas to use for auto-focus.<wbr/></p>
3067             </td>
3068
3069             <td class="entry_units">
3070               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3071             </td>
3072
3073             <td class="entry_range">
3074               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3075 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3076             </td>
3077
3078             <td class="entry_hal_version">
3079               <p>3.<wbr/>2</p>
3080             </td>
3081
3082             <td class="entry_tags">
3083               <ul class="entry_tags">
3084                   <li><a href="#tag_BC">BC</a></li>
3085               </ul>
3086             </td>
3087
3088           </tr>
3089           <tr class="entries_header">
3090             <th class="th_details" colspan="6">Details</th>
3091           </tr>
3092           <tr class="entry_cont">
3093             <td class="entry_details" colspan="6">
3094               <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
3095 Otherwise will always be present.<wbr/></p>
3096 <p>The maximum number of focus areas supported by the device is determined by the value
3097 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
3098 <p>The coordinate system is based on the active pixel array,<wbr/>
3099 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3100 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3101 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3102 bottom-right pixel in the active pixel array.<wbr/></p>
3103 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
3104 for every pixel in the area.<wbr/> This means that a large metering area
3105 with the same weight as a smaller area will have more effect in
3106 the metering result.<wbr/> Metering areas can partially overlap and the
3107 camera device will add the weights in the overlap region.<wbr/></p>
3108 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
3109 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
3110 ignored.<wbr/></p>
3111 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3112 camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or
3113 the region selected by the camera device as the focus area of interest.<wbr/></p>
3114 <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
3115 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3116 region and output only the intersection rectangle as the metering region in the result
3117 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3118 not reported in the result metadata.<wbr/></p>
3119             </td>
3120           </tr>
3121
3122           <tr class="entries_header">
3123             <th class="th_details" colspan="6">HAL Implementation Details</th>
3124           </tr>
3125           <tr class="entry_cont">
3126             <td class="entry_details" colspan="6">
3127               <p>The HAL level representation of MeteringRectangle[] is a
3128 int[5 * area_<wbr/>count].<wbr/>
3129 Every five elements represent a metering region of
3130 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3131 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3132 exclusive on xmax and ymax.<wbr/></p>
3133             </td>
3134           </tr>
3135
3136           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3137            <!-- end of entry -->
3138         
3139                 
3140           <tr class="entry" id="controls_android.control.afTrigger">
3141             <td class="entry_name
3142              " rowspan="5">
3143               android.<wbr/>control.<wbr/>af<wbr/>Trigger
3144             </td>
3145             <td class="entry_type">
3146                 <span class="entry_type_name entry_type_name_enum">byte</span>
3147
3148               <span class="entry_type_visibility"> [public]</span>
3149
3150
3151               <span class="entry_type_hwlevel">[legacy] </span>
3152
3153
3154
3155                 <ul class="entry_type_enum">
3156                   <li>
3157                     <span class="entry_type_enum_name">IDLE (v3.2)</span>
3158                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
3159                   </li>
3160                   <li>
3161                     <span class="entry_type_enum_name">START (v3.2)</span>
3162                     <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
3163                   </li>
3164                   <li>
3165                     <span class="entry_type_enum_name">CANCEL (v3.2)</span>
3166                     <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
3167 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
3168                   </li>
3169                 </ul>
3170
3171             </td> <!-- entry_type -->
3172
3173             <td class="entry_description">
3174               <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
3175             </td>
3176
3177             <td class="entry_units">
3178             </td>
3179
3180             <td class="entry_range">
3181             </td>
3182
3183             <td class="entry_hal_version">
3184               <p>3.<wbr/>2</p>
3185             </td>
3186
3187             <td class="entry_tags">
3188               <ul class="entry_tags">
3189                   <li><a href="#tag_BC">BC</a></li>
3190               </ul>
3191             </td>
3192
3193           </tr>
3194           <tr class="entries_header">
3195             <th class="th_details" colspan="6">Details</th>
3196           </tr>
3197           <tr class="entry_cont">
3198             <td class="entry_details" colspan="6">
3199               <p>This entry is normally set to IDLE,<wbr/> or is not
3200 included at all in the request settings.<wbr/></p>
3201 <p>When included and set to START,<wbr/> the camera device will trigger the
3202 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3203 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3204 and return to its initial AF state.<wbr/></p>
3205 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3206 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3207 START for multiple captures in a row means restarting the AF operation over
3208 and over again.<wbr/></p>
3209 <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>
3210 <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>
3211 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3212 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3213 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3214 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3215 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3216             </td>
3217           </tr>
3218
3219           <tr class="entries_header">
3220             <th class="th_details" colspan="6">HAL Implementation Details</th>
3221           </tr>
3222           <tr class="entry_cont">
3223             <td class="entry_details" colspan="6">
3224               <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3225 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
3226 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3227 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3228 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3229             </td>
3230           </tr>
3231
3232           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3233            <!-- end of entry -->
3234         
3235                 
3236           <tr class="entry" id="controls_android.control.awbLock">
3237             <td class="entry_name
3238              " rowspan="3">
3239               android.<wbr/>control.<wbr/>awb<wbr/>Lock
3240             </td>
3241             <td class="entry_type">
3242                 <span class="entry_type_name entry_type_name_enum">byte</span>
3243
3244               <span class="entry_type_visibility"> [public as boolean]</span>
3245
3246
3247               <span class="entry_type_hwlevel">[legacy] </span>
3248
3249
3250
3251                 <ul class="entry_type_enum">
3252                   <li>
3253                     <span class="entry_type_enum_name">OFF (v3.2)</span>
3254                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3255 algorithm is free to update its parameters if in AUTO
3256 mode.<wbr/></p></span>
3257                   </li>
3258                   <li>
3259                     <span class="entry_type_enum_name">ON (v3.2)</span>
3260                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3261 algorithm will not update its parameters while the lock
3262 is active.<wbr/></p></span>
3263                   </li>
3264                 </ul>
3265
3266             </td> <!-- entry_type -->
3267
3268             <td class="entry_description">
3269               <p>Whether auto-white balance (AWB) is currently locked to its
3270 latest calculated values.<wbr/></p>
3271             </td>
3272
3273             <td class="entry_units">
3274             </td>
3275
3276             <td class="entry_range">
3277             </td>
3278
3279             <td class="entry_hal_version">
3280               <p>3.<wbr/>2</p>
3281             </td>
3282
3283             <td class="entry_tags">
3284               <ul class="entry_tags">
3285                   <li><a href="#tag_BC">BC</a></li>
3286               </ul>
3287             </td>
3288
3289           </tr>
3290           <tr class="entries_header">
3291             <th class="th_details" colspan="6">Details</th>
3292           </tr>
3293           <tr class="entry_cont">
3294             <td class="entry_details" colspan="6">
3295               <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3296 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3297 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3298 get locked do not necessarily correspond to the settings that were present in the
3299 latest capture result received from the camera device,<wbr/> since additional captures
3300 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3301 application is switching between automatic and manual control and wishes to eliminate
3302 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3303 <ol>
3304 <li>Starting in auto-AWB mode:</li>
3305 <li>Lock AWB</li>
3306 <li>Wait for the first result to be output that has the AWB locked</li>
3307 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3308 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3309 </ol>
3310 <p>Note that AWB lock is only meaningful when
3311 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3312 AWB is already fixed to a specific setting.<wbr/></p>
3313 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3314             </td>
3315           </tr>
3316
3317
3318           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3319            <!-- end of entry -->
3320         
3321                 
3322           <tr class="entry" id="controls_android.control.awbMode">
3323             <td class="entry_name
3324              " rowspan="3">
3325               android.<wbr/>control.<wbr/>awb<wbr/>Mode
3326             </td>
3327             <td class="entry_type">
3328                 <span class="entry_type_name entry_type_name_enum">byte</span>
3329
3330               <span class="entry_type_visibility"> [public]</span>
3331
3332
3333               <span class="entry_type_hwlevel">[legacy] </span>
3334
3335
3336
3337                 <ul class="entry_type_enum">
3338                   <li>
3339                     <span class="entry_type_enum_name">OFF (v3.2)</span>
3340                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3341 <p>The application-selected color transform matrix
3342 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3343 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3344 device for manual white balance control.<wbr/></p></span>
3345                   </li>
3346                   <li>
3347                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
3348                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3349 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3350 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3351 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3352 values used by the camera device for the transform and gains
3353 will be available in the capture result for this request.<wbr/></p></span>
3354                   </li>
3355                   <li>
3356                     <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
3357                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3358 the camera device uses incandescent light as the assumed scene
3359 illumination for white balance.<wbr/></p>
3360 <p>While the exact white balance transforms are up to the
3361 camera device,<wbr/> they will approximately match the CIE
3362 standard illuminant A.<wbr/></p>
3363 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3364 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3365 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3366 values used by the camera device for the transform and gains
3367 will be available in the capture result for this request.<wbr/></p></span>
3368                   </li>
3369                   <li>
3370                     <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
3371                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3372 the camera device uses fluorescent light as the assumed scene
3373 illumination for white balance.<wbr/></p>
3374 <p>While the exact white balance transforms are up to the
3375 camera device,<wbr/> they will approximately match the CIE
3376 standard illuminant F2.<wbr/></p>
3377 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3378 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3379 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3380 values used by the camera device for the transform and gains
3381 will be available in the capture result for this request.<wbr/></p></span>
3382                   </li>
3383                   <li>
3384                     <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
3385                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3386 the camera device uses warm fluorescent light as the assumed scene
3387 illumination for white balance.<wbr/></p>
3388 <p>While the exact white balance transforms are up to the
3389 camera device,<wbr/> they will approximately match the CIE
3390 standard illuminant F4.<wbr/></p>
3391 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3392 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3393 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3394 values used by the camera device for the transform and gains
3395 will be available in the capture result for this request.<wbr/></p></span>
3396                   </li>
3397                   <li>
3398                     <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
3399                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3400 the camera device uses daylight light as the assumed scene
3401 illumination for white balance.<wbr/></p>
3402 <p>While the exact white balance transforms are up to the
3403 camera device,<wbr/> they will approximately match the CIE
3404 standard illuminant D65.<wbr/></p>
3405 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3406 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3407 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3408 values used by the camera device for the transform and gains
3409 will be available in the capture result for this request.<wbr/></p></span>
3410                   </li>
3411                   <li>
3412                     <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
3413                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3414 the camera device uses cloudy daylight light as the assumed scene
3415 illumination for white balance.<wbr/></p>
3416 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3417 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3418 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3419 values used by the camera device for the transform and gains
3420 will be available in the capture result for this request.<wbr/></p></span>
3421                   </li>
3422                   <li>
3423                     <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
3424                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3425 the camera device uses twilight light as the assumed scene
3426 illumination for white balance.<wbr/></p>
3427 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3428 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3429 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3430 values used by the camera device for the transform and gains
3431 will be available in the capture result for this request.<wbr/></p></span>
3432                   </li>
3433                   <li>
3434                     <span class="entry_type_enum_name">SHADE (v3.2)</span>
3435                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3436 the camera device uses shade light as the assumed scene
3437 illumination for white balance.<wbr/></p>
3438 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3439 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3440 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3441 values used by the camera device for the transform and gains
3442 will be available in the capture result for this request.<wbr/></p></span>
3443                   </li>
3444                 </ul>
3445
3446             </td> <!-- entry_type -->
3447
3448             <td class="entry_description">
3449               <p>Whether auto-white balance (AWB) is currently setting the color
3450 transform fields,<wbr/> and what its illumination target
3451 is.<wbr/></p>
3452             </td>
3453
3454             <td class="entry_units">
3455             </td>
3456
3457             <td class="entry_range">
3458               <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3459             </td>
3460
3461             <td class="entry_hal_version">
3462               <p>3.<wbr/>2</p>
3463             </td>
3464
3465             <td class="entry_tags">
3466               <ul class="entry_tags">
3467                   <li><a href="#tag_BC">BC</a></li>
3468               </ul>
3469             </td>
3470
3471           </tr>
3472           <tr class="entries_header">
3473             <th class="th_details" colspan="6">Details</th>
3474           </tr>
3475           <tr class="entry_cont">
3476             <td class="entry_details" colspan="6">
3477               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3478 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3479 routine is enabled,<wbr/> overriding the application's selected
3480 <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
3481 <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>
3482 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3483 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
3484 setting AE mode to OFF.<wbr/></p>
3485 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3486 routine is disabled.<wbr/> The application manually controls the white
3487 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>
3488 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3489 <p>When set to any other modes,<wbr/> the camera device's auto-white
3490 balance routine is disabled.<wbr/> The camera device uses each
3491 particular illumination target for white balance
3492 adjustment.<wbr/> The application's values for
3493 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3494 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3495 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3496             </td>
3497           </tr>
3498
3499
3500           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3501            <!-- end of entry -->
3502         
3503                 
3504           <tr class="entry" id="controls_android.control.awbRegions">
3505             <td class="entry_name
3506              " rowspan="5">
3507               android.<wbr/>control.<wbr/>awb<wbr/>Regions
3508             </td>
3509             <td class="entry_type">
3510                 <span class="entry_type_name">int32</span>
3511                 <span class="entry_type_container">x</span>
3512
3513                 <span class="entry_type_array">
3514                   5 x area_count
3515                 </span>
3516               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3517
3518
3519
3520
3521
3522
3523             </td> <!-- entry_type -->
3524
3525             <td class="entry_description">
3526               <p>List of metering areas to use for auto-white-balance illuminant
3527 estimation.<wbr/></p>
3528             </td>
3529
3530             <td class="entry_units">
3531               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3532             </td>
3533
3534             <td class="entry_range">
3535               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3536 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3537             </td>
3538
3539             <td class="entry_hal_version">
3540               <p>3.<wbr/>2</p>
3541             </td>
3542
3543             <td class="entry_tags">
3544               <ul class="entry_tags">
3545                   <li><a href="#tag_BC">BC</a></li>
3546               </ul>
3547             </td>
3548
3549           </tr>
3550           <tr class="entries_header">
3551             <th class="th_details" colspan="6">Details</th>
3552           </tr>
3553           <tr class="entry_cont">
3554             <td class="entry_details" colspan="6">
3555               <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3556 Otherwise will always be present.<wbr/></p>
3557 <p>The maximum number of regions supported by the device is determined by the value
3558 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3559 <p>The coordinate system is based on the active pixel array,<wbr/>
3560 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3561 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3562 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3563 bottom-right pixel in the active pixel array.<wbr/></p>
3564 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3565 for every pixel in the area.<wbr/> This means that a large metering area
3566 with the same weight as a smaller area will have more effect in
3567 the metering result.<wbr/> Metering areas can partially overlap and the
3568 camera device will add the weights in the overlap region.<wbr/></p>
3569 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3570 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
3571 0 weight is ignored.<wbr/></p>
3572 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3573 camera device.<wbr/></p>
3574 <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
3575 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3576 region and output only the intersection rectangle as the metering region in the result
3577 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3578 not reported in the result metadata.<wbr/></p>
3579             </td>
3580           </tr>
3581
3582           <tr class="entries_header">
3583             <th class="th_details" colspan="6">HAL Implementation Details</th>
3584           </tr>
3585           <tr class="entry_cont">
3586             <td class="entry_details" colspan="6">
3587               <p>The HAL level representation of MeteringRectangle[] is a
3588 int[5 * area_<wbr/>count].<wbr/>
3589 Every five elements represent a metering region of
3590 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3591 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3592 exclusive on xmax and ymax.<wbr/></p>
3593             </td>
3594           </tr>
3595
3596           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3597            <!-- end of entry -->
3598         
3599                 
3600           <tr class="entry" id="controls_android.control.captureIntent">
3601             <td class="entry_name
3602              " rowspan="3">
3603               android.<wbr/>control.<wbr/>capture<wbr/>Intent
3604             </td>
3605             <td class="entry_type">
3606                 <span class="entry_type_name entry_type_name_enum">byte</span>
3607
3608               <span class="entry_type_visibility"> [public]</span>
3609
3610
3611               <span class="entry_type_hwlevel">[legacy] </span>
3612
3613
3614
3615                 <ul class="entry_type_enum">
3616                   <li>
3617                     <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
3618                     <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3619 categories.<wbr/> The camera device will default to preview-like
3620 behavior.<wbr/></p></span>
3621                   </li>
3622                   <li>
3623                     <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
3624                     <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3625 <p>The precapture trigger may be used to start off a metering
3626 w/<wbr/>flash sequence.<wbr/></p></span>
3627                   </li>
3628                   <li>
3629                     <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
3630                     <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3631 use case.<wbr/></p>
3632 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3633                   </li>
3634                   <li>
3635                     <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
3636                     <span class="entry_type_enum_notes"><p>This request is for a video recording
3637 use case.<wbr/></p></span>
3638                   </li>
3639                   <li>
3640                     <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
3641                     <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3642 image while recording video) use case.<wbr/></p>
3643 <p>The camera device should take the highest-quality image
3644 possible (given the other settings) without disrupting the
3645 frame rate of video recording.<wbr/>  </p></span>
3646                   </li>
3647                   <li>
3648                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
3649                     <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3650 application will stream full-resolution images and
3651 reprocess one or several later for a final
3652 capture.<wbr/></p></span>
3653                   </li>
3654                   <li>
3655                     <span class="entry_type_enum_name">MANUAL (v3.2)</span>
3656                     <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3657 the applications want to directly control the capture parameters.<wbr/></p>
3658 <p>For example,<wbr/> the application may wish to manually control
3659 <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>
3660                   </li>
3661                   <li>
3662                     <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
3663                     <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
3664 the application will use camera and inertial sensor data to
3665 locate and track objects in the world.<wbr/></p>
3666 <p>The camera device auto-exposure routine will limit the exposure time
3667 of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
3668                   </li>
3669                 </ul>
3670
3671             </td> <!-- entry_type -->
3672
3673             <td class="entry_description">
3674               <p>Information to the camera device 3A (auto-exposure,<wbr/>
3675 auto-focus,<wbr/> auto-white balance) routines about the purpose
3676 of this capture,<wbr/> to help the camera device to decide optimal 3A
3677 strategy.<wbr/></p>
3678             </td>
3679
3680             <td class="entry_units">
3681             </td>
3682
3683             <td class="entry_range">
3684             </td>
3685
3686             <td class="entry_hal_version">
3687               <p>3.<wbr/>2</p>
3688             </td>
3689
3690             <td class="entry_tags">
3691               <ul class="entry_tags">
3692                   <li><a href="#tag_BC">BC</a></li>
3693               </ul>
3694             </td>
3695
3696           </tr>
3697           <tr class="entries_header">
3698             <th class="th_details" colspan="6">Details</th>
3699           </tr>
3700           <tr class="entry_cont">
3701             <td class="entry_details" colspan="6">
3702               <p>This control (except for MANUAL) is only effective if
3703 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3704 <p>All intents are supported by all devices,<wbr/> except that:
3705   * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3706 PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
3707   * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3708 MANUAL_<wbr/>SENSOR.<wbr/>
3709   * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3710 MOTION_<wbr/>TRACKING.<wbr/></p>
3711             </td>
3712           </tr>
3713
3714
3715           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3716            <!-- end of entry -->
3717         
3718                 
3719           <tr class="entry" id="controls_android.control.effectMode">
3720             <td class="entry_name
3721              " rowspan="3">
3722               android.<wbr/>control.<wbr/>effect<wbr/>Mode
3723             </td>
3724             <td class="entry_type">
3725                 <span class="entry_type_name entry_type_name_enum">byte</span>
3726
3727               <span class="entry_type_visibility"> [public]</span>
3728
3729
3730               <span class="entry_type_hwlevel">[legacy] </span>
3731
3732
3733
3734                 <ul class="entry_type_enum">
3735                   <li>
3736                     <span class="entry_type_enum_name">OFF (v3.2)</span>
3737                     <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3738                   </li>
3739                   <li>
3740                     <span class="entry_type_enum_name">MONO (v3.2)</span>
3741                     <span class="entry_type_enum_optional">[optional]</span>
3742                     <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3743 a single color.<wbr/></p>
3744 <p>This will typically be grayscale.<wbr/></p></span>
3745                   </li>
3746                   <li>
3747                     <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
3748                     <span class="entry_type_enum_optional">[optional]</span>
3749                     <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3750 are inverted.<wbr/></p></span>
3751                   </li>
3752                   <li>
3753                     <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
3754                     <span class="entry_type_enum_optional">[optional]</span>
3755                     <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3756 image is wholly or partially reversed in
3757 tone.<wbr/></p></span>
3758                   </li>
3759                   <li>
3760                     <span class="entry_type_enum_name">SEPIA (v3.2)</span>
3761                     <span class="entry_type_enum_optional">[optional]</span>
3762                     <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3763 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3764                   </li>
3765                   <li>
3766                     <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
3767                     <span class="entry_type_enum_optional">[optional]</span>
3768                     <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3769 discrete regions of tone rather than a continuous
3770 gradient of tones.<wbr/></p></span>
3771                   </li>
3772                   <li>
3773                     <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
3774                     <span class="entry_type_enum_optional">[optional]</span>
3775                     <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3776 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3777                   </li>
3778                   <li>
3779                     <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
3780                     <span class="entry_type_enum_optional">[optional]</span>
3781                     <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3782 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3783                   </li>
3784                   <li>
3785                     <span class="entry_type_enum_name">AQUA (v3.2)</span>
3786                     <span class="entry_type_enum_optional">[optional]</span>
3787                     <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3788                   </li>
3789                 </ul>
3790
3791             </td> <!-- entry_type -->
3792
3793             <td class="entry_description">
3794               <p>A special color effect to apply.<wbr/></p>
3795             </td>
3796
3797             <td class="entry_units">
3798             </td>
3799
3800             <td class="entry_range">
3801               <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3802             </td>
3803
3804             <td class="entry_hal_version">
3805               <p>3.<wbr/>2</p>
3806             </td>
3807
3808             <td class="entry_tags">
3809               <ul class="entry_tags">
3810                   <li><a href="#tag_BC">BC</a></li>
3811               </ul>
3812             </td>
3813
3814           </tr>
3815           <tr class="entries_header">
3816             <th class="th_details" colspan="6">Details</th>
3817           </tr>
3818           <tr class="entry_cont">
3819             <td class="entry_details" colspan="6">
3820               <p>When this mode is set,<wbr/> a color effect will be applied
3821 to images produced by the camera device.<wbr/> The interpretation
3822 and implementation of these color effects is left to the
3823 implementor of the camera device,<wbr/> and should not be
3824 depended on to be consistent (or present) across all
3825 devices.<wbr/></p>
3826             </td>
3827           </tr>
3828
3829
3830           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3831            <!-- end of entry -->
3832         
3833                 
3834           <tr class="entry" id="controls_android.control.mode">
3835             <td class="entry_name
3836              " rowspan="3">
3837               android.<wbr/>control.<wbr/>mode
3838             </td>
3839             <td class="entry_type">
3840                 <span class="entry_type_name entry_type_name_enum">byte</span>
3841
3842               <span class="entry_type_visibility"> [public]</span>
3843
3844
3845               <span class="entry_type_hwlevel">[legacy] </span>
3846
3847
3848
3849                 <ul class="entry_type_enum">
3850                   <li>
3851                     <span class="entry_type_enum_name">OFF (v3.2)</span>
3852                     <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3853 <p>All control by the device's metering and focusing (3A)
3854 routines is disabled,<wbr/> and no other settings in
3855 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3856 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3857 device to select post-processing values for processing
3858 blocks that do not allow for manual control,<wbr/> or are not
3859 exposed by the camera API.<wbr/></p>
3860 <p>However,<wbr/> the camera device's 3A routines may continue to
3861 collect statistics and update their internal state so that
3862 when control is switched to AUTO mode,<wbr/> good control values
3863 can be immediately applied.<wbr/></p></span>
3864                   </li>
3865                   <li>
3866                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
3867                     <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3868 <p>Manual control of capture parameters is disabled.<wbr/> All
3869 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3870 effect.<wbr/></p></span>
3871                   </li>
3872                   <li>
3873                     <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
3874                     <span class="entry_type_enum_optional">[optional]</span>
3875                     <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3876 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3877 control.<wbr/>afMode controls; the camera device will ignore
3878 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3879 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3880 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3881 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3882 contain some modes other than DISABLED).<wbr/></p></span>
3883                   </li>
3884                   <li>
3885                     <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
3886                     <span class="entry_type_enum_optional">[optional]</span>
3887                     <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3888 used by camera device background auto-exposure,<wbr/> auto-white balance and
3889 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3890 <p>Specifically,<wbr/> the 3A routines are locked to the last
3891 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3892 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3893 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3894 discarded by the camera device.<wbr/></p></span>
3895                   </li>
3896                 </ul>
3897
3898             </td> <!-- entry_type -->
3899
3900             <td class="entry_description">
3901               <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3902 routines.<wbr/></p>
3903             </td>
3904
3905             <td class="entry_units">
3906             </td>
3907
3908             <td class="entry_range">
3909               <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3910             </td>
3911
3912             <td class="entry_hal_version">
3913               <p>3.<wbr/>2</p>
3914             </td>
3915
3916             <td class="entry_tags">
3917               <ul class="entry_tags">
3918                   <li><a href="#tag_BC">BC</a></li>
3919               </ul>
3920             </td>
3921
3922           </tr>
3923           <tr class="entries_header">
3924             <th class="th_details" colspan="6">Details</th>
3925           </tr>
3926           <tr class="entry_cont">
3927             <td class="entry_details" colspan="6">
3928               <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3929 by the camera device is disabled.<wbr/> The application must set the fields for
3930 capture parameters itself.<wbr/></p>
3931 <p>When set to AUTO,<wbr/> the individual algorithm controls in
3932 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>
3933 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3934 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
3935 implements one of the scene mode settings (such as ACTION,<wbr/>
3936 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
3937 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3938 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3939 is that this frame will not be used by camera device background 3A statistics
3940 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3941 where the application doesn't want a 3A manual control capture to affect
3942 the subsequent auto 3A capture results.<wbr/></p>
3943             </td>
3944           </tr>
3945
3946
3947           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3948            <!-- end of entry -->
3949         
3950                 
3951           <tr class="entry" id="controls_android.control.sceneMode">
3952             <td class="entry_name
3953              " rowspan="5">
3954               android.<wbr/>control.<wbr/>scene<wbr/>Mode
3955             </td>
3956             <td class="entry_type">
3957                 <span class="entry_type_name entry_type_name_enum">byte</span>
3958
3959               <span class="entry_type_visibility"> [public]</span>
3960
3961
3962               <span class="entry_type_hwlevel">[legacy] </span>
3963
3964
3965
3966                 <ul class="entry_type_enum">
3967                   <li>
3968                     <span class="entry_type_enum_name">DISABLED (v3.2)</span>
3969                     <span class="entry_type_enum_value">0</span>
3970                     <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3971                   </li>
3972                   <li>
3973                     <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
3974                     <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3975 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3976 auto-exposure routines.<wbr/></p>
3977 <p>If face detection statistics are disabled
3978 (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/>
3979 this should still operate correctly (but will not return
3980 face detection statistics to the framework).<wbr/></p>
3981 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3982 <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>
3983 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3984                   </li>
3985                   <li>
3986                     <span class="entry_type_enum_name">ACTION (v3.2)</span>
3987                     <span class="entry_type_enum_optional">[optional]</span>
3988                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3989 <p>Similar to SPORTS.<wbr/></p></span>
3990                   </li>
3991                   <li>
3992                     <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
3993                     <span class="entry_type_enum_optional">[optional]</span>
3994                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3995                   </li>
3996                   <li>
3997                     <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
3998                     <span class="entry_type_enum_optional">[optional]</span>
3999                     <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
4000                   </li>
4001                   <li>
4002                     <span class="entry_type_enum_name">NIGHT (v3.2)</span>
4003                     <span class="entry_type_enum_optional">[optional]</span>
4004                     <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
4005                   </li>
4006                   <li>
4007                     <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
4008                     <span class="entry_type_enum_optional">[optional]</span>
4009                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
4010 settings.<wbr/></p></span>
4011                   </li>
4012                   <li>
4013                     <span class="entry_type_enum_name">THEATRE (v3.2)</span>
4014                     <span class="entry_type_enum_optional">[optional]</span>
4015                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
4016 remain off.<wbr/></p></span>
4017                   </li>
4018                   <li>
4019                     <span class="entry_type_enum_name">BEACH (v3.2)</span>
4020                     <span class="entry_type_enum_optional">[optional]</span>
4021                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
4022                   </li>
4023                   <li>
4024                     <span class="entry_type_enum_name">SNOW (v3.2)</span>
4025                     <span class="entry_type_enum_optional">[optional]</span>
4026                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
4027                   </li>
4028                   <li>
4029                     <span class="entry_type_enum_name">SUNSET (v3.2)</span>
4030                     <span class="entry_type_enum_optional">[optional]</span>
4031                     <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
4032                   </li>
4033                   <li>
4034                     <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
4035                     <span class="entry_type_enum_optional">[optional]</span>
4036                     <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
4037 device motion (for example: due to hand shake).<wbr/></p></span>
4038                   </li>
4039                   <li>
4040                     <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
4041                     <span class="entry_type_enum_optional">[optional]</span>
4042                     <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
4043                   </li>
4044                   <li>
4045                     <span class="entry_type_enum_name">SPORTS (v3.2)</span>
4046                     <span class="entry_type_enum_optional">[optional]</span>
4047                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
4048 <p>Similar to ACTION.<wbr/></p></span>
4049                   </li>
4050                   <li>
4051                     <span class="entry_type_enum_name">PARTY (v3.2)</span>
4052                     <span class="entry_type_enum_optional">[optional]</span>
4053                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
4054 people.<wbr/></p></span>
4055                   </li>
4056                   <li>
4057                     <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
4058                     <span class="entry_type_enum_optional">[optional]</span>
4059                     <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
4060 is a flame.<wbr/></p></span>
4061                   </li>
4062                   <li>
4063                     <span class="entry_type_enum_name">BARCODE (v3.2)</span>
4064                     <span class="entry_type_enum_optional">[optional]</span>
4065                     <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
4066 for use by camera applications that wish to read the
4067 barcode value.<wbr/></p></span>
4068                   </li>
4069                   <li>
4070                     <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
4071                     <span class="entry_type_enum_deprecated">[deprecated]</span>
4072                     <span class="entry_type_enum_optional">[optional]</span>
4073                     <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>
4074 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
4075 for high speed video recording.<wbr/></p>
4076 <p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
4077 <p>The supported high speed video sizes and fps ranges are specified in
4078 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
4079 output frame rates,<wbr/> the application is only allowed to select video size
4080 and fps range combinations listed in this static metadata.<wbr/> The fps range
4081 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
4082 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
4083 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
4084 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
4085 and post-processing parameters is possible.<wbr/> All other controls operate the
4086 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
4087 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
4088 <ul>
4089 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
4090 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
4091 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
4092 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
4093 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
4094 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
4095 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
4096 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
4097 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
4098 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
4099 </ul>
4100 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
4101 <ul>
4102 <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>
4103 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
4104 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
4105 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
4106 </ul>
4107 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
4108 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
4109 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
4110 the application need check if the video encoder is capable of supporting the
4111 high frame rate for a given video size,<wbr/> or it will end up with lower recording
4112 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
4113 rate will be bounded by the screen refresh rate.<wbr/></p>
4114 <p>The camera device will only support up to 2 output high speed streams
4115 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
4116 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
4117 <ul>
4118 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
4119 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
4120 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>
4121 <li>The stream sizes are selected from the sizes reported by
4122 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
4123 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
4124 </ul>
4125 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
4126 <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/>
4127 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
4128 and the returned capture result metadata will give the fps range choosen
4129 by the camera device.<wbr/></p>
4130 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
4131 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
4132 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
4133                   </li>
4134                   <li>
4135                     <span class="entry_type_enum_name">HDR (v3.2)</span>
4136                     <span class="entry_type_enum_optional">[optional]</span>
4137                     <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
4138 <p>In this scene mode,<wbr/> the camera device captures images
4139 that keep a larger range of scene illumination levels
4140 visible in the final image.<wbr/> For example,<wbr/> when taking a
4141 picture of a object in front of a bright window,<wbr/> both
4142 the object and the scene through the window may be
4143 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
4144 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
4145 HDR mode generally takes much longer to capture a single
4146 image,<wbr/> has no user control,<wbr/> and may have other artifacts
4147 depending on the HDR method used.<wbr/></p>
4148 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
4149 than regular captures.<wbr/></p>
4150 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
4151 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
4152 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
4153 using a high dynamic range capture technique.<wbr/>  On LEGACY
4154 devices,<wbr/> captures that target a JPEG-format output will
4155 be captured with HDR,<wbr/> and the capture intent is not
4156 relevant.<wbr/></p>
4157 <p>The HDR capture may involve the device capturing a burst
4158 of images internally and combining them into one,<wbr/> or it
4159 may involve the device using specialized high dynamic
4160 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
4161 produced in response to a capture request submitted
4162 while in HDR mode.<wbr/></p>
4163 <p>Since substantial post-processing is generally needed to
4164 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
4165 outputs are supported for LIMITED/<wbr/>FULL device HDR
4166 captures,<wbr/> and only JPEG outputs are supported for LEGACY
4167 HDR captures.<wbr/> Using a RAW output for HDR capture is not
4168 supported.<wbr/></p>
4169 <p>Some devices may also support always-on HDR,<wbr/> which
4170 applies HDR processing at full frame rate.<wbr/>  For these
4171 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
4172 produce an HDR output with no frame rate impact compared
4173 to normal operation,<wbr/> though the quality may be lower
4174 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
4175 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
4176 or capture intents,<wbr/> the images captured will be as if
4177 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
4178                   </li>
4179                   <li>
4180                     <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (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_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
4184 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
4185 under low light conditions.<wbr/></p>
4186 <p>The camera device may be tuned to expose the images in a reduced
4187 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
4188 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/>
4189 the camera device auto-exposure routine tuning process may limit the actual
4190 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
4191 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
4192 low light may be under-exposed when the sensor max exposure time (bounded by the
4193 <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
4194 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
4195 camera device auto-exposure routine to increase the sensitivity up to the max
4196 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
4197 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
4198 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
4199 recommended that the application only use this scene mode when it is capable of
4200 reducing the noise level of the captured images.<wbr/></p>
4201 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4202 <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>
4203 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
4204                   </li>
4205                   <li>
4206                     <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
4207                     <span class="entry_type_enum_optional">[optional]</span>
4208                     <span class="entry_type_enum_hidden">[hidden]</span>
4209                     <span class="entry_type_enum_value">100</span>
4210                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4211 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4212 customized scene modes.<wbr/></p></span>
4213                   </li>
4214                   <li>
4215                     <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
4216                     <span class="entry_type_enum_optional">[optional]</span>
4217                     <span class="entry_type_enum_hidden">[hidden]</span>
4218                     <span class="entry_type_enum_value">127</span>
4219                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4220 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4221 customized scene modes.<wbr/></p></span>
4222                   </li>
4223                 </ul>
4224
4225             </td> <!-- entry_type -->
4226
4227             <td class="entry_description">
4228               <p>Control for which scene mode is currently active.<wbr/></p>
4229             </td>
4230
4231             <td class="entry_units">
4232             </td>
4233
4234             <td class="entry_range">
4235               <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
4236             </td>
4237
4238             <td class="entry_hal_version">
4239               <p>3.<wbr/>2</p>
4240             </td>
4241
4242             <td class="entry_tags">
4243               <ul class="entry_tags">
4244                   <li><a href="#tag_BC">BC</a></li>
4245               </ul>
4246             </td>
4247
4248           </tr>
4249           <tr class="entries_header">
4250             <th class="th_details" colspan="6">Details</th>
4251           </tr>
4252           <tr class="entry_cont">
4253             <td class="entry_details" colspan="6">
4254               <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4255 capture settings.<wbr/></p>
4256 <p>This is the mode that that is active when
4257 <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
4258 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>
4259 while in use.<wbr/></p>
4260 <p>The interpretation and implementation of these scene modes is left
4261 to the implementor of the camera device.<wbr/> Their behavior will not be
4262 consistent across all devices,<wbr/> and any given device may only implement
4263 a subset of these modes.<wbr/></p>
4264             </td>
4265           </tr>
4266
4267           <tr class="entries_header">
4268             <th class="th_details" colspan="6">HAL Implementation Details</th>
4269           </tr>
4270           <tr class="entry_cont">
4271             <td class="entry_details" colspan="6">
4272               <p>HAL implementations that include scene modes are expected to provide
4273 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4274 <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
4275 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4276 <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
4277 HAL must list supported video size and fps range in
4278 <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/>
4279 if the HAL has two different sensor configurations for normal streaming mode and high
4280 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
4281 HAL may have to switch between different sensor modes.<wbr/>  This mode is deprecated in legacy
4282 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4283 <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
4284 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4285             </td>
4286           </tr>
4287
4288           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4289            <!-- end of entry -->
4290         
4291                 
4292           <tr class="entry" id="controls_android.control.videoStabilizationMode">
4293             <td class="entry_name
4294              " rowspan="3">
4295               android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4296             </td>
4297             <td class="entry_type">
4298                 <span class="entry_type_name entry_type_name_enum">byte</span>
4299
4300               <span class="entry_type_visibility"> [public]</span>
4301
4302
4303               <span class="entry_type_hwlevel">[legacy] </span>
4304
4305
4306
4307                 <ul class="entry_type_enum">
4308                   <li>
4309                     <span class="entry_type_enum_name">OFF (v3.2)</span>
4310                     <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4311                   </li>
4312                   <li>
4313                     <span class="entry_type_enum_name">ON (v3.2)</span>
4314                     <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4315                   </li>
4316                 </ul>
4317
4318             </td> <!-- entry_type -->
4319
4320             <td class="entry_description">
4321               <p>Whether video stabilization is
4322 active.<wbr/></p>
4323             </td>
4324
4325             <td class="entry_units">
4326             </td>
4327
4328             <td class="entry_range">
4329             </td>
4330
4331             <td class="entry_hal_version">
4332               <p>3.<wbr/>2</p>
4333             </td>
4334
4335             <td class="entry_tags">
4336               <ul class="entry_tags">
4337                   <li><a href="#tag_BC">BC</a></li>
4338               </ul>
4339             </td>
4340
4341           </tr>
4342           <tr class="entries_header">
4343             <th class="th_details" colspan="6">Details</th>
4344           </tr>
4345           <tr class="entry_cont">
4346             <td class="entry_details" colspan="6">
4347               <p>Video stabilization automatically warps images from
4348 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4349 <p>If enabled,<wbr/> video stabilization can modify the
4350 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4351 <p>Switching between different video stabilization modes may take several
4352 frames to initialize,<wbr/> the camera device will report the current mode
4353 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4354 the video stabilization modes in the first several capture results may
4355 still be "OFF",<wbr/> and it will become "ON" when the initialization is
4356 done.<wbr/></p>
4357 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4358 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4359 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4360 the recording resolution is less than or equal to 1920 x 1080 (width less than
4361 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4362 frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
4363 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4364 OFF if the recording output is not stabilized,<wbr/> or if there are no output
4365 Surface types that can be stabilized.<wbr/></p>
4366 <p>If a camera device supports both this mode and OIS
4367 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4368 produce undesirable interaction,<wbr/> so it is recommended not to enable
4369 both at the same time.<wbr/></p>
4370             </td>
4371           </tr>
4372
4373
4374           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4375            <!-- end of entry -->
4376         
4377                 
4378           <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
4379             <td class="entry_name
4380              " rowspan="3">
4381               android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
4382             </td>
4383             <td class="entry_type">
4384                 <span class="entry_type_name">int32</span>
4385
4386               <span class="entry_type_visibility"> [public]</span>
4387
4388
4389
4390
4391
4392
4393             </td> <!-- entry_type -->
4394
4395             <td class="entry_description">
4396               <p>The amount of additional sensitivity boost applied to output images
4397 after RAW sensor data is captured.<wbr/></p>
4398             </td>
4399
4400             <td class="entry_units">
4401               ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
4402             </td>
4403
4404             <td class="entry_range">
4405               <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
4406             </td>
4407
4408             <td class="entry_hal_version">
4409               <p>3.<wbr/>2</p>
4410             </td>
4411
4412             <td class="entry_tags">
4413             </td>
4414
4415           </tr>
4416           <tr class="entries_header">
4417             <th class="th_details" colspan="6">Details</th>
4418           </tr>
4419           <tr class="entry_cont">
4420             <td class="entry_details" colspan="6">
4421               <p>Some camera devices support additional digital sensitivity boosting in the
4422 camera processing pipeline after sensor RAW image is captured.<wbr/>
4423 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
4424 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
4425 <p>This key will be <code>null</code> for devices that do not support any RAW format
4426 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
4427 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
4428 list <code>100</code> in this key.<wbr/></p>
4429 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
4430 boost to the nearest supported value.<wbr/>
4431 The final boost value used will be available in the output capture result.<wbr/></p>
4432 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
4433 of such device will have the total sensitivity of
4434 <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>
4435 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
4436 <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
4437 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
4438             </td>
4439           </tr>
4440
4441
4442           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4443            <!-- end of entry -->
4444         
4445                 
4446           <tr class="entry" id="controls_android.control.enableZsl">
4447             <td class="entry_name
4448              " rowspan="5">
4449               android.<wbr/>control.<wbr/>enable<wbr/>Zsl
4450             </td>
4451             <td class="entry_type">
4452                 <span class="entry_type_name entry_type_name_enum">byte</span>
4453
4454               <span class="entry_type_visibility"> [public as boolean]</span>
4455
4456
4457
4458
4459
4460                 <ul class="entry_type_enum">
4461                   <li>
4462                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
4463                     <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
4464 after previous requests.<wbr/></p></span>
4465                   </li>
4466                   <li>
4467                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
4468                     <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
4469 captured before previous requests.<wbr/></p></span>
4470                   </li>
4471                 </ul>
4472
4473             </td> <!-- entry_type -->
4474
4475             <td class="entry_description">
4476               <p>Allow camera device to enable zero-shutter-lag mode for requests with
4477 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
4478             </td>
4479
4480             <td class="entry_units">
4481             </td>
4482
4483             <td class="entry_range">
4484             </td>
4485
4486             <td class="entry_hal_version">
4487               <p>3.<wbr/>2</p>
4488             </td>
4489
4490             <td class="entry_tags">
4491             </td>
4492
4493           </tr>
4494           <tr class="entries_header">
4495             <th class="th_details" colspan="6">Details</th>
4496           </tr>
4497           <tr class="entry_cont">
4498             <td class="entry_details" colspan="6">
4499               <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
4500 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
4501 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
4502 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
4503 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
4504 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
4505 capture intents.<wbr/></p>
4506 <p>For example,<wbr/> when requests are submitted in the following order:
4507   Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
4508   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>
4509 <p>The output images for request B may have contents captured before the output images for
4510 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
4511 request A.<wbr/></p>
4512 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
4513 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
4514 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
4515 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
4516 <code>false</code> if present.<wbr/></p>
4517 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
4518 capture templates is always <code>false</code> if present.<wbr/></p>
4519 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
4520             </td>
4521           </tr>
4522
4523           <tr class="entries_header">
4524             <th class="th_details" colspan="6">HAL Implementation Details</th>
4525           </tr>
4526           <tr class="entry_cont">
4527             <td class="entry_details" colspan="6">
4528               <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
4529 capture intent.<wbr/></p>
4530             </td>
4531           </tr>
4532
4533           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4534            <!-- end of entry -->
4535         
4536         
4537
4538       <!-- end of kind -->
4539       </tbody>
4540       <tr><td colspan="7" class="kind">static</td></tr>
4541
4542       <thead class="entries_header">
4543         <tr>
4544           <th class="th_name">Property Name</th>
4545           <th class="th_type">Type</th>
4546           <th class="th_description">Description</th>
4547           <th class="th_units">Units</th>
4548           <th class="th_range">Range</th>
4549           <th class="th_hal_version">Initial HIDL HAL version</th>
4550           <th class="th_tags">Tags</th>
4551         </tr>
4552       </thead>
4553
4554       <tbody>
4555
4556         
4557
4558         
4559
4560         
4561
4562         
4563
4564                 
4565           <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4566             <td class="entry_name
4567              " rowspan="3">
4568               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4569             </td>
4570             <td class="entry_type">
4571                 <span class="entry_type_name">byte</span>
4572                 <span class="entry_type_container">x</span>
4573
4574                 <span class="entry_type_array">
4575                   n
4576                 </span>
4577               <span class="entry_type_visibility"> [public as enumList]</span>
4578
4579
4580               <span class="entry_type_hwlevel">[legacy] </span>
4581
4582
4583                 <div class="entry_type_notes">list of enums</div>
4584
4585
4586             </td> <!-- entry_type -->
4587
4588             <td class="entry_description">
4589               <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
4590 supported by this camera device.<wbr/></p>
4591             </td>
4592
4593             <td class="entry_units">
4594             </td>
4595
4596             <td class="entry_range">
4597               <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4598             </td>
4599
4600             <td class="entry_hal_version">
4601               <p>3.<wbr/>2</p>
4602             </td>
4603
4604             <td class="entry_tags">
4605               <ul class="entry_tags">
4606                   <li><a href="#tag_BC">BC</a></li>
4607               </ul>
4608             </td>
4609
4610           </tr>
4611           <tr class="entries_header">
4612             <th class="th_details" colspan="6">Details</th>
4613           </tr>
4614           <tr class="entry_cont">
4615             <td class="entry_details" colspan="6">
4616               <p>Not all of the auto-exposure anti-banding modes may be
4617 supported by a given camera device.<wbr/> This field lists the
4618 valid anti-banding modes that the application may request
4619 for this camera device with the
4620 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4621             </td>
4622           </tr>
4623
4624
4625           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4626            <!-- end of entry -->
4627         
4628                 
4629           <tr class="entry" id="static_android.control.aeAvailableModes">
4630             <td class="entry_name
4631              " rowspan="3">
4632               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4633             </td>
4634             <td class="entry_type">
4635                 <span class="entry_type_name">byte</span>
4636                 <span class="entry_type_container">x</span>
4637
4638                 <span class="entry_type_array">
4639                   n
4640                 </span>
4641               <span class="entry_type_visibility"> [public as enumList]</span>
4642
4643
4644               <span class="entry_type_hwlevel">[legacy] </span>
4645
4646
4647                 <div class="entry_type_notes">list of enums</div>
4648
4649
4650             </td> <!-- entry_type -->
4651
4652             <td class="entry_description">
4653               <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
4654 device.<wbr/></p>
4655             </td>
4656
4657             <td class="entry_units">
4658             </td>
4659
4660             <td class="entry_range">
4661               <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4662             </td>
4663
4664             <td class="entry_hal_version">
4665               <p>3.<wbr/>2</p>
4666             </td>
4667
4668             <td class="entry_tags">
4669               <ul class="entry_tags">
4670                   <li><a href="#tag_BC">BC</a></li>
4671               </ul>
4672             </td>
4673
4674           </tr>
4675           <tr class="entries_header">
4676             <th class="th_details" colspan="6">Details</th>
4677           </tr>
4678           <tr class="entry_cont">
4679             <td class="entry_details" colspan="6">
4680               <p>Not all the auto-exposure modes may be supported by a
4681 given camera device,<wbr/> especially if no flash unit is
4682 available.<wbr/> This entry lists the valid modes for
4683 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4684 <p>All camera devices support ON,<wbr/> and all camera devices with flash
4685 units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4686 <p>FULL mode camera devices always support OFF mode,<wbr/>
4687 which enables application control of camera exposure time,<wbr/>
4688 sensitivity,<wbr/> and frame duration.<wbr/></p>
4689 <p>LEGACY mode camera devices never support OFF mode.<wbr/>
4690 LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4691 capability.<wbr/></p>
4692             </td>
4693           </tr>
4694
4695
4696           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4697            <!-- end of entry -->
4698         
4699                 
4700           <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4701             <td class="entry_name
4702              " rowspan="3">
4703               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4704             </td>
4705             <td class="entry_type">
4706                 <span class="entry_type_name">int32</span>
4707                 <span class="entry_type_container">x</span>
4708
4709                 <span class="entry_type_array">
4710                   2 x n
4711                 </span>
4712               <span class="entry_type_visibility"> [public as rangeInt]</span>
4713
4714
4715               <span class="entry_type_hwlevel">[legacy] </span>
4716
4717
4718                 <div class="entry_type_notes">list of pairs of frame rates</div>
4719
4720
4721             </td> <!-- entry_type -->
4722
4723             <td class="entry_description">
4724               <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
4725 this camera device.<wbr/></p>
4726             </td>
4727
4728             <td class="entry_units">
4729               Frames per second (FPS)
4730             </td>
4731
4732             <td class="entry_range">
4733             </td>
4734
4735             <td class="entry_hal_version">
4736               <p>3.<wbr/>2</p>
4737             </td>
4738
4739             <td class="entry_tags">
4740               <ul class="entry_tags">
4741                   <li><a href="#tag_BC">BC</a></li>
4742               </ul>
4743             </td>
4744
4745           </tr>
4746           <tr class="entries_header">
4747             <th class="th_details" colspan="6">Details</th>
4748           </tr>
4749           <tr class="entry_cont">
4750             <td class="entry_details" colspan="6">
4751               <p>For devices at the LEGACY level or above:</p>
4752 <ul>
4753 <li>
4754 <p>For constant-framerate recording,<wbr/> for each normal
4755 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4756 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4757 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4758 the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4759 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4760 supported by the device and has
4761 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4762 always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4763 </li>
4764 <li>
4765 <p>Also,<wbr/> a camera device must either not support any
4766 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4767 or support at least one
4768 normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4769 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> &gt;= 24.<wbr/></p>
4770 </li>
4771 </ul>
4772 <p>For devices at the LIMITED level or above:</p>
4773 <ul>
4774 <li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4775 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
4776 maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4777 </ul>
4778             </td>
4779           </tr>
4780
4781
4782           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4783            <!-- end of entry -->
4784         
4785                 
4786           <tr class="entry" id="static_android.control.aeCompensationRange">
4787             <td class="entry_name
4788              " rowspan="1">
4789               android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4790             </td>
4791             <td class="entry_type">
4792                 <span class="entry_type_name">int32</span>
4793                 <span class="entry_type_container">x</span>
4794
4795                 <span class="entry_type_array">
4796                   2
4797                 </span>
4798               <span class="entry_type_visibility"> [public as rangeInt]</span>
4799
4800
4801               <span class="entry_type_hwlevel">[legacy] </span>
4802
4803
4804
4805
4806             </td> <!-- entry_type -->
4807
4808             <td class="entry_description">
4809               <p>Maximum and minimum exposure compensation values for
4810 <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/>
4811 that are supported by this camera device.<wbr/></p>
4812             </td>
4813
4814             <td class="entry_units">
4815             </td>
4816
4817             <td class="entry_range">
4818               <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4819 <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4820 compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4821 <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>
4822 <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>
4823 <p>LEGACY devices may support a smaller range than this.<wbr/></p>
4824             </td>
4825
4826             <td class="entry_hal_version">
4827               <p>3.<wbr/>2</p>
4828             </td>
4829
4830             <td class="entry_tags">
4831               <ul class="entry_tags">
4832                   <li><a href="#tag_BC">BC</a></li>
4833               </ul>
4834             </td>
4835
4836           </tr>
4837
4838
4839           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4840            <!-- end of entry -->
4841         
4842                 
4843           <tr class="entry" id="static_android.control.aeCompensationStep">
4844             <td class="entry_name
4845              " rowspan="5">
4846               android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4847             </td>
4848             <td class="entry_type">
4849                 <span class="entry_type_name">rational</span>
4850
4851               <span class="entry_type_visibility"> [public]</span>
4852
4853
4854               <span class="entry_type_hwlevel">[legacy] </span>
4855
4856
4857
4858
4859             </td> <!-- entry_type -->
4860
4861             <td class="entry_description">
4862               <p>Smallest step by which the exposure compensation
4863 can be changed.<wbr/></p>
4864             </td>
4865
4866             <td class="entry_units">
4867               Exposure Value (EV)
4868             </td>
4869
4870             <td class="entry_range">
4871             </td>
4872
4873             <td class="entry_hal_version">
4874               <p>3.<wbr/>2</p>
4875             </td>
4876
4877             <td class="entry_tags">
4878               <ul class="entry_tags">
4879                   <li><a href="#tag_BC">BC</a></li>
4880               </ul>
4881             </td>
4882
4883           </tr>
4884           <tr class="entries_header">
4885             <th class="th_details" colspan="6">Details</th>
4886           </tr>
4887           <tr class="entry_cont">
4888             <td class="entry_details" colspan="6">
4889               <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
4890 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
4891 that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4892 <p>One unit of EV compensation changes the brightness of the captured image by a factor
4893 of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4894             </td>
4895           </tr>
4896
4897           <tr class="entries_header">
4898             <th class="th_details" colspan="6">HAL Implementation Details</th>
4899           </tr>
4900           <tr class="entry_cont">
4901             <td class="entry_details" colspan="6">
4902               <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4903             </td>
4904           </tr>
4905
4906           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4907            <!-- end of entry -->
4908         
4909                 
4910           <tr class="entry" id="static_android.control.afAvailableModes">
4911             <td class="entry_name
4912              " rowspan="3">
4913               android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4914             </td>
4915             <td class="entry_type">
4916                 <span class="entry_type_name">byte</span>
4917                 <span class="entry_type_container">x</span>
4918
4919                 <span class="entry_type_array">
4920                   n
4921                 </span>
4922               <span class="entry_type_visibility"> [public as enumList]</span>
4923
4924
4925               <span class="entry_type_hwlevel">[legacy] </span>
4926
4927
4928                 <div class="entry_type_notes">List of enums</div>
4929
4930
4931             </td> <!-- entry_type -->
4932
4933             <td class="entry_description">
4934               <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4935 supported by this camera device.<wbr/></p>
4936             </td>
4937
4938             <td class="entry_units">
4939             </td>
4940
4941             <td class="entry_range">
4942               <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4943             </td>
4944
4945             <td class="entry_hal_version">
4946               <p>3.<wbr/>2</p>
4947             </td>
4948
4949             <td class="entry_tags">
4950               <ul class="entry_tags">
4951                   <li><a href="#tag_BC">BC</a></li>
4952               </ul>
4953             </td>
4954
4955           </tr>
4956           <tr class="entries_header">
4957             <th class="th_details" colspan="6">Details</th>
4958           </tr>
4959           <tr class="entry_cont">
4960             <td class="entry_details" colspan="6">
4961               <p>Not all the auto-focus modes may be supported by a
4962 given camera device.<wbr/> This entry lists the valid modes for
4963 <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4964 <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4965 camera devices with adjustable focuser units
4966 (<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>
4967 <p>LEGACY devices will support OFF mode only if they support
4968 focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4969 <code>0.<wbr/>0f</code>).<wbr/></p>
4970             </td>
4971           </tr>
4972
4973
4974           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4975            <!-- end of entry -->
4976         
4977                 
4978           <tr class="entry" id="static_android.control.availableEffects">
4979             <td class="entry_name
4980              " rowspan="3">
4981               android.<wbr/>control.<wbr/>available<wbr/>Effects
4982             </td>
4983             <td class="entry_type">
4984                 <span class="entry_type_name">byte</span>
4985                 <span class="entry_type_container">x</span>
4986
4987                 <span class="entry_type_array">
4988                   n
4989                 </span>
4990               <span class="entry_type_visibility"> [public as enumList]</span>
4991
4992
4993               <span class="entry_type_hwlevel">[legacy] </span>
4994
4995
4996                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4997
4998
4999             </td> <!-- entry_type -->
5000
5001             <td class="entry_description">
5002               <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
5003 device.<wbr/></p>
5004             </td>
5005
5006             <td class="entry_units">
5007             </td>
5008
5009             <td class="entry_range">
5010               <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
5011             </td>
5012
5013             <td class="entry_hal_version">
5014               <p>3.<wbr/>2</p>
5015             </td>
5016
5017             <td class="entry_tags">
5018               <ul class="entry_tags">
5019                   <li><a href="#tag_BC">BC</a></li>
5020               </ul>
5021             </td>
5022
5023           </tr>
5024           <tr class="entries_header">
5025             <th class="th_details" colspan="6">Details</th>
5026           </tr>
5027           <tr class="entry_cont">
5028             <td class="entry_details" colspan="6">
5029               <p>This list contains the color effect modes that can be applied to
5030 images produced by the camera device.<wbr/>
5031 Implementations are not expected to be consistent across all devices.<wbr/>
5032 If no color effect modes are available for a device,<wbr/> this will only list
5033 OFF.<wbr/></p>
5034 <p>A color effect will only be applied if
5035 <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
5036 <p>This control has no effect on the operation of other control routines such
5037 as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
5038             </td>
5039           </tr>
5040
5041
5042           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5043            <!-- end of entry -->
5044         
5045                 
5046           <tr class="entry" id="static_android.control.availableSceneModes">
5047             <td class="entry_name
5048              " rowspan="3">
5049               android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
5050             </td>
5051             <td class="entry_type">
5052                 <span class="entry_type_name">byte</span>
5053                 <span class="entry_type_container">x</span>
5054
5055                 <span class="entry_type_array">
5056                   n
5057                 </span>
5058               <span class="entry_type_visibility"> [public as enumList]</span>
5059
5060
5061               <span class="entry_type_hwlevel">[legacy] </span>
5062
5063
5064                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
5065
5066
5067             </td> <!-- entry_type -->
5068
5069             <td class="entry_description">
5070               <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
5071 device.<wbr/></p>
5072             </td>
5073
5074             <td class="entry_units">
5075             </td>
5076
5077             <td class="entry_range">
5078               <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
5079             </td>
5080
5081             <td class="entry_hal_version">
5082               <p>3.<wbr/>2</p>
5083             </td>
5084
5085             <td class="entry_tags">
5086               <ul class="entry_tags">
5087                   <li><a href="#tag_BC">BC</a></li>
5088               </ul>
5089             </td>
5090
5091           </tr>
5092           <tr class="entries_header">
5093             <th class="th_details" colspan="6">Details</th>
5094           </tr>
5095           <tr class="entry_cont">
5096             <td class="entry_details" colspan="6">
5097               <p>This list contains scene modes that can be set for the camera device.<wbr/>
5098 Only scene modes that have been fully implemented for the
5099 camera device may be included here.<wbr/> Implementations are not expected
5100 to be consistent across all devices.<wbr/></p>
5101 <p>If no scene modes are supported by the camera device,<wbr/> this
5102 will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
5103 <p>FACE_<wbr/>PRIORITY is always listed if face detection is
5104 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;
5105 0</code>).<wbr/></p>
5106             </td>
5107           </tr>
5108
5109
5110           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5111            <!-- end of entry -->
5112         
5113                 
5114           <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
5115             <td class="entry_name
5116              " rowspan="3">
5117               android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
5118             </td>
5119             <td class="entry_type">
5120                 <span class="entry_type_name">byte</span>
5121                 <span class="entry_type_container">x</span>
5122
5123                 <span class="entry_type_array">
5124                   n
5125                 </span>
5126               <span class="entry_type_visibility"> [public as enumList]</span>
5127
5128
5129               <span class="entry_type_hwlevel">[legacy] </span>
5130
5131
5132                 <div class="entry_type_notes">List of enums.<wbr/></div>
5133
5134
5135             </td> <!-- entry_type -->
5136
5137             <td class="entry_description">
5138               <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
5139 that are supported by this camera device.<wbr/></p>
5140             </td>
5141
5142             <td class="entry_units">
5143             </td>
5144
5145             <td class="entry_range">
5146               <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
5147             </td>
5148
5149             <td class="entry_hal_version">
5150               <p>3.<wbr/>2</p>
5151             </td>
5152
5153             <td class="entry_tags">
5154               <ul class="entry_tags">
5155                   <li><a href="#tag_BC">BC</a></li>
5156               </ul>
5157             </td>
5158
5159           </tr>
5160           <tr class="entries_header">
5161             <th class="th_details" colspan="6">Details</th>
5162           </tr>
5163           <tr class="entry_cont">
5164             <td class="entry_details" colspan="6">
5165               <p>OFF will always be listed.<wbr/></p>
5166             </td>
5167           </tr>
5168
5169
5170           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5171            <!-- end of entry -->
5172         
5173                 
5174           <tr class="entry" id="static_android.control.awbAvailableModes">
5175             <td class="entry_name
5176              " rowspan="3">
5177               android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
5178             </td>
5179             <td class="entry_type">
5180                 <span class="entry_type_name">byte</span>
5181                 <span class="entry_type_container">x</span>
5182
5183                 <span class="entry_type_array">
5184                   n
5185                 </span>
5186               <span class="entry_type_visibility"> [public as enumList]</span>
5187
5188
5189               <span class="entry_type_hwlevel">[legacy] </span>
5190
5191
5192                 <div class="entry_type_notes">List of enums</div>
5193
5194
5195             </td> <!-- entry_type -->
5196
5197             <td class="entry_description">
5198               <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
5199 camera device.<wbr/></p>
5200             </td>
5201
5202             <td class="entry_units">
5203             </td>
5204
5205             <td class="entry_range">
5206               <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
5207             </td>
5208
5209             <td class="entry_hal_version">
5210               <p>3.<wbr/>2</p>
5211             </td>
5212
5213             <td class="entry_tags">
5214               <ul class="entry_tags">
5215                   <li><a href="#tag_BC">BC</a></li>
5216               </ul>
5217             </td>
5218
5219           </tr>
5220           <tr class="entries_header">
5221             <th class="th_details" colspan="6">Details</th>
5222           </tr>
5223           <tr class="entry_cont">
5224             <td class="entry_details" colspan="6">
5225               <p>Not all the auto-white-balance modes may be supported by a
5226 given camera device.<wbr/> This entry lists the valid modes for
5227 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
5228 <p>All camera devices will support ON mode.<wbr/></p>
5229 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
5230 mode,<wbr/> which enables application control of white balance,<wbr/> by using
5231 <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
5232 mode camera devices.<wbr/></p>
5233             </td>
5234           </tr>
5235
5236
5237           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5238            <!-- end of entry -->
5239         
5240                 
5241           <tr class="entry" id="static_android.control.maxRegions">
5242             <td class="entry_name
5243              " rowspan="1">
5244               android.<wbr/>control.<wbr/>max<wbr/>Regions
5245             </td>
5246             <td class="entry_type">
5247                 <span class="entry_type_name">int32</span>
5248                 <span class="entry_type_container">x</span>
5249
5250                 <span class="entry_type_array">
5251                   3
5252                 </span>
5253               <span class="entry_type_visibility"> [ndk_public]</span>
5254
5255
5256               <span class="entry_type_hwlevel">[legacy] </span>
5257
5258
5259
5260
5261             </td> <!-- entry_type -->
5262
5263             <td class="entry_description">
5264               <p>List of the maximum number of regions that can be used for metering in
5265 auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
5266 this corresponds to the the maximum number of elements in
5267 <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/>
5268 and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5269             </td>
5270
5271             <td class="entry_units">
5272             </td>
5273
5274             <td class="entry_range">
5275               <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
5276 this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
5277 <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
5278             </td>
5279
5280             <td class="entry_hal_version">
5281               <p>3.<wbr/>2</p>
5282             </td>
5283
5284             <td class="entry_tags">
5285               <ul class="entry_tags">
5286                   <li><a href="#tag_BC">BC</a></li>
5287               </ul>
5288             </td>
5289
5290           </tr>
5291
5292
5293           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5294            <!-- end of entry -->
5295         
5296                 
5297           <tr class="entry" id="static_android.control.maxRegionsAe">
5298             <td class="entry_name
5299              " rowspan="5">
5300               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
5301             </td>
5302             <td class="entry_type">
5303                 <span class="entry_type_name">int32</span>
5304
5305               <span class="entry_type_visibility"> [java_public]</span>
5306
5307               <span class="entry_type_synthetic">[synthetic] </span>
5308
5309               <span class="entry_type_hwlevel">[legacy] </span>
5310
5311
5312
5313
5314             </td> <!-- entry_type -->
5315
5316             <td class="entry_description">
5317               <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
5318 routine.<wbr/></p>
5319             </td>
5320
5321             <td class="entry_units">
5322             </td>
5323
5324             <td class="entry_range">
5325               <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5326 value will be &gt;= 1.<wbr/></p>
5327             </td>
5328
5329             <td class="entry_hal_version">
5330               <p>3.<wbr/>2</p>
5331             </td>
5332
5333             <td class="entry_tags">
5334             </td>
5335
5336           </tr>
5337           <tr class="entries_header">
5338             <th class="th_details" colspan="6">Details</th>
5339           </tr>
5340           <tr class="entry_cont">
5341             <td class="entry_details" colspan="6">
5342               <p>This corresponds to the the maximum allowed number of elements in
5343 <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
5344             </td>
5345           </tr>
5346
5347           <tr class="entries_header">
5348             <th class="th_details" colspan="6">HAL Implementation Details</th>
5349           </tr>
5350           <tr class="entry_cont">
5351             <td class="entry_details" colspan="6">
5352               <p>This entry is private to the framework.<wbr/> Fill in
5353 maxRegions to have this entry be automatically populated.<wbr/></p>
5354             </td>
5355           </tr>
5356
5357           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5358            <!-- end of entry -->
5359         
5360                 
5361           <tr class="entry" id="static_android.control.maxRegionsAwb">
5362             <td class="entry_name
5363              " rowspan="5">
5364               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
5365             </td>
5366             <td class="entry_type">
5367                 <span class="entry_type_name">int32</span>
5368
5369               <span class="entry_type_visibility"> [java_public]</span>
5370
5371               <span class="entry_type_synthetic">[synthetic] </span>
5372
5373               <span class="entry_type_hwlevel">[legacy] </span>
5374
5375
5376
5377
5378             </td> <!-- entry_type -->
5379
5380             <td class="entry_description">
5381               <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
5382 routine.<wbr/></p>
5383             </td>
5384
5385             <td class="entry_units">
5386             </td>
5387
5388             <td class="entry_range">
5389               <p>Value will be &gt;= 0.<wbr/></p>
5390             </td>
5391
5392             <td class="entry_hal_version">
5393               <p>3.<wbr/>2</p>
5394             </td>
5395
5396             <td class="entry_tags">
5397             </td>
5398
5399           </tr>
5400           <tr class="entries_header">
5401             <th class="th_details" colspan="6">Details</th>
5402           </tr>
5403           <tr class="entry_cont">
5404             <td class="entry_details" colspan="6">
5405               <p>This corresponds to the the maximum allowed number of elements in
5406 <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5407             </td>
5408           </tr>
5409
5410           <tr class="entries_header">
5411             <th class="th_details" colspan="6">HAL Implementation Details</th>
5412           </tr>
5413           <tr class="entry_cont">
5414             <td class="entry_details" colspan="6">
5415               <p>This entry is private to the framework.<wbr/> Fill in
5416 maxRegions to have this entry be automatically populated.<wbr/></p>
5417             </td>
5418           </tr>
5419
5420           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5421            <!-- end of entry -->
5422         
5423                 
5424           <tr class="entry" id="static_android.control.maxRegionsAf">
5425             <td class="entry_name
5426              " rowspan="5">
5427               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
5428             </td>
5429             <td class="entry_type">
5430                 <span class="entry_type_name">int32</span>
5431
5432               <span class="entry_type_visibility"> [java_public]</span>
5433
5434               <span class="entry_type_synthetic">[synthetic] </span>
5435
5436               <span class="entry_type_hwlevel">[legacy] </span>
5437
5438
5439
5440
5441             </td> <!-- entry_type -->
5442
5443             <td class="entry_description">
5444               <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
5445             </td>
5446
5447             <td class="entry_units">
5448             </td>
5449
5450             <td class="entry_range">
5451               <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5452 value will be &gt;= 1.<wbr/></p>
5453             </td>
5454
5455             <td class="entry_hal_version">
5456               <p>3.<wbr/>2</p>
5457             </td>
5458
5459             <td class="entry_tags">
5460             </td>
5461
5462           </tr>
5463           <tr class="entries_header">
5464             <th class="th_details" colspan="6">Details</th>
5465           </tr>
5466           <tr class="entry_cont">
5467             <td class="entry_details" colspan="6">
5468               <p>This corresponds to the the maximum allowed number of elements in
5469 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5470             </td>
5471           </tr>
5472
5473           <tr class="entries_header">
5474             <th class="th_details" colspan="6">HAL Implementation Details</th>
5475           </tr>
5476           <tr class="entry_cont">
5477             <td class="entry_details" colspan="6">
5478               <p>This entry is private to the framework.<wbr/> Fill in
5479 maxRegions to have this entry be automatically populated.<wbr/></p>
5480             </td>
5481           </tr>
5482
5483           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5484            <!-- end of entry -->
5485         
5486                 
5487           <tr class="entry" id="static_android.control.sceneModeOverrides">
5488             <td class="entry_name
5489              " rowspan="5">
5490               android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5491             </td>
5492             <td class="entry_type">
5493                 <span class="entry_type_name">byte</span>
5494                 <span class="entry_type_container">x</span>
5495
5496                 <span class="entry_type_array">
5497                   3 x length(availableSceneModes)
5498                 </span>
5499               <span class="entry_type_visibility"> [system]</span>
5500
5501
5502               <span class="entry_type_hwlevel">[limited] </span>
5503
5504
5505
5506
5507             </td> <!-- entry_type -->
5508
5509             <td class="entry_description">
5510               <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5511 settings to use with each available scene mode.<wbr/></p>
5512             </td>
5513
5514             <td class="entry_units">
5515             </td>
5516
5517             <td class="entry_range">
5518               <p>For each available scene mode,<wbr/> the list must contain three
5519 entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5520 <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
5521 by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5522 where aeMode has the lowest index position.<wbr/></p>
5523             </td>
5524
5525             <td class="entry_hal_version">
5526               <p>3.<wbr/>2</p>
5527             </td>
5528
5529             <td class="entry_tags">
5530               <ul class="entry_tags">
5531                   <li><a href="#tag_BC">BC</a></li>
5532               </ul>
5533             </td>
5534
5535           </tr>
5536           <tr class="entries_header">
5537             <th class="th_details" colspan="6">Details</th>
5538           </tr>
5539           <tr class="entry_cont">
5540             <td class="entry_details" colspan="6">
5541               <p>When a scene mode is enabled,<wbr/> the camera device is expected
5542 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/>
5543 and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5544 that scene mode.<wbr/></p>
5545 <p>The order of this list matches that of availableSceneModes,<wbr/>
5546 with 3 entries for each mode.<wbr/>  The overrides listed
5547 for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5548 since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5549 <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
5550 used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5551 is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5552 FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5553 <p>For example,<wbr/> if availableSceneModes contains
5554 <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
5555 expects sceneModeOverrides to have 9 entries formatted like:
5556 <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5557 ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5558             </td>
5559           </tr>
5560
5561           <tr class="entries_header">
5562             <th class="th_details" colspan="6">HAL Implementation Details</th>
5563           </tr>
5564           <tr class="entry_cont">
5565             <td class="entry_details" colspan="6">
5566               <p>To maintain backward compatibility,<wbr/> this list will be made available
5567 in the static metadata of the camera service.<wbr/>  The camera service will
5568 use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5569 <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
5570 mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5571             </td>
5572           </tr>
5573
5574           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5575            <!-- end of entry -->
5576         
5577                 
5578           <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5579             <td class="entry_name
5580              " rowspan="5">
5581               android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5582             </td>
5583             <td class="entry_type">
5584                 <span class="entry_type_name">int32</span>
5585                 <span class="entry_type_container">x</span>
5586
5587                 <span class="entry_type_array">
5588                   5 x n
5589                 </span>
5590               <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5591
5592
5593               <span class="entry_type_hwlevel">[limited] </span>
5594
5595
5596
5597
5598             </td> <!-- entry_type -->
5599
5600             <td class="entry_description">
5601               <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5602 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>
5603             </td>
5604
5605             <td class="entry_units">
5606             </td>
5607
5608             <td class="entry_range">
5609               <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
5610             </td>
5611
5612             <td class="entry_hal_version">
5613               <p>3.<wbr/>2</p>
5614             </td>
5615
5616             <td class="entry_tags">
5617               <ul class="entry_tags">
5618                   <li><a href="#tag_V1">V1</a></li>
5619               </ul>
5620             </td>
5621
5622           </tr>
5623           <tr class="entries_header">
5624             <th class="th_details" colspan="6">Details</th>
5625           </tr>
5626           <tr class="entry_cont">
5627             <td class="entry_details" colspan="6">
5628               <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/>
5629 this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5630 configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5631 reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5632 for processed non-stalling formats.<wbr/></p>
5633 <p>For the high speed video use case,<wbr/> the application must
5634 select the video size and fps range from this metadata to configure the recording and
5635 preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5636 to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5637 configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5638 by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5639 recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5640 must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5641 must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5642 <p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5643 <p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5644 to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5645 multiple frames together and send to camera device for processing where the request
5646 controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5647 the max possible number of frames the camera device will group together for this high
5648 speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5649 recording request list by
5650 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5651 The max batch size for each configuration will satisfy below conditions:</p>
5652 <ul>
5653 <li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5654 if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5655 <li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5656 the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5657 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>
5658 <li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5659 </ul>
5660 <p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5661 in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5662 <p>This fps ranges in this configuration list can only be used to create requests
5663 that are submitted to a high speed camera capture session created by
5664 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5665 The fps ranges reported in this metadata must not be used to setup capture requests for
5666 normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5667             </td>
5668           </tr>
5669
5670           <tr class="entries_header">
5671             <th class="th_details" colspan="6">HAL Implementation Details</th>
5672           </tr>
5673           <tr class="entry_cont">
5674             <td class="entry_details" colspan="6">
5675               <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5676 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5677 Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5678 of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5679 <p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5680 sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5681 usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5682 stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5683 the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5684 the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5685 For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5686 [30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5687 do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5688 recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5689 values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5690 values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5691 switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5692             </td>
5693           </tr>
5694
5695           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5696            <!-- end of entry -->
5697         
5698                 
5699           <tr class="entry" id="static_android.control.aeLockAvailable">
5700             <td class="entry_name
5701              " rowspan="3">
5702               android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5703             </td>
5704             <td class="entry_type">
5705                 <span class="entry_type_name entry_type_name_enum">byte</span>
5706
5707               <span class="entry_type_visibility"> [public as boolean]</span>
5708
5709
5710               <span class="entry_type_hwlevel">[legacy] </span>
5711
5712
5713
5714                 <ul class="entry_type_enum">
5715                   <li>
5716                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
5717                   </li>
5718                   <li>
5719                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
5720                   </li>
5721                 </ul>
5722
5723             </td> <!-- entry_type -->
5724
5725             <td class="entry_description">
5726               <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5727             </td>
5728
5729             <td class="entry_units">
5730             </td>
5731
5732             <td class="entry_range">
5733             </td>
5734
5735             <td class="entry_hal_version">
5736               <p>3.<wbr/>2</p>
5737             </td>
5738
5739             <td class="entry_tags">
5740               <ul class="entry_tags">
5741                   <li><a href="#tag_BC">BC</a></li>
5742               </ul>
5743             </td>
5744
5745           </tr>
5746           <tr class="entries_header">
5747             <th class="th_details" colspan="6">Details</th>
5748           </tr>
5749           <tr class="entry_cont">
5750             <td class="entry_details" colspan="6">
5751               <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5752 list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5753             </td>
5754           </tr>
5755
5756
5757           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5758            <!-- end of entry -->
5759         
5760                 
5761           <tr class="entry" id="static_android.control.awbLockAvailable">
5762             <td class="entry_name
5763              " rowspan="3">
5764               android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5765             </td>
5766             <td class="entry_type">
5767                 <span class="entry_type_name entry_type_name_enum">byte</span>
5768
5769               <span class="entry_type_visibility"> [public as boolean]</span>
5770
5771
5772               <span class="entry_type_hwlevel">[legacy] </span>
5773
5774
5775
5776                 <ul class="entry_type_enum">
5777                   <li>
5778                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
5779                   </li>
5780                   <li>
5781                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
5782                   </li>
5783                 </ul>
5784
5785             </td> <!-- entry_type -->
5786
5787             <td class="entry_description">
5788               <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5789             </td>
5790
5791             <td class="entry_units">
5792             </td>
5793
5794             <td class="entry_range">
5795             </td>
5796
5797             <td class="entry_hal_version">
5798               <p>3.<wbr/>2</p>
5799             </td>
5800
5801             <td class="entry_tags">
5802               <ul class="entry_tags">
5803                   <li><a href="#tag_BC">BC</a></li>
5804               </ul>
5805             </td>
5806
5807           </tr>
5808           <tr class="entries_header">
5809             <th class="th_details" colspan="6">Details</th>
5810           </tr>
5811           <tr class="entry_cont">
5812             <td class="entry_details" colspan="6">
5813               <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5814 always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5815             </td>
5816           </tr>
5817
5818
5819           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5820            <!-- end of entry -->
5821         
5822                 
5823           <tr class="entry" id="static_android.control.availableModes">
5824             <td class="entry_name
5825              " rowspan="3">
5826               android.<wbr/>control.<wbr/>available<wbr/>Modes
5827             </td>
5828             <td class="entry_type">
5829                 <span class="entry_type_name">byte</span>
5830                 <span class="entry_type_container">x</span>
5831
5832                 <span class="entry_type_array">
5833                   n
5834                 </span>
5835               <span class="entry_type_visibility"> [public as enumList]</span>
5836
5837
5838               <span class="entry_type_hwlevel">[legacy] </span>
5839
5840
5841                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5842
5843
5844             </td> <!-- entry_type -->
5845
5846             <td class="entry_description">
5847               <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5848 device.<wbr/></p>
5849             </td>
5850
5851             <td class="entry_units">
5852             </td>
5853
5854             <td class="entry_range">
5855               <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5856             </td>
5857
5858             <td class="entry_hal_version">
5859               <p>3.<wbr/>2</p>
5860             </td>
5861
5862             <td class="entry_tags">
5863             </td>
5864
5865           </tr>
5866           <tr class="entries_header">
5867             <th class="th_details" colspan="6">Details</th>
5868           </tr>
5869           <tr class="entry_cont">
5870             <td class="entry_details" colspan="6">
5871               <p>This list contains control modes that can be set for the camera device.<wbr/>
5872 LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5873 devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5874             </td>
5875           </tr>
5876
5877
5878           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5879            <!-- end of entry -->
5880         
5881                 
5882           <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
5883             <td class="entry_name
5884              " rowspan="5">
5885               android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
5886             </td>
5887             <td class="entry_type">
5888                 <span class="entry_type_name">int32</span>
5889                 <span class="entry_type_container">x</span>
5890
5891                 <span class="entry_type_array">
5892                   2
5893                 </span>
5894               <span class="entry_type_visibility"> [public as rangeInt]</span>
5895
5896
5897
5898
5899                 <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div>
5900
5901
5902             </td> <!-- entry_type -->
5903
5904             <td class="entry_description">
5905               <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
5906 by this camera device.<wbr/></p>
5907             </td>
5908
5909             <td class="entry_units">
5910               ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
5911             </td>
5912
5913             <td class="entry_range">
5914             </td>
5915
5916             <td class="entry_hal_version">
5917               <p>3.<wbr/>2</p>
5918             </td>
5919
5920             <td class="entry_tags">
5921             </td>
5922
5923           </tr>
5924           <tr class="entries_header">
5925             <th class="th_details" colspan="6">Details</th>
5926           </tr>
5927           <tr class="entry_cont">
5928             <td class="entry_details" colspan="6">
5929               <p>Devices support post RAW sensitivity boost  will advertise
5930 <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling
5931 post RAW sensitivity boost.<wbr/></p>
5932 <p>This key will be <code>null</code> for devices that do not support any RAW format
5933 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
5934 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
5935 list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
5936             </td>
5937           </tr>
5938
5939           <tr class="entries_header">
5940             <th class="th_details" colspan="6">HAL Implementation Details</th>
5941           </tr>
5942           <tr class="entry_cont">
5943             <td class="entry_details" colspan="6">
5944               <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera
5945 framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output
5946 formats.<wbr/>  All legacy HAL3.<wbr/>4 and above devices should list this key if device supports
5947 any of RAW output formats.<wbr/></p>
5948             </td>
5949           </tr>
5950
5951           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5952            <!-- end of entry -->
5953         
5954         
5955
5956       <!-- end of kind -->
5957       </tbody>
5958       <tr><td colspan="7" class="kind">dynamic</td></tr>
5959
5960       <thead class="entries_header">
5961         <tr>
5962           <th class="th_name">Property Name</th>
5963           <th class="th_type">Type</th>
5964           <th class="th_description">Description</th>
5965           <th class="th_units">Units</th>
5966           <th class="th_range">Range</th>
5967           <th class="th_hal_version">Initial HIDL HAL version</th>
5968           <th class="th_tags">Tags</th>
5969         </tr>
5970       </thead>
5971
5972       <tbody>
5973
5974         
5975
5976         
5977
5978         
5979
5980         
5981
5982                 
5983           <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5984             <td class="entry_name
5985                 entry_name_deprecated
5986              " rowspan="3">
5987               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5988             </td>
5989             <td class="entry_type">
5990                 <span class="entry_type_name">int32</span>
5991
5992               <span class="entry_type_visibility"> [system]</span>
5993
5994
5995
5996               <span class="entry_type_deprecated">[deprecated] </span>
5997
5998
5999
6000             </td> <!-- entry_type -->
6001
6002             <td class="entry_description">
6003               <p>The ID sent with the latest
6004 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
6005             </td>
6006
6007             <td class="entry_units">
6008             </td>
6009
6010             <td class="entry_range">
6011               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
6012             </td>
6013
6014             <td class="entry_hal_version">
6015               <p>3.<wbr/>2</p>
6016             </td>
6017
6018             <td class="entry_tags">
6019             </td>
6020
6021           </tr>
6022           <tr class="entries_header">
6023             <th class="th_details" colspan="6">Details</th>
6024           </tr>
6025           <tr class="entry_cont">
6026             <td class="entry_details" colspan="6">
6027               <p>Must be 0 if no
6028 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
6029 by HAL.<wbr/> Always updated even if AE algorithm ignores the
6030 trigger</p>
6031             </td>
6032           </tr>
6033
6034
6035           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6036            <!-- end of entry -->
6037         
6038                 
6039           <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
6040             <td class="entry_name
6041              " rowspan="5">
6042               android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
6043             </td>
6044             <td class="entry_type">
6045                 <span class="entry_type_name entry_type_name_enum">byte</span>
6046
6047               <span class="entry_type_visibility"> [public]</span>
6048
6049
6050               <span class="entry_type_hwlevel">[legacy] </span>
6051
6052
6053
6054                 <ul class="entry_type_enum">
6055                   <li>
6056                     <span class="entry_type_enum_name">OFF (v3.2)</span>
6057                     <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
6058 avoid banding problems.<wbr/></p></span>
6059                   </li>
6060                   <li>
6061                     <span class="entry_type_enum_name">50HZ (v3.2)</span>
6062                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
6063 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
6064                   </li>
6065                   <li>
6066                     <span class="entry_type_enum_name">60HZ (v3.2)</span>
6067                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
6068 avoid banding problems with 60Hz illumination
6069 sources.<wbr/></p></span>
6070                   </li>
6071                   <li>
6072                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
6073                     <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
6074 antibanding routine to the current illumination
6075 condition.<wbr/> This is the default mode if AUTO is
6076 available on given camera device.<wbr/></p></span>
6077                   </li>
6078                 </ul>
6079
6080             </td> <!-- entry_type -->
6081
6082             <td class="entry_description">
6083               <p>The desired setting for the camera device's auto-exposure
6084 algorithm's antibanding compensation.<wbr/></p>
6085             </td>
6086
6087             <td class="entry_units">
6088             </td>
6089
6090             <td class="entry_range">
6091               <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
6092             </td>
6093
6094             <td class="entry_hal_version">
6095               <p>3.<wbr/>2</p>
6096             </td>
6097
6098             <td class="entry_tags">
6099               <ul class="entry_tags">
6100                   <li><a href="#tag_BC">BC</a></li>
6101               </ul>
6102             </td>
6103
6104           </tr>
6105           <tr class="entries_header">
6106             <th class="th_details" colspan="6">Details</th>
6107           </tr>
6108           <tr class="entry_cont">
6109             <td class="entry_details" colspan="6">
6110               <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
6111 lights,<wbr/> flicker at the rate of the power supply frequency
6112 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
6113 typically not noticeable to a person,<wbr/> it can be visible to
6114 a camera device.<wbr/> If a camera sets its exposure time to the
6115 wrong value,<wbr/> the flicker may become visible in the
6116 viewfinder as flicker or in a final captured image,<wbr/> as a
6117 set of variable-brightness bands across the image.<wbr/></p>
6118 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
6119 include antibanding routines that ensure that the chosen
6120 exposure value will not cause such banding.<wbr/> The choice of
6121 exposure time depends on the rate of flicker,<wbr/> which the
6122 camera device can detect automatically,<wbr/> or the expected
6123 rate can be selected by the application using this
6124 control.<wbr/></p>
6125 <p>A given camera device may not support all of the possible
6126 options for the antibanding mode.<wbr/> The
6127 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
6128 the available modes for a given camera device.<wbr/></p>
6129 <p>AUTO mode is the default if it is available on given
6130 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
6131 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
6132 and 60HZ will be available.<wbr/></p>
6133 <p>If manual exposure control is enabled (by setting
6134 <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/>
6135 then this setting has no effect,<wbr/> and the application must
6136 ensure it selects exposure times that do not cause banding
6137 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
6138 the application in this.<wbr/></p>
6139             </td>
6140           </tr>
6141
6142           <tr class="entries_header">
6143             <th class="th_details" colspan="6">HAL Implementation Details</th>
6144           </tr>
6145           <tr class="entry_cont">
6146             <td class="entry_details" colspan="6">
6147               <p>For all capture request templates,<wbr/> this field must be set
6148 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
6149 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
6150 60HZ must be available.<wbr/></p>
6151 <p>If manual exposure control is enabled (by setting
6152 <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/>
6153 then the exposure values provided by the application must not be
6154 adjusted for antibanding.<wbr/></p>
6155             </td>
6156           </tr>
6157
6158           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6159            <!-- end of entry -->
6160         
6161                 
6162           <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
6163             <td class="entry_name
6164              " rowspan="3">
6165               android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
6166             </td>
6167             <td class="entry_type">
6168                 <span class="entry_type_name">int32</span>
6169
6170               <span class="entry_type_visibility"> [public]</span>
6171
6172
6173               <span class="entry_type_hwlevel">[legacy] </span>
6174
6175
6176
6177
6178             </td> <!-- entry_type -->
6179
6180             <td class="entry_description">
6181               <p>Adjustment to auto-exposure (AE) target image
6182 brightness.<wbr/></p>
6183             </td>
6184
6185             <td class="entry_units">
6186               Compensation steps
6187             </td>
6188
6189             <td class="entry_range">
6190               <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
6191             </td>
6192
6193             <td class="entry_hal_version">
6194               <p>3.<wbr/>2</p>
6195             </td>
6196
6197             <td class="entry_tags">
6198               <ul class="entry_tags">
6199                   <li><a href="#tag_BC">BC</a></li>
6200               </ul>
6201             </td>
6202
6203           </tr>
6204           <tr class="entries_header">
6205             <th class="th_details" colspan="6">Details</th>
6206           </tr>
6207           <tr class="entry_cont">
6208             <td class="entry_details" colspan="6">
6209               <p>The adjustment is measured as a count of steps,<wbr/> with the
6210 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
6211 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
6212 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
6213 will mean an exposure compensation of +2 EV; -3 will mean an
6214 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
6215 of image brightness.<wbr/> Note that this control will only be
6216 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
6217 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
6218 <p>In the event of exposure compensation value being changed,<wbr/> camera device
6219 may take several frames to reach the newly requested exposure target.<wbr/>
6220 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
6221 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
6222 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
6223 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
6224             </td>
6225           </tr>
6226
6227
6228           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6229            <!-- end of entry -->
6230         
6231                 
6232           <tr class="entry" id="dynamic_android.control.aeLock">
6233             <td class="entry_name
6234              " rowspan="3">
6235               android.<wbr/>control.<wbr/>ae<wbr/>Lock
6236             </td>
6237             <td class="entry_type">
6238                 <span class="entry_type_name entry_type_name_enum">byte</span>
6239
6240               <span class="entry_type_visibility"> [public as boolean]</span>
6241
6242
6243               <span class="entry_type_hwlevel">[legacy] </span>
6244
6245
6246
6247                 <ul class="entry_type_enum">
6248                   <li>
6249                     <span class="entry_type_enum_name">OFF (v3.2)</span>
6250                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
6251 is free to update its parameters.<wbr/></p></span>
6252                   </li>
6253                   <li>
6254                     <span class="entry_type_enum_name">ON (v3.2)</span>
6255                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
6256 must not update the exposure and sensitivity parameters
6257 while the lock is active.<wbr/></p>
6258 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
6259 will still take effect while auto-exposure is locked.<wbr/></p>
6260 <p>Some rare LEGACY devices may not support
6261 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
6262                   </li>
6263                 </ul>
6264
6265             </td> <!-- entry_type -->
6266
6267             <td class="entry_description">
6268               <p>Whether auto-exposure (AE) is currently locked to its latest
6269 calculated values.<wbr/></p>
6270             </td>
6271
6272             <td class="entry_units">
6273             </td>
6274
6275             <td class="entry_range">
6276             </td>
6277
6278             <td class="entry_hal_version">
6279               <p>3.<wbr/>2</p>
6280             </td>
6281
6282             <td class="entry_tags">
6283               <ul class="entry_tags">
6284                   <li><a href="#tag_BC">BC</a></li>
6285               </ul>
6286             </td>
6287
6288           </tr>
6289           <tr class="entries_header">
6290             <th class="th_details" colspan="6">Details</th>
6291           </tr>
6292           <tr class="entry_cont">
6293             <td class="entry_details" colspan="6">
6294               <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
6295 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
6296 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
6297 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
6298 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
6299 <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
6300 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
6301 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
6302 when AE is already locked,<wbr/> the camera device will not change the exposure time
6303 (<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>)
6304 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
6305 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
6306 <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/>
6307 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
6308 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
6309 the AE if AE is locked by the camera device internally during precapture metering
6310 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
6311 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
6312 will never succeed in a sequence of preview requests where AE lock is always set
6313 to <code>false</code>.<wbr/></p>
6314 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
6315 get locked do not necessarily correspond to the settings that were present in the
6316 latest capture result received from the camera device,<wbr/> since additional captures
6317 and AE updates may have occurred even before the result was sent out.<wbr/> If an
6318 application is switching between automatic and manual control and wishes to eliminate
6319 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
6320 <ol>
6321 <li>Starting in auto-AE mode:</li>
6322 <li>Lock AE</li>
6323 <li>Wait for the first result to be output that has the AE locked</li>
6324 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
6325 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
6326 </ol>
6327 <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>
6328             </td>
6329           </tr>
6330
6331
6332           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6333            <!-- end of entry -->
6334         
6335                 
6336           <tr class="entry" id="dynamic_android.control.aeMode">
6337             <td class="entry_name
6338              " rowspan="3">
6339               android.<wbr/>control.<wbr/>ae<wbr/>Mode
6340             </td>
6341             <td class="entry_type">
6342                 <span class="entry_type_name entry_type_name_enum">byte</span>
6343
6344               <span class="entry_type_visibility"> [public]</span>
6345
6346
6347               <span class="entry_type_hwlevel">[legacy] </span>
6348
6349
6350
6351                 <ul class="entry_type_enum">
6352                   <li>
6353                     <span class="entry_type_enum_name">OFF (v3.2)</span>
6354                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
6355 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6356 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
6357 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
6358 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
6359 a flash unit for this camera device.<wbr/></p>
6360 <p>Note that auto-white balance (AWB) and auto-focus (AF)
6361 behavior is device dependent when AE is in OFF mode.<wbr/>
6362 To have consistent behavior across different devices,<wbr/>
6363 it is recommended to either set AWB and AF to OFF mode
6364 or lock AWB and AF before setting AE to OFF.<wbr/>
6365 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/>
6366 <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>
6367 for more details.<wbr/></p>
6368 <p>LEGACY devices do not support the OFF mode and will
6369 override attempts to use this value to ON.<wbr/></p></span>
6370                   </li>
6371                   <li>
6372                     <span class="entry_type_enum_name">ON (v3.2)</span>
6373                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
6374 with no flash control.<wbr/></p>
6375 <p>The application's values for
6376 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6377 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6378 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
6379 application has control over the various
6380 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
6381                   </li>
6382                   <li>
6383                     <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
6384                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6385 the camera's flash unit,<wbr/> firing it in low-light
6386 conditions.<wbr/></p>
6387 <p>The flash may be fired during a precapture sequence
6388 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6389 may be fired for captures for which the
6390 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6391 STILL_<wbr/>CAPTURE</p></span>
6392                   </li>
6393                   <li>
6394                     <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
6395                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6396 the camera's flash unit,<wbr/> always firing it for still
6397 captures.<wbr/></p>
6398 <p>The flash may be fired during a precapture sequence
6399 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6400 will always be fired for captures for which the
6401 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6402 STILL_<wbr/>CAPTURE</p></span>
6403                   </li>
6404                   <li>
6405                     <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
6406                     <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
6407 reduction.<wbr/></p>
6408 <p>If deemed necessary by the camera device,<wbr/> a red eye
6409 reduction flash will fire during the precapture
6410 sequence.<wbr/></p></span>
6411                   </li>
6412                   <li>
6413                     <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
6414                     <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
6415 <p>It informs the camera device that an external flash has been turned on,<wbr/> and that
6416 metering (and continuous focus if active) should be quickly recaculated to account
6417 for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
6418 <p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
6419 other available AE modes.<wbr/></p>
6420 <p>If the camera device supports AE external flash mode,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must
6421 be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
6422 flash.<wbr/></p></span>
6423                   </li>
6424                 </ul>
6425
6426             </td> <!-- entry_type -->
6427
6428             <td class="entry_description">
6429               <p>The desired mode for the camera device's
6430 auto-exposure routine.<wbr/></p>
6431             </td>
6432
6433             <td class="entry_units">
6434             </td>
6435
6436             <td class="entry_range">
6437               <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
6438             </td>
6439
6440             <td class="entry_hal_version">
6441               <p>3.<wbr/>2</p>
6442             </td>
6443
6444             <td class="entry_tags">
6445               <ul class="entry_tags">
6446                   <li><a href="#tag_BC">BC</a></li>
6447               </ul>
6448             </td>
6449
6450           </tr>
6451           <tr class="entries_header">
6452             <th class="th_details" colspan="6">Details</th>
6453           </tr>
6454           <tr class="entry_cont">
6455             <td class="entry_details" colspan="6">
6456               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
6457 AUTO.<wbr/></p>
6458 <p>When set to any of the ON modes,<wbr/> the camera device's
6459 auto-exposure routine is enabled,<wbr/> overriding the
6460 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
6461 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6462 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6463 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
6464 is selected,<wbr/> the camera device's flash unit controls are
6465 also overridden.<wbr/></p>
6466 <p>The FLASH modes are only available if the camera device
6467 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>
6468 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
6469 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
6470 <p>When set to any of the ON modes,<wbr/> the values chosen by the
6471 camera device auto-exposure routine for the overridden
6472 fields for a given capture will be available in its
6473 CaptureResult.<wbr/></p>
6474             </td>
6475           </tr>
6476
6477
6478           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6479            <!-- end of entry -->
6480         
6481                 
6482           <tr class="entry" id="dynamic_android.control.aeRegions">
6483             <td class="entry_name
6484              " rowspan="5">
6485               android.<wbr/>control.<wbr/>ae<wbr/>Regions
6486             </td>
6487             <td class="entry_type">
6488                 <span class="entry_type_name">int32</span>
6489                 <span class="entry_type_container">x</span>
6490
6491                 <span class="entry_type_array">
6492                   5 x area_count
6493                 </span>
6494               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6495
6496
6497
6498
6499
6500
6501             </td> <!-- entry_type -->
6502
6503             <td class="entry_description">
6504               <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
6505             </td>
6506
6507             <td class="entry_units">
6508               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6509             </td>
6510
6511             <td class="entry_range">
6512               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6513 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6514             </td>
6515
6516             <td class="entry_hal_version">
6517               <p>3.<wbr/>2</p>
6518             </td>
6519
6520             <td class="entry_tags">
6521               <ul class="entry_tags">
6522                   <li><a href="#tag_BC">BC</a></li>
6523               </ul>
6524             </td>
6525
6526           </tr>
6527           <tr class="entries_header">
6528             <th class="th_details" colspan="6">Details</th>
6529           </tr>
6530           <tr class="entry_cont">
6531             <td class="entry_details" colspan="6">
6532               <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
6533 Otherwise will always be present.<wbr/></p>
6534 <p>The maximum number of regions supported by the device is determined by the value
6535 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
6536 <p>The coordinate system is based on the active pixel array,<wbr/>
6537 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6538 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6539 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6540 bottom-right pixel in the active pixel array.<wbr/></p>
6541 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6542 for every pixel in the area.<wbr/> This means that a large metering area
6543 with the same weight as a smaller area will have more effect in
6544 the metering result.<wbr/> Metering areas can partially overlap and the
6545 camera device will add the weights in the overlap region.<wbr/></p>
6546 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
6547 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
6548 weight is ignored.<wbr/></p>
6549 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6550 camera device.<wbr/></p>
6551 <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
6552 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6553 region and output only the intersection rectangle as the metering region in the result
6554 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
6555 not reported in the result metadata.<wbr/></p>
6556             </td>
6557           </tr>
6558
6559           <tr class="entries_header">
6560             <th class="th_details" colspan="6">HAL Implementation Details</th>
6561           </tr>
6562           <tr class="entry_cont">
6563             <td class="entry_details" colspan="6">
6564               <p>The HAL level representation of MeteringRectangle[] is a
6565 int[5 * area_<wbr/>count].<wbr/>
6566 Every five elements represent a metering region of
6567 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6568 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6569 exclusive on xmax and ymax.<wbr/></p>
6570             </td>
6571           </tr>
6572
6573           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6574            <!-- end of entry -->
6575         
6576                 
6577           <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
6578             <td class="entry_name
6579              " rowspan="3">
6580               android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
6581             </td>
6582             <td class="entry_type">
6583                 <span class="entry_type_name">int32</span>
6584                 <span class="entry_type_container">x</span>
6585
6586                 <span class="entry_type_array">
6587                   2
6588                 </span>
6589               <span class="entry_type_visibility"> [public as rangeInt]</span>
6590
6591
6592               <span class="entry_type_hwlevel">[legacy] </span>
6593
6594
6595
6596
6597             </td> <!-- entry_type -->
6598
6599             <td class="entry_description">
6600               <p>Range over which the auto-exposure routine can
6601 adjust the capture frame rate to maintain good
6602 exposure.<wbr/></p>
6603             </td>
6604
6605             <td class="entry_units">
6606               Frames per second (FPS)
6607             </td>
6608
6609             <td class="entry_range">
6610               <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>
6611             </td>
6612
6613             <td class="entry_hal_version">
6614               <p>3.<wbr/>2</p>
6615             </td>
6616
6617             <td class="entry_tags">
6618               <ul class="entry_tags">
6619                   <li><a href="#tag_BC">BC</a></li>
6620               </ul>
6621             </td>
6622
6623           </tr>
6624           <tr class="entries_header">
6625             <th class="th_details" colspan="6">Details</th>
6626           </tr>
6627           <tr class="entry_cont">
6628             <td class="entry_details" colspan="6">
6629               <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6630 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6631 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6632             </td>
6633           </tr>
6634
6635
6636           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6637            <!-- end of entry -->
6638         
6639                 
6640           <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6641             <td class="entry_name
6642              " rowspan="5">
6643               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6644             </td>
6645             <td class="entry_type">
6646                 <span class="entry_type_name entry_type_name_enum">byte</span>
6647
6648               <span class="entry_type_visibility"> [public]</span>
6649
6650
6651               <span class="entry_type_hwlevel">[limited] </span>
6652
6653
6654
6655                 <ul class="entry_type_enum">
6656                   <li>
6657                     <span class="entry_type_enum_name">IDLE (v3.2)</span>
6658                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6659                   </li>
6660                   <li>
6661                     <span class="entry_type_enum_name">START (v3.2)</span>
6662                     <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6663 by the camera device.<wbr/></p>
6664 <p>The exact effect of the precapture trigger depends on
6665 the current AE mode and state.<wbr/></p></span>
6666                   </li>
6667                   <li>
6668                     <span class="entry_type_enum_name">CANCEL (v3.2)</span>
6669                     <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6670 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6671 initial state.<wbr/></p></span>
6672                   </li>
6673                 </ul>
6674
6675             </td> <!-- entry_type -->
6676
6677             <td class="entry_description">
6678               <p>Whether the camera device will trigger a precapture
6679 metering sequence when it processes this request.<wbr/></p>
6680             </td>
6681
6682             <td class="entry_units">
6683             </td>
6684
6685             <td class="entry_range">
6686             </td>
6687
6688             <td class="entry_hal_version">
6689               <p>3.<wbr/>2</p>
6690             </td>
6691
6692             <td class="entry_tags">
6693               <ul class="entry_tags">
6694                   <li><a href="#tag_BC">BC</a></li>
6695               </ul>
6696             </td>
6697
6698           </tr>
6699           <tr class="entries_header">
6700             <th class="th_details" colspan="6">Details</th>
6701           </tr>
6702           <tr class="entry_cont">
6703             <td class="entry_details" colspan="6">
6704               <p>This entry is normally set to IDLE,<wbr/> or is not
6705 included at all in the request settings.<wbr/> When included and
6706 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6707 precapture metering sequence.<wbr/></p>
6708 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
6709 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6710 If a precapture metering sequence is already completed,<wbr/> and the camera
6711 device has implicitly locked the AE for subsequent still capture,<wbr/> the
6712 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6713 <p>The precapture sequence should be triggered before starting a
6714 high-quality still capture for final metering decisions to
6715 be made,<wbr/> and for firing pre-capture flash pulses to estimate
6716 scene brightness and required final capture flash power,<wbr/> when
6717 the flash is enabled.<wbr/></p>
6718 <p>Normally,<wbr/> this entry should be set to START for only a
6719 single request,<wbr/> and the application should wait until the
6720 sequence completes before starting a new one.<wbr/></p>
6721 <p>When a precapture metering sequence is finished,<wbr/> the camera device
6722 may lock the auto-exposure routine internally to be able to accurately expose the
6723 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6724 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6725 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6726 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
6727 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
6728 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6729 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6730 internally locked AE if the application doesn't submit a still capture request after
6731 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6732 be used in devices that have earlier API levels.<wbr/></p>
6733 <p>The exact effect of auto-exposure (AE) precapture trigger
6734 depends on the current AE mode and state; see
6735 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6736 details.<wbr/></p>
6737 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6738 capturing a high-resolution JPEG image will automatically trigger a
6739 precapture sequence before the high-resolution capture,<wbr/> including
6740 potentially firing a pre-capture flash.<wbr/></p>
6741 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6742 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6743 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6744 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6745 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6746 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
6747 example.<wbr/></p>
6748 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6749 the camera device will complete them in the optimal order for that device.<wbr/></p>
6750             </td>
6751           </tr>
6752
6753           <tr class="entries_header">
6754             <th class="th_details" colspan="6">HAL Implementation Details</th>
6755           </tr>
6756           <tr class="entry_cont">
6757             <td class="entry_details" colspan="6">
6758               <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6759 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
6760 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6761 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6762 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6763             </td>
6764           </tr>
6765
6766           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6767            <!-- end of entry -->
6768         
6769                 
6770           <tr class="entry" id="dynamic_android.control.aeState">
6771             <td class="entry_name
6772              " rowspan="3">
6773               android.<wbr/>control.<wbr/>ae<wbr/>State
6774             </td>
6775             <td class="entry_type">
6776                 <span class="entry_type_name entry_type_name_enum">byte</span>
6777
6778               <span class="entry_type_visibility"> [public]</span>
6779
6780
6781               <span class="entry_type_hwlevel">[limited] </span>
6782
6783
6784
6785                 <ul class="entry_type_enum">
6786                   <li>
6787                     <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
6788                     <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6789 <p>When a camera device is opened,<wbr/> it starts in
6790 this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6791 this state in capture result.<wbr/></p></span>
6792                   </li>
6793                   <li>
6794                     <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
6795                     <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6796 for the current scene.<wbr/></p>
6797 <p>This is a transient state,<wbr/> the camera device may skip
6798 reporting this state in capture result.<wbr/></p></span>
6799                   </li>
6800                   <li>
6801                     <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
6802                     <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6803 current scene.<wbr/></p></span>
6804                   </li>
6805                   <li>
6806                     <span class="entry_type_enum_name">LOCKED (v3.2)</span>
6807                     <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6808                   </li>
6809                   <li>
6810                     <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span>
6811                     <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6812 needs to be fired for good quality still
6813 capture.<wbr/></p></span>
6814                   </li>
6815                   <li>
6816                     <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span>
6817                     <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6818 and is currently executing it.<wbr/></p>
6819 <p>Precapture can be triggered through setting
6820 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6821 active and completed (if it causes camera device internal AE lock) precapture
6822 metering sequence can be canceled through setting
6823 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6824 <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6825 or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6826 state,<wbr/> the camera device may skip reporting this state in
6827 capture result.<wbr/></p></span>
6828                   </li>
6829                 </ul>
6830
6831             </td> <!-- entry_type -->
6832
6833             <td class="entry_description">
6834               <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6835             </td>
6836
6837             <td class="entry_units">
6838             </td>
6839
6840             <td class="entry_range">
6841             </td>
6842
6843             <td class="entry_hal_version">
6844               <p>3.<wbr/>2</p>
6845             </td>
6846
6847             <td class="entry_tags">
6848             </td>
6849
6850           </tr>
6851           <tr class="entries_header">
6852             <th class="th_details" colspan="6">Details</th>
6853           </tr>
6854           <tr class="entry_cont">
6855             <td class="entry_details" colspan="6">
6856               <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6857 resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6858 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
6859 the algorithm states to INACTIVE.<wbr/></p>
6860 <p>The camera device can do several state transitions between two results,<wbr/> if it is
6861 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6862 seen in a result.<wbr/></p>
6863 <p>The state in the result is the state for this image (in sync with this image): if
6864 AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6865 be good to use.<wbr/></p>
6866 <p>Below are state transition tables for different AE modes.<wbr/></p>
6867 <table>
6868 <thead>
6869 <tr>
6870 <th align="center">State</th>
6871 <th align="center">Transition Cause</th>
6872 <th align="center">New State</th>
6873 <th align="center">Notes</th>
6874 </tr>
6875 </thead>
6876 <tbody>
6877 <tr>
6878 <td align="center">INACTIVE</td>
6879 <td align="center"></td>
6880 <td align="center">INACTIVE</td>
6881 <td align="center">Camera device auto exposure algorithm is disabled</td>
6882 </tr>
6883 </tbody>
6884 </table>
6885 <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON*:</p>
6886 <table>
6887 <thead>
6888 <tr>
6889 <th align="center">State</th>
6890 <th align="center">Transition Cause</th>
6891 <th align="center">New State</th>
6892 <th align="center">Notes</th>
6893 </tr>
6894 </thead>
6895 <tbody>
6896 <tr>
6897 <td align="center">INACTIVE</td>
6898 <td align="center">Camera device initiates AE scan</td>
6899 <td align="center">SEARCHING</td>
6900 <td align="center">Values changing</td>
6901 </tr>
6902 <tr>
6903 <td align="center">INACTIVE</td>
6904 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6905 <td align="center">LOCKED</td>
6906 <td align="center">Values locked</td>
6907 </tr>
6908 <tr>
6909 <td align="center">SEARCHING</td>
6910 <td align="center">Camera device finishes AE scan</td>
6911 <td align="center">CONVERGED</td>
6912 <td align="center">Good values,<wbr/> not changing</td>
6913 </tr>
6914 <tr>
6915 <td align="center">SEARCHING</td>
6916 <td align="center">Camera device finishes AE scan</td>
6917 <td align="center">FLASH_<wbr/>REQUIRED</td>
6918 <td align="center">Converged but too dark w/<wbr/>o flash</td>
6919 </tr>
6920 <tr>
6921 <td align="center">SEARCHING</td>
6922 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6923 <td align="center">LOCKED</td>
6924 <td align="center">Values locked</td>
6925 </tr>
6926 <tr>
6927 <td align="center">CONVERGED</td>
6928 <td align="center">Camera device initiates AE scan</td>
6929 <td align="center">SEARCHING</td>
6930 <td align="center">Values changing</td>
6931 </tr>
6932 <tr>
6933 <td align="center">CONVERGED</td>
6934 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6935 <td align="center">LOCKED</td>
6936 <td align="center">Values locked</td>
6937 </tr>
6938 <tr>
6939 <td align="center">FLASH_<wbr/>REQUIRED</td>
6940 <td align="center">Camera device initiates AE scan</td>
6941 <td align="center">SEARCHING</td>
6942 <td align="center">Values changing</td>
6943 </tr>
6944 <tr>
6945 <td align="center">FLASH_<wbr/>REQUIRED</td>
6946 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6947 <td align="center">LOCKED</td>
6948 <td align="center">Values locked</td>
6949 </tr>
6950 <tr>
6951 <td align="center">LOCKED</td>
6952 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6953 <td align="center">SEARCHING</td>
6954 <td align="center">Values not good after unlock</td>
6955 </tr>
6956 <tr>
6957 <td align="center">LOCKED</td>
6958 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6959 <td align="center">CONVERGED</td>
6960 <td align="center">Values good after unlock</td>
6961 </tr>
6962 <tr>
6963 <td align="center">LOCKED</td>
6964 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6965 <td align="center">FLASH_<wbr/>REQUIRED</td>
6966 <td align="center">Exposure good,<wbr/> but too dark</td>
6967 </tr>
6968 <tr>
6969 <td align="center">PRECAPTURE</td>
6970 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6971 <td align="center">CONVERGED</td>
6972 <td align="center">Ready for high-quality capture</td>
6973 </tr>
6974 <tr>
6975 <td align="center">PRECAPTURE</td>
6976 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6977 <td align="center">LOCKED</td>
6978 <td align="center">Ready for high-quality capture</td>
6979 </tr>
6980 <tr>
6981 <td align="center">LOCKED</td>
6982 <td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6983 <td align="center">LOCKED</td>
6984 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6985 </tr>
6986 <tr>
6987 <td align="center">LOCKED</td>
6988 <td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6989 <td align="center">LOCKED</td>
6990 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6991 </tr>
6992 <tr>
6993 <td align="center">Any state (excluding LOCKED)</td>
6994 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6995 <td align="center">PRECAPTURE</td>
6996 <td align="center">Start AE precapture metering sequence</td>
6997 </tr>
6998 <tr>
6999 <td align="center">Any state (excluding LOCKED)</td>
7000 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
7001 <td align="center">INACTIVE</td>
7002 <td align="center">Currently active precapture metering sequence is canceled</td>
7003 </tr>
7004 </tbody>
7005 </table>
7006 <p>If the camera device supports AE external flash mode (ON_<wbr/>EXTERNAL_<wbr/>FLASH is included in
7007 <a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a>),<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must be FLASH_<wbr/>REQUIRED after
7008 the camera device finishes AE scan and it's too dark without flash.<wbr/></p>
7009 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7010 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7011 can be skipped in that manner is called a transient state.<wbr/></p>
7012 <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON*),<wbr/> in addition to the state transitions
7013 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
7014 transient states between two results.<wbr/> See below table for examples:</p>
7015 <table>
7016 <thead>
7017 <tr>
7018 <th align="center">State</th>
7019 <th align="center">Transition Cause</th>
7020 <th align="center">New State</th>
7021 <th align="center">Notes</th>
7022 </tr>
7023 </thead>
7024 <tbody>
7025 <tr>
7026 <td align="center">INACTIVE</td>
7027 <td align="center">Camera device finished AE scan</td>
7028 <td align="center">CONVERGED</td>
7029 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
7030 </tr>
7031 <tr>
7032 <td align="center">Any state (excluding LOCKED)</td>
7033 <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>
7034 <td align="center">FLASH_<wbr/>REQUIRED</td>
7035 <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>
7036 </tr>
7037 <tr>
7038 <td align="center">Any state (excluding LOCKED)</td>
7039 <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>
7040 <td align="center">CONVERGED</td>
7041 <td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
7042 </tr>
7043 <tr>
7044 <td align="center">Any state (excluding LOCKED)</td>
7045 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
7046 <td align="center">FLASH_<wbr/>REQUIRED</td>
7047 <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>
7048 </tr>
7049 <tr>
7050 <td align="center">Any state (excluding LOCKED)</td>
7051 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
7052 <td align="center">CONVERGED</td>
7053 <td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
7054 </tr>
7055 <tr>
7056 <td align="center">CONVERGED</td>
7057 <td align="center">Camera device finished AE scan</td>
7058 <td align="center">FLASH_<wbr/>REQUIRED</td>
7059 <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>
7060 </tr>
7061 <tr>
7062 <td align="center">FLASH_<wbr/>REQUIRED</td>
7063 <td align="center">Camera device finished AE scan</td>
7064 <td align="center">CONVERGED</td>
7065 <td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
7066 </tr>
7067 </tbody>
7068 </table>
7069             </td>
7070           </tr>
7071
7072
7073           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7074            <!-- end of entry -->
7075         
7076                 
7077           <tr class="entry" id="dynamic_android.control.afMode">
7078             <td class="entry_name
7079              " rowspan="5">
7080               android.<wbr/>control.<wbr/>af<wbr/>Mode
7081             </td>
7082             <td class="entry_type">
7083                 <span class="entry_type_name entry_type_name_enum">byte</span>
7084
7085               <span class="entry_type_visibility"> [public]</span>
7086
7087
7088               <span class="entry_type_hwlevel">[legacy] </span>
7089
7090
7091
7092                 <ul class="entry_type_enum">
7093                   <li>
7094                     <span class="entry_type_enum_name">OFF (v3.2)</span>
7095                     <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
7096 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
7097 application.<wbr/></p></span>
7098                   </li>
7099                   <li>
7100                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
7101                     <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
7102 <p>In this mode,<wbr/> the lens does not move unless
7103 the autofocus trigger action is called.<wbr/> When that trigger
7104 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7105 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
7106 <p>Always supported if lens is not fixed focus.<wbr/></p>
7107 <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
7108 is fixed-focus.<wbr/></p>
7109 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
7110 and sets the AF state to INACTIVE.<wbr/></p></span>
7111                   </li>
7112                   <li>
7113                     <span class="entry_type_enum_name">MACRO (v3.2)</span>
7114                     <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
7115 <p>In this mode,<wbr/> the lens does not move unless the
7116 autofocus trigger action is called.<wbr/> When that trigger is
7117 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7118 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
7119 mode is optimized for focusing on objects very close to
7120 the camera.<wbr/></p>
7121 <p>When that trigger is activated,<wbr/> AF will transition to
7122 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
7123 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
7124 position to default,<wbr/> and sets the AF state to
7125 INACTIVE.<wbr/></p></span>
7126                   </li>
7127                   <li>
7128                     <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
7129                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7130 position continually to attempt to provide a
7131 constantly-in-focus image stream.<wbr/></p>
7132 <p>The focusing behavior should be suitable for good quality
7133 video recording; typically this means slower focus
7134 movement and no overshoots.<wbr/> When the AF trigger is not
7135 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
7136 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
7137 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
7138 the algorithm should immediately transition into
7139 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7140 lens position until a cancel AF trigger is received.<wbr/></p>
7141 <p>Once cancel is received,<wbr/> the algorithm should transition
7142 back to INACTIVE and resume passive scan.<wbr/> Note that this
7143 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
7144 ongoing PASSIVE_<wbr/>SCAN must immediately be
7145 canceled.<wbr/></p></span>
7146                   </li>
7147                   <li>
7148                     <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
7149                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7150 position continually to attempt to provide a
7151 constantly-in-focus image stream.<wbr/></p>
7152 <p>The focusing behavior should be suitable for still image
7153 capture; typically this means focusing as fast as
7154 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
7155 algorithm should start in INACTIVE state,<wbr/> and then
7156 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
7157 appropriate as it attempts to maintain focus.<wbr/> When the AF
7158 trigger is activated,<wbr/> the algorithm should finish its
7159 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
7160 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7161 lens position until a cancel AF trigger is received.<wbr/></p>
7162 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
7163 should transition back to INACTIVE and then act as if it
7164 has just been started.<wbr/></p></span>
7165                   </li>
7166                   <li>
7167                     <span class="entry_type_enum_name">EDOF (v3.2)</span>
7168                     <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
7169 <p>The camera device will produce images with an extended
7170 depth of field automatically; no special focusing
7171 operations need to be done before taking a picture.<wbr/></p>
7172 <p>AF triggers are ignored,<wbr/> and the AF state will always be
7173 INACTIVE.<wbr/></p></span>
7174                   </li>
7175                 </ul>
7176
7177             </td> <!-- entry_type -->
7178
7179             <td class="entry_description">
7180               <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
7181 mode it is set to.<wbr/></p>
7182             </td>
7183
7184             <td class="entry_units">
7185             </td>
7186
7187             <td class="entry_range">
7188               <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
7189             </td>
7190
7191             <td class="entry_hal_version">
7192               <p>3.<wbr/>2</p>
7193             </td>
7194
7195             <td class="entry_tags">
7196               <ul class="entry_tags">
7197                   <li><a href="#tag_BC">BC</a></li>
7198               </ul>
7199             </td>
7200
7201           </tr>
7202           <tr class="entries_header">
7203             <th class="th_details" colspan="6">Details</th>
7204           </tr>
7205           <tr class="entry_cont">
7206             <td class="entry_details" colspan="6">
7207               <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
7208 (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
7209 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
7210 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
7211 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>
7212 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
7213 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
7214 in result metadata.<wbr/></p>
7215             </td>
7216           </tr>
7217
7218           <tr class="entries_header">
7219             <th class="th_details" colspan="6">HAL Implementation Details</th>
7220           </tr>
7221           <tr class="entry_cont">
7222             <td class="entry_details" colspan="6">
7223               <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
7224 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
7225 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
7226 <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
7227 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
7228 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
7229 the same focal plane remains in focus.<wbr/></p>
7230 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
7231 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
7232 (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
7233 same lock behavior as above.<wbr/></p>
7234 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
7235 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/>
7236 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
7237 manual control.<wbr/></p>
7238 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
7239 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
7240 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
7241 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
7242 that will arise on camera modules with open-loop VCMs.<wbr/></p>
7243             </td>
7244           </tr>
7245
7246           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7247            <!-- end of entry -->
7248         
7249                 
7250           <tr class="entry" id="dynamic_android.control.afRegions">
7251             <td class="entry_name
7252              " rowspan="5">
7253               android.<wbr/>control.<wbr/>af<wbr/>Regions
7254             </td>
7255             <td class="entry_type">
7256                 <span class="entry_type_name">int32</span>
7257                 <span class="entry_type_container">x</span>
7258
7259                 <span class="entry_type_array">
7260                   5 x area_count
7261                 </span>
7262               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7263
7264
7265
7266
7267
7268
7269             </td> <!-- entry_type -->
7270
7271             <td class="entry_description">
7272               <p>List of metering areas to use for auto-focus.<wbr/></p>
7273             </td>
7274
7275             <td class="entry_units">
7276               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7277             </td>
7278
7279             <td class="entry_range">
7280               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7281 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7282             </td>
7283
7284             <td class="entry_hal_version">
7285               <p>3.<wbr/>2</p>
7286             </td>
7287
7288             <td class="entry_tags">
7289               <ul class="entry_tags">
7290                   <li><a href="#tag_BC">BC</a></li>
7291               </ul>
7292             </td>
7293
7294           </tr>
7295           <tr class="entries_header">
7296             <th class="th_details" colspan="6">Details</th>
7297           </tr>
7298           <tr class="entry_cont">
7299             <td class="entry_details" colspan="6">
7300               <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
7301 Otherwise will always be present.<wbr/></p>
7302 <p>The maximum number of focus areas supported by the device is determined by the value
7303 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
7304 <p>The coordinate system is based on the active pixel array,<wbr/>
7305 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7306 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7307 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7308 bottom-right pixel in the active pixel array.<wbr/></p>
7309 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
7310 for every pixel in the area.<wbr/> This means that a large metering area
7311 with the same weight as a smaller area will have more effect in
7312 the metering result.<wbr/> Metering areas can partially overlap and the
7313 camera device will add the weights in the overlap region.<wbr/></p>
7314 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
7315 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
7316 ignored.<wbr/></p>
7317 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7318 camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or
7319 the region selected by the camera device as the focus area of interest.<wbr/></p>
7320 <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
7321 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7322 region and output only the intersection rectangle as the metering region in the result
7323 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
7324 not reported in the result metadata.<wbr/></p>
7325             </td>
7326           </tr>
7327
7328           <tr class="entries_header">
7329             <th class="th_details" colspan="6">HAL Implementation Details</th>
7330           </tr>
7331           <tr class="entry_cont">
7332             <td class="entry_details" colspan="6">
7333               <p>The HAL level representation of MeteringRectangle[] is a
7334 int[5 * area_<wbr/>count].<wbr/>
7335 Every five elements represent a metering region of
7336 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7337 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7338 exclusive on xmax and ymax.<wbr/></p>
7339             </td>
7340           </tr>
7341
7342           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7343            <!-- end of entry -->
7344         
7345                 
7346           <tr class="entry" id="dynamic_android.control.afTrigger">
7347             <td class="entry_name
7348              " rowspan="5">
7349               android.<wbr/>control.<wbr/>af<wbr/>Trigger
7350             </td>
7351             <td class="entry_type">
7352                 <span class="entry_type_name entry_type_name_enum">byte</span>
7353
7354               <span class="entry_type_visibility"> [public]</span>
7355
7356
7357               <span class="entry_type_hwlevel">[legacy] </span>
7358
7359
7360
7361                 <ul class="entry_type_enum">
7362                   <li>
7363                     <span class="entry_type_enum_name">IDLE (v3.2)</span>
7364                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
7365                   </li>
7366                   <li>
7367                     <span class="entry_type_enum_name">START (v3.2)</span>
7368                     <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
7369                   </li>
7370                   <li>
7371                     <span class="entry_type_enum_name">CANCEL (v3.2)</span>
7372                     <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
7373 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
7374                   </li>
7375                 </ul>
7376
7377             </td> <!-- entry_type -->
7378
7379             <td class="entry_description">
7380               <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
7381             </td>
7382
7383             <td class="entry_units">
7384             </td>
7385
7386             <td class="entry_range">
7387             </td>
7388
7389             <td class="entry_hal_version">
7390               <p>3.<wbr/>2</p>
7391             </td>
7392
7393             <td class="entry_tags">
7394               <ul class="entry_tags">
7395                   <li><a href="#tag_BC">BC</a></li>
7396               </ul>
7397             </td>
7398
7399           </tr>
7400           <tr class="entries_header">
7401             <th class="th_details" colspan="6">Details</th>
7402           </tr>
7403           <tr class="entry_cont">
7404             <td class="entry_details" colspan="6">
7405               <p>This entry is normally set to IDLE,<wbr/> or is not
7406 included at all in the request settings.<wbr/></p>
7407 <p>When included and set to START,<wbr/> the camera device will trigger the
7408 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
7409 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
7410 and return to its initial AF state.<wbr/></p>
7411 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
7412 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
7413 START for multiple captures in a row means restarting the AF operation over
7414 and over again.<wbr/></p>
7415 <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>
7416 <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>
7417 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
7418 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
7419 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
7420 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
7421 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
7422             </td>
7423           </tr>
7424
7425           <tr class="entries_header">
7426             <th class="th_details" colspan="6">HAL Implementation Details</th>
7427           </tr>
7428           <tr class="entry_cont">
7429             <td class="entry_details" colspan="6">
7430               <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
7431 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
7432 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
7433 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
7434 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
7435             </td>
7436           </tr>
7437
7438           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7439            <!-- end of entry -->
7440         
7441                 
7442           <tr class="entry" id="dynamic_android.control.afState">
7443             <td class="entry_name
7444              " rowspan="3">
7445               android.<wbr/>control.<wbr/>af<wbr/>State
7446             </td>
7447             <td class="entry_type">
7448                 <span class="entry_type_name entry_type_name_enum">byte</span>
7449
7450               <span class="entry_type_visibility"> [public]</span>
7451
7452
7453               <span class="entry_type_hwlevel">[legacy] </span>
7454
7455
7456
7457                 <ul class="entry_type_enum">
7458                   <li>
7459                     <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
7460                     <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
7461 to scan.<wbr/></p>
7462 <p>When a camera device is opened,<wbr/> it starts in this
7463 state.<wbr/> This is a transient state,<wbr/> the camera device may
7464 skip reporting this state in capture
7465 result.<wbr/></p></span>
7466                   </li>
7467                   <li>
7468                     <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span>
7469                     <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
7470 camera device in a continuous autofocus mode.<wbr/></p>
7471 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7472 state,<wbr/> the camera device may skip reporting this state in
7473 capture result.<wbr/></p></span>
7474                   </li>
7475                   <li>
7476                     <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span>
7477                     <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
7478 restart scanning at any time.<wbr/></p>
7479 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7480 state,<wbr/> the camera device may skip reporting this state in
7481 capture result.<wbr/></p></span>
7482                   </li>
7483                   <li>
7484                     <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span>
7485                     <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
7486 triggered by AF trigger.<wbr/></p>
7487 <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
7488 state,<wbr/> the camera device may skip reporting this state in
7489 capture result.<wbr/></p></span>
7490                   </li>
7491                   <li>
7492                     <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span>
7493                     <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
7494 focus.<wbr/></p>
7495 <p>This state is reached only after an explicit START AF trigger has been
7496 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
7497 <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
7498 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>
7499                   </li>
7500                   <li>
7501                     <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span>
7502                     <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
7503 focus.<wbr/></p>
7504 <p>This state is reached only after an explicit START AF trigger has been
7505 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
7506 <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
7507 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>
7508                   </li>
7509                   <li>
7510                     <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span>
7511                     <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
7512 and may restart scanning at any time.<wbr/></p>
7513 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
7514 device may skip reporting this state in capture result.<wbr/></p>
7515 <p>LEGACY camera devices do not support this state.<wbr/> When a passive
7516 scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
7517                   </li>
7518                 </ul>
7519
7520             </td> <!-- entry_type -->
7521
7522             <td class="entry_description">
7523               <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
7524             </td>
7525
7526             <td class="entry_units">
7527             </td>
7528
7529             <td class="entry_range">
7530             </td>
7531
7532             <td class="entry_hal_version">
7533               <p>3.<wbr/>2</p>
7534             </td>
7535
7536             <td class="entry_tags">
7537             </td>
7538
7539           </tr>
7540           <tr class="entries_header">
7541             <th class="th_details" colspan="6">Details</th>
7542           </tr>
7543           <tr class="entry_cont">
7544             <td class="entry_details" colspan="6">
7545               <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
7546 resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7547 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
7548 the algorithm states to INACTIVE.<wbr/></p>
7549 <p>The camera device can do several state transitions between two results,<wbr/> if it is
7550 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
7551 seen in a result.<wbr/></p>
7552 <p>The state in the result is the state for this image (in sync with this image): if
7553 AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
7554 be sharp.<wbr/></p>
7555 <p>Below are state transition tables for different AF modes.<wbr/></p>
7556 <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>
7557 <table>
7558 <thead>
7559 <tr>
7560 <th align="center">State</th>
7561 <th align="center">Transition Cause</th>
7562 <th align="center">New State</th>
7563 <th align="center">Notes</th>
7564 </tr>
7565 </thead>
7566 <tbody>
7567 <tr>
7568 <td align="center">INACTIVE</td>
7569 <td align="center"></td>
7570 <td align="center">INACTIVE</td>
7571 <td align="center">Never changes</td>
7572 </tr>
7573 </tbody>
7574 </table>
7575 <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>
7576 <table>
7577 <thead>
7578 <tr>
7579 <th align="center">State</th>
7580 <th align="center">Transition Cause</th>
7581 <th align="center">New State</th>
7582 <th align="center">Notes</th>
7583 </tr>
7584 </thead>
7585 <tbody>
7586 <tr>
7587 <td align="center">INACTIVE</td>
7588 <td align="center">AF_<wbr/>TRIGGER</td>
7589 <td align="center">ACTIVE_<wbr/>SCAN</td>
7590 <td align="center">Start AF sweep,<wbr/> Lens now moving</td>
7591 </tr>
7592 <tr>
7593 <td align="center">ACTIVE_<wbr/>SCAN</td>
7594 <td align="center">AF sweep done</td>
7595 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7596 <td align="center">Focused,<wbr/> Lens now locked</td>
7597 </tr>
7598 <tr>
7599 <td align="center">ACTIVE_<wbr/>SCAN</td>
7600 <td align="center">AF sweep done</td>
7601 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7602 <td align="center">Not focused,<wbr/> Lens now locked</td>
7603 </tr>
7604 <tr>
7605 <td align="center">ACTIVE_<wbr/>SCAN</td>
7606 <td align="center">AF_<wbr/>CANCEL</td>
7607 <td align="center">INACTIVE</td>
7608 <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
7609 </tr>
7610 <tr>
7611 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7612 <td align="center">AF_<wbr/>CANCEL</td>
7613 <td align="center">INACTIVE</td>
7614 <td align="center">Cancel/<wbr/>reset AF</td>
7615 </tr>
7616 <tr>
7617 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7618 <td align="center">AF_<wbr/>TRIGGER</td>
7619 <td align="center">ACTIVE_<wbr/>SCAN</td>
7620 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7621 </tr>
7622 <tr>
7623 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7624 <td align="center">AF_<wbr/>CANCEL</td>
7625 <td align="center">INACTIVE</td>
7626 <td align="center">Cancel/<wbr/>reset AF</td>
7627 </tr>
7628 <tr>
7629 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7630 <td align="center">AF_<wbr/>TRIGGER</td>
7631 <td align="center">ACTIVE_<wbr/>SCAN</td>
7632 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7633 </tr>
7634 <tr>
7635 <td align="center">Any state</td>
7636 <td align="center">Mode change</td>
7637 <td align="center">INACTIVE</td>
7638 <td align="center"></td>
7639 </tr>
7640 </tbody>
7641 </table>
7642 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7643 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7644 can be skipped in that manner is called a transient state.<wbr/></p>
7645 <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7646 state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7647 one or more transient states between two results.<wbr/> See below table for examples:</p>
7648 <table>
7649 <thead>
7650 <tr>
7651 <th align="center">State</th>
7652 <th align="center">Transition Cause</th>
7653 <th align="center">New State</th>
7654 <th align="center">Notes</th>
7655 </tr>
7656 </thead>
7657 <tbody>
7658 <tr>
7659 <td align="center">INACTIVE</td>
7660 <td align="center">AF_<wbr/>TRIGGER</td>
7661 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7662 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7663 </tr>
7664 <tr>
7665 <td align="center">INACTIVE</td>
7666 <td align="center">AF_<wbr/>TRIGGER</td>
7667 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7668 <td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7669 </tr>
7670 <tr>
7671 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7672 <td align="center">AF_<wbr/>TRIGGER</td>
7673 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7674 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7675 </tr>
7676 <tr>
7677 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7678 <td align="center">AF_<wbr/>TRIGGER</td>
7679 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7680 <td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7681 </tr>
7682 </tbody>
7683 </table>
7684 <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>
7685 <table>
7686 <thead>
7687 <tr>
7688 <th align="center">State</th>
7689 <th align="center">Transition Cause</th>
7690 <th align="center">New State</th>
7691 <th align="center">Notes</th>
7692 </tr>
7693 </thead>
7694 <tbody>
7695 <tr>
7696 <td align="center">INACTIVE</td>
7697 <td align="center">Camera device initiates new scan</td>
7698 <td align="center">PASSIVE_<wbr/>SCAN</td>
7699 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7700 </tr>
7701 <tr>
7702 <td align="center">INACTIVE</td>
7703 <td align="center">AF_<wbr/>TRIGGER</td>
7704 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7705 <td align="center">AF state query,<wbr/> Lens now locked</td>
7706 </tr>
7707 <tr>
7708 <td align="center">PASSIVE_<wbr/>SCAN</td>
7709 <td align="center">Camera device completes current scan</td>
7710 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7711 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7712 </tr>
7713 <tr>
7714 <td align="center">PASSIVE_<wbr/>SCAN</td>
7715 <td align="center">Camera device fails current scan</td>
7716 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7717 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7718 </tr>
7719 <tr>
7720 <td align="center">PASSIVE_<wbr/>SCAN</td>
7721 <td align="center">AF_<wbr/>TRIGGER</td>
7722 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7723 <td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7724 </tr>
7725 <tr>
7726 <td align="center">PASSIVE_<wbr/>SCAN</td>
7727 <td align="center">AF_<wbr/>TRIGGER</td>
7728 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7729 <td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7730 </tr>
7731 <tr>
7732 <td align="center">PASSIVE_<wbr/>SCAN</td>
7733 <td align="center">AF_<wbr/>CANCEL</td>
7734 <td align="center">INACTIVE</td>
7735 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7736 </tr>
7737 <tr>
7738 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7739 <td align="center">Camera device initiates new scan</td>
7740 <td align="center">PASSIVE_<wbr/>SCAN</td>
7741 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7742 </tr>
7743 <tr>
7744 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7745 <td align="center">Camera device initiates new scan</td>
7746 <td align="center">PASSIVE_<wbr/>SCAN</td>
7747 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7748 </tr>
7749 <tr>
7750 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7751 <td align="center">AF_<wbr/>TRIGGER</td>
7752 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7753 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7754 </tr>
7755 <tr>
7756 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7757 <td align="center">AF_<wbr/>TRIGGER</td>
7758 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7759 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7760 </tr>
7761 <tr>
7762 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7763 <td align="center">AF_<wbr/>TRIGGER</td>
7764 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7765 <td align="center">No effect</td>
7766 </tr>
7767 <tr>
7768 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7769 <td align="center">AF_<wbr/>CANCEL</td>
7770 <td align="center">INACTIVE</td>
7771 <td align="center">Restart AF scan</td>
7772 </tr>
7773 <tr>
7774 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7775 <td align="center">AF_<wbr/>TRIGGER</td>
7776 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7777 <td align="center">No effect</td>
7778 </tr>
7779 <tr>
7780 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7781 <td align="center">AF_<wbr/>CANCEL</td>
7782 <td align="center">INACTIVE</td>
7783 <td align="center">Restart AF scan</td>
7784 </tr>
7785 </tbody>
7786 </table>
7787 <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>
7788 <table>
7789 <thead>
7790 <tr>
7791 <th align="center">State</th>
7792 <th align="center">Transition Cause</th>
7793 <th align="center">New State</th>
7794 <th align="center">Notes</th>
7795 </tr>
7796 </thead>
7797 <tbody>
7798 <tr>
7799 <td align="center">INACTIVE</td>
7800 <td align="center">Camera device initiates new scan</td>
7801 <td align="center">PASSIVE_<wbr/>SCAN</td>
7802 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7803 </tr>
7804 <tr>
7805 <td align="center">INACTIVE</td>
7806 <td align="center">AF_<wbr/>TRIGGER</td>
7807 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7808 <td align="center">AF state query,<wbr/> Lens now locked</td>
7809 </tr>
7810 <tr>
7811 <td align="center">PASSIVE_<wbr/>SCAN</td>
7812 <td align="center">Camera device completes current scan</td>
7813 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7814 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7815 </tr>
7816 <tr>
7817 <td align="center">PASSIVE_<wbr/>SCAN</td>
7818 <td align="center">Camera device fails current scan</td>
7819 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7820 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7821 </tr>
7822 <tr>
7823 <td align="center">PASSIVE_<wbr/>SCAN</td>
7824 <td align="center">AF_<wbr/>TRIGGER</td>
7825 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7826 <td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7827 </tr>
7828 <tr>
7829 <td align="center">PASSIVE_<wbr/>SCAN</td>
7830 <td align="center">AF_<wbr/>TRIGGER</td>
7831 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7832 <td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7833 </tr>
7834 <tr>
7835 <td align="center">PASSIVE_<wbr/>SCAN</td>
7836 <td align="center">AF_<wbr/>CANCEL</td>
7837 <td align="center">INACTIVE</td>
7838 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7839 </tr>
7840 <tr>
7841 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7842 <td align="center">Camera device initiates new scan</td>
7843 <td align="center">PASSIVE_<wbr/>SCAN</td>
7844 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7845 </tr>
7846 <tr>
7847 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7848 <td align="center">Camera device initiates new scan</td>
7849 <td align="center">PASSIVE_<wbr/>SCAN</td>
7850 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7851 </tr>
7852 <tr>
7853 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7854 <td align="center">AF_<wbr/>TRIGGER</td>
7855 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7856 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7857 </tr>
7858 <tr>
7859 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7860 <td align="center">AF_<wbr/>TRIGGER</td>
7861 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7862 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7863 </tr>
7864 <tr>
7865 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7866 <td align="center">AF_<wbr/>TRIGGER</td>
7867 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7868 <td align="center">No effect</td>
7869 </tr>
7870 <tr>
7871 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7872 <td align="center">AF_<wbr/>CANCEL</td>
7873 <td align="center">INACTIVE</td>
7874 <td align="center">Restart AF scan</td>
7875 </tr>
7876 <tr>
7877 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7878 <td align="center">AF_<wbr/>TRIGGER</td>
7879 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7880 <td align="center">No effect</td>
7881 </tr>
7882 <tr>
7883 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7884 <td align="center">AF_<wbr/>CANCEL</td>
7885 <td align="center">INACTIVE</td>
7886 <td align="center">Restart AF scan</td>
7887 </tr>
7888 </tbody>
7889 </table>
7890 <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7891 (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7892 camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7893 will be evaluated in the context of the new mode in the request.<wbr/>
7894 See below table for examples:</p>
7895 <table>
7896 <thead>
7897 <tr>
7898 <th align="center">State</th>
7899 <th align="center">Transition Cause</th>
7900 <th align="center">New State</th>
7901 <th align="center">Notes</th>
7902 </tr>
7903 </thead>
7904 <tbody>
7905 <tr>
7906 <td align="center">any state</td>
7907 <td align="center">CAF--&gt;AUTO mode switch</td>
7908 <td align="center">INACTIVE</td>
7909 <td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7910 </tr>
7911 <tr>
7912 <td align="center">any state</td>
7913 <td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
7914 <td align="center">trigger-reachable states from INACTIVE</td>
7915 <td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7916 </tr>
7917 <tr>
7918 <td align="center">any state</td>
7919 <td align="center">AUTO--&gt;CAF mode switch</td>
7920 <td align="center">passively reachable states from INACTIVE</td>
7921 <td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7922 </tr>
7923 </tbody>
7924 </table>
7925             </td>
7926           </tr>
7927
7928
7929           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7930            <!-- end of entry -->
7931         
7932                 
7933           <tr class="entry" id="dynamic_android.control.afTriggerId">
7934             <td class="entry_name
7935                 entry_name_deprecated
7936              " rowspan="3">
7937               android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7938             </td>
7939             <td class="entry_type">
7940                 <span class="entry_type_name">int32</span>
7941
7942               <span class="entry_type_visibility"> [system]</span>
7943
7944
7945
7946               <span class="entry_type_deprecated">[deprecated] </span>
7947
7948
7949
7950             </td> <!-- entry_type -->
7951
7952             <td class="entry_description">
7953               <p>The ID sent with the latest
7954 CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7955             </td>
7956
7957             <td class="entry_units">
7958             </td>
7959
7960             <td class="entry_range">
7961               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7962             </td>
7963
7964             <td class="entry_hal_version">
7965               <p>3.<wbr/>2</p>
7966             </td>
7967
7968             <td class="entry_tags">
7969             </td>
7970
7971           </tr>
7972           <tr class="entries_header">
7973             <th class="th_details" colspan="6">Details</th>
7974           </tr>
7975           <tr class="entry_cont">
7976             <td class="entry_details" colspan="6">
7977               <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7978 received yet by HAL.<wbr/> Always updated even if AF algorithm
7979 ignores the trigger</p>
7980             </td>
7981           </tr>
7982
7983
7984           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7985            <!-- end of entry -->
7986         
7987                 
7988           <tr class="entry" id="dynamic_android.control.awbLock">
7989             <td class="entry_name
7990              " rowspan="3">
7991               android.<wbr/>control.<wbr/>awb<wbr/>Lock
7992             </td>
7993             <td class="entry_type">
7994                 <span class="entry_type_name entry_type_name_enum">byte</span>
7995
7996               <span class="entry_type_visibility"> [public as boolean]</span>
7997
7998
7999               <span class="entry_type_hwlevel">[legacy] </span>
8000
8001
8002
8003                 <ul class="entry_type_enum">
8004                   <li>
8005                     <span class="entry_type_enum_name">OFF (v3.2)</span>
8006                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
8007 algorithm is free to update its parameters if in AUTO
8008 mode.<wbr/></p></span>
8009                   </li>
8010                   <li>
8011                     <span class="entry_type_enum_name">ON (v3.2)</span>
8012                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
8013 algorithm will not update its parameters while the lock
8014 is active.<wbr/></p></span>
8015                   </li>
8016                 </ul>
8017
8018             </td> <!-- entry_type -->
8019
8020             <td class="entry_description">
8021               <p>Whether auto-white balance (AWB) is currently locked to its
8022 latest calculated values.<wbr/></p>
8023             </td>
8024
8025             <td class="entry_units">
8026             </td>
8027
8028             <td class="entry_range">
8029             </td>
8030
8031             <td class="entry_hal_version">
8032               <p>3.<wbr/>2</p>
8033             </td>
8034
8035             <td class="entry_tags">
8036               <ul class="entry_tags">
8037                   <li><a href="#tag_BC">BC</a></li>
8038               </ul>
8039             </td>
8040
8041           </tr>
8042           <tr class="entries_header">
8043             <th class="th_details" colspan="6">Details</th>
8044           </tr>
8045           <tr class="entry_cont">
8046             <td class="entry_details" colspan="6">
8047               <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
8048 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
8049 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
8050 get locked do not necessarily correspond to the settings that were present in the
8051 latest capture result received from the camera device,<wbr/> since additional captures
8052 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
8053 application is switching between automatic and manual control and wishes to eliminate
8054 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
8055 <ol>
8056 <li>Starting in auto-AWB mode:</li>
8057 <li>Lock AWB</li>
8058 <li>Wait for the first result to be output that has the AWB locked</li>
8059 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
8060 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
8061 </ol>
8062 <p>Note that AWB lock is only meaningful when
8063 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
8064 AWB is already fixed to a specific setting.<wbr/></p>
8065 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
8066             </td>
8067           </tr>
8068
8069
8070           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8071            <!-- end of entry -->
8072         
8073                 
8074           <tr class="entry" id="dynamic_android.control.awbMode">
8075             <td class="entry_name
8076              " rowspan="3">
8077               android.<wbr/>control.<wbr/>awb<wbr/>Mode
8078             </td>
8079             <td class="entry_type">
8080                 <span class="entry_type_name entry_type_name_enum">byte</span>
8081
8082               <span class="entry_type_visibility"> [public]</span>
8083
8084
8085               <span class="entry_type_hwlevel">[legacy] </span>
8086
8087
8088
8089                 <ul class="entry_type_enum">
8090                   <li>
8091                     <span class="entry_type_enum_name">OFF (v3.2)</span>
8092                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
8093 <p>The application-selected color transform matrix
8094 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
8095 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
8096 device for manual white balance control.<wbr/></p></span>
8097                   </li>
8098                   <li>
8099                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
8100                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
8101 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8102 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8103 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8104 values used by the camera device for the transform and gains
8105 will be available in the capture result for this request.<wbr/></p></span>
8106                   </li>
8107                   <li>
8108                     <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
8109                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8110 the camera device uses incandescent light as the assumed scene
8111 illumination for white balance.<wbr/></p>
8112 <p>While the exact white balance transforms are up to the
8113 camera device,<wbr/> they will approximately match the CIE
8114 standard illuminant A.<wbr/></p>
8115 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8116 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8117 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8118 values used by the camera device for the transform and gains
8119 will be available in the capture result for this request.<wbr/></p></span>
8120                   </li>
8121                   <li>
8122                     <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
8123                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8124 the camera device uses fluorescent light as the assumed scene
8125 illumination for white balance.<wbr/></p>
8126 <p>While the exact white balance transforms are up to the
8127 camera device,<wbr/> they will approximately match the CIE
8128 standard illuminant F2.<wbr/></p>
8129 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8130 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8131 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8132 values used by the camera device for the transform and gains
8133 will be available in the capture result for this request.<wbr/></p></span>
8134                   </li>
8135                   <li>
8136                     <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
8137                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8138 the camera device uses warm fluorescent light as the assumed scene
8139 illumination for white balance.<wbr/></p>
8140 <p>While the exact white balance transforms are up to the
8141 camera device,<wbr/> they will approximately match the CIE
8142 standard illuminant F4.<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">DAYLIGHT (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 daylight light as the assumed scene
8153 illumination for white balance.<wbr/></p>
8154 <p>While the exact white balance transforms are up to the
8155 camera device,<wbr/> they will approximately match the CIE
8156 standard illuminant D65.<wbr/></p>
8157 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8158 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8159 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8160 values used by the camera device for the transform and gains
8161 will be available in the capture result for this request.<wbr/></p></span>
8162                   </li>
8163                   <li>
8164                     <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
8165                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8166 the camera device uses cloudy daylight light as the assumed scene
8167 illumination for white balance.<wbr/></p>
8168 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8169 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8170 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8171 values used by the camera device for the transform and gains
8172 will be available in the capture result for this request.<wbr/></p></span>
8173                   </li>
8174                   <li>
8175                     <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
8176                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8177 the camera device uses twilight light as the assumed scene
8178 illumination for white balance.<wbr/></p>
8179 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8180 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8181 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8182 values used by the camera device for the transform and gains
8183 will be available in the capture result for this request.<wbr/></p></span>
8184                   </li>
8185                   <li>
8186                     <span class="entry_type_enum_name">SHADE (v3.2)</span>
8187                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8188 the camera device uses shade light as the assumed scene
8189 illumination for white balance.<wbr/></p>
8190 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8191 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8192 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8193 values used by the camera device for the transform and gains
8194 will be available in the capture result for this request.<wbr/></p></span>
8195                   </li>
8196                 </ul>
8197
8198             </td> <!-- entry_type -->
8199
8200             <td class="entry_description">
8201               <p>Whether auto-white balance (AWB) is currently setting the color
8202 transform fields,<wbr/> and what its illumination target
8203 is.<wbr/></p>
8204             </td>
8205
8206             <td class="entry_units">
8207             </td>
8208
8209             <td class="entry_range">
8210               <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
8211             </td>
8212
8213             <td class="entry_hal_version">
8214               <p>3.<wbr/>2</p>
8215             </td>
8216
8217             <td class="entry_tags">
8218               <ul class="entry_tags">
8219                   <li><a href="#tag_BC">BC</a></li>
8220               </ul>
8221             </td>
8222
8223           </tr>
8224           <tr class="entries_header">
8225             <th class="th_details" colspan="6">Details</th>
8226           </tr>
8227           <tr class="entry_cont">
8228             <td class="entry_details" colspan="6">
8229               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
8230 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
8231 routine is enabled,<wbr/> overriding the application's selected
8232 <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
8233 <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>
8234 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
8235 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
8236 setting AE mode to OFF.<wbr/></p>
8237 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
8238 routine is disabled.<wbr/> The application manually controls the white
8239 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>
8240 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
8241 <p>When set to any other modes,<wbr/> the camera device's auto-white
8242 balance routine is disabled.<wbr/> The camera device uses each
8243 particular illumination target for white balance
8244 adjustment.<wbr/> The application's values for
8245 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
8246 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
8247 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
8248             </td>
8249           </tr>
8250
8251
8252           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8253            <!-- end of entry -->
8254         
8255                 
8256           <tr class="entry" id="dynamic_android.control.awbRegions">
8257             <td class="entry_name
8258              " rowspan="5">
8259               android.<wbr/>control.<wbr/>awb<wbr/>Regions
8260             </td>
8261             <td class="entry_type">
8262                 <span class="entry_type_name">int32</span>
8263                 <span class="entry_type_container">x</span>
8264
8265                 <span class="entry_type_array">
8266                   5 x area_count
8267                 </span>
8268               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
8269
8270
8271
8272
8273
8274
8275             </td> <!-- entry_type -->
8276
8277             <td class="entry_description">
8278               <p>List of metering areas to use for auto-white-balance illuminant
8279 estimation.<wbr/></p>
8280             </td>
8281
8282             <td class="entry_units">
8283               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
8284             </td>
8285
8286             <td class="entry_range">
8287               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
8288 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
8289             </td>
8290
8291             <td class="entry_hal_version">
8292               <p>3.<wbr/>2</p>
8293             </td>
8294
8295             <td class="entry_tags">
8296               <ul class="entry_tags">
8297                   <li><a href="#tag_BC">BC</a></li>
8298               </ul>
8299             </td>
8300
8301           </tr>
8302           <tr class="entries_header">
8303             <th class="th_details" colspan="6">Details</th>
8304           </tr>
8305           <tr class="entry_cont">
8306             <td class="entry_details" colspan="6">
8307               <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
8308 Otherwise will always be present.<wbr/></p>
8309 <p>The maximum number of regions supported by the device is determined by the value
8310 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
8311 <p>The coordinate system is based on the active pixel array,<wbr/>
8312 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
8313 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
8314 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
8315 bottom-right pixel in the active pixel array.<wbr/></p>
8316 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
8317 for every pixel in the area.<wbr/> This means that a large metering area
8318 with the same weight as a smaller area will have more effect in
8319 the metering result.<wbr/> Metering areas can partially overlap and the
8320 camera device will add the weights in the overlap region.<wbr/></p>
8321 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
8322 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
8323 0 weight is ignored.<wbr/></p>
8324 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
8325 camera device.<wbr/></p>
8326 <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
8327 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
8328 region and output only the intersection rectangle as the metering region in the result
8329 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
8330 not reported in the result metadata.<wbr/></p>
8331             </td>
8332           </tr>
8333
8334           <tr class="entries_header">
8335             <th class="th_details" colspan="6">HAL Implementation Details</th>
8336           </tr>
8337           <tr class="entry_cont">
8338             <td class="entry_details" colspan="6">
8339               <p>The HAL level representation of MeteringRectangle[] is a
8340 int[5 * area_<wbr/>count].<wbr/>
8341 Every five elements represent a metering region of
8342 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
8343 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
8344 exclusive on xmax and ymax.<wbr/></p>
8345             </td>
8346           </tr>
8347
8348           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8349            <!-- end of entry -->
8350         
8351                 
8352           <tr class="entry" id="dynamic_android.control.captureIntent">
8353             <td class="entry_name
8354              " rowspan="3">
8355               android.<wbr/>control.<wbr/>capture<wbr/>Intent
8356             </td>
8357             <td class="entry_type">
8358                 <span class="entry_type_name entry_type_name_enum">byte</span>
8359
8360               <span class="entry_type_visibility"> [public]</span>
8361
8362
8363               <span class="entry_type_hwlevel">[legacy] </span>
8364
8365
8366
8367                 <ul class="entry_type_enum">
8368                   <li>
8369                     <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
8370                     <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
8371 categories.<wbr/> The camera device will default to preview-like
8372 behavior.<wbr/></p></span>
8373                   </li>
8374                   <li>
8375                     <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
8376                     <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
8377 <p>The precapture trigger may be used to start off a metering
8378 w/<wbr/>flash sequence.<wbr/></p></span>
8379                   </li>
8380                   <li>
8381                     <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
8382                     <span class="entry_type_enum_notes"><p>This request is for a still capture-type
8383 use case.<wbr/></p>
8384 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
8385                   </li>
8386                   <li>
8387                     <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
8388                     <span class="entry_type_enum_notes"><p>This request is for a video recording
8389 use case.<wbr/></p></span>
8390                   </li>
8391                   <li>
8392                     <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
8393                     <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
8394 image while recording video) use case.<wbr/></p>
8395 <p>The camera device should take the highest-quality image
8396 possible (given the other settings) without disrupting the
8397 frame rate of video recording.<wbr/>  </p></span>
8398                   </li>
8399                   <li>
8400                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
8401                     <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
8402 application will stream full-resolution images and
8403 reprocess one or several later for a final
8404 capture.<wbr/></p></span>
8405                   </li>
8406                   <li>
8407                     <span class="entry_type_enum_name">MANUAL (v3.2)</span>
8408                     <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
8409 the applications want to directly control the capture parameters.<wbr/></p>
8410 <p>For example,<wbr/> the application may wish to manually control
8411 <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>
8412                   </li>
8413                   <li>
8414                     <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
8415                     <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
8416 the application will use camera and inertial sensor data to
8417 locate and track objects in the world.<wbr/></p>
8418 <p>The camera device auto-exposure routine will limit the exposure time
8419 of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
8420                   </li>
8421                 </ul>
8422
8423             </td> <!-- entry_type -->
8424
8425             <td class="entry_description">
8426               <p>Information to the camera device 3A (auto-exposure,<wbr/>
8427 auto-focus,<wbr/> auto-white balance) routines about the purpose
8428 of this capture,<wbr/> to help the camera device to decide optimal 3A
8429 strategy.<wbr/></p>
8430             </td>
8431
8432             <td class="entry_units">
8433             </td>
8434
8435             <td class="entry_range">
8436             </td>
8437
8438             <td class="entry_hal_version">
8439               <p>3.<wbr/>2</p>
8440             </td>
8441
8442             <td class="entry_tags">
8443               <ul class="entry_tags">
8444                   <li><a href="#tag_BC">BC</a></li>
8445               </ul>
8446             </td>
8447
8448           </tr>
8449           <tr class="entries_header">
8450             <th class="th_details" colspan="6">Details</th>
8451           </tr>
8452           <tr class="entry_cont">
8453             <td class="entry_details" colspan="6">
8454               <p>This control (except for MANUAL) is only effective if
8455 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
8456 <p>All intents are supported by all devices,<wbr/> except that:
8457   * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8458 PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
8459   * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8460 MANUAL_<wbr/>SENSOR.<wbr/>
8461   * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8462 MOTION_<wbr/>TRACKING.<wbr/></p>
8463             </td>
8464           </tr>
8465
8466
8467           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8468            <!-- end of entry -->
8469         
8470                 
8471           <tr class="entry" id="dynamic_android.control.awbState">
8472             <td class="entry_name
8473              " rowspan="3">
8474               android.<wbr/>control.<wbr/>awb<wbr/>State
8475             </td>
8476             <td class="entry_type">
8477                 <span class="entry_type_name entry_type_name_enum">byte</span>
8478
8479               <span class="entry_type_visibility"> [public]</span>
8480
8481
8482               <span class="entry_type_hwlevel">[limited] </span>
8483
8484
8485
8486                 <ul class="entry_type_enum">
8487                   <li>
8488                     <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
8489                     <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
8490 <p>When a camera device is opened,<wbr/> it starts in this
8491 state.<wbr/> This is a transient state,<wbr/> the camera device may
8492 skip reporting this state in capture
8493 result.<wbr/></p></span>
8494                   </li>
8495                   <li>
8496                     <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
8497                     <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
8498 values for the current scene.<wbr/></p>
8499 <p>This is a transient state,<wbr/> the camera device
8500 may skip reporting this state in capture result.<wbr/></p></span>
8501                   </li>
8502                   <li>
8503                     <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
8504                     <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
8505 current scene.<wbr/></p></span>
8506                   </li>
8507                   <li>
8508                     <span class="entry_type_enum_name">LOCKED (v3.2)</span>
8509                     <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
8510                   </li>
8511                 </ul>
8512
8513             </td> <!-- entry_type -->
8514
8515             <td class="entry_description">
8516               <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
8517             </td>
8518
8519             <td class="entry_units">
8520             </td>
8521
8522             <td class="entry_range">
8523             </td>
8524
8525             <td class="entry_hal_version">
8526               <p>3.<wbr/>2</p>
8527             </td>
8528
8529             <td class="entry_tags">
8530             </td>
8531
8532           </tr>
8533           <tr class="entries_header">
8534             <th class="th_details" colspan="6">Details</th>
8535           </tr>
8536           <tr class="entry_cont">
8537             <td class="entry_details" colspan="6">
8538               <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
8539 resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8540 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
8541 the algorithm states to INACTIVE.<wbr/></p>
8542 <p>The camera device can do several state transitions between two results,<wbr/> if it is
8543 allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
8544 a result.<wbr/></p>
8545 <p>The state in the result is the state for this image (in sync with this image): if
8546 AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
8547 be good to use.<wbr/></p>
8548 <p>Below are state transition tables for different AWB modes.<wbr/></p>
8549 <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
8550 <table>
8551 <thead>
8552 <tr>
8553 <th align="center">State</th>
8554 <th align="center">Transition Cause</th>
8555 <th align="center">New State</th>
8556 <th align="center">Notes</th>
8557 </tr>
8558 </thead>
8559 <tbody>
8560 <tr>
8561 <td align="center">INACTIVE</td>
8562 <td align="center"></td>
8563 <td align="center">INACTIVE</td>
8564 <td align="center">Camera device auto white balance algorithm is disabled</td>
8565 </tr>
8566 </tbody>
8567 </table>
8568 <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
8569 <table>
8570 <thead>
8571 <tr>
8572 <th align="center">State</th>
8573 <th align="center">Transition Cause</th>
8574 <th align="center">New State</th>
8575 <th align="center">Notes</th>
8576 </tr>
8577 </thead>
8578 <tbody>
8579 <tr>
8580 <td align="center">INACTIVE</td>
8581 <td align="center">Camera device initiates AWB scan</td>
8582 <td align="center">SEARCHING</td>
8583 <td align="center">Values changing</td>
8584 </tr>
8585 <tr>
8586 <td align="center">INACTIVE</td>
8587 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8588 <td align="center">LOCKED</td>
8589 <td align="center">Values locked</td>
8590 </tr>
8591 <tr>
8592 <td align="center">SEARCHING</td>
8593 <td align="center">Camera device finishes AWB scan</td>
8594 <td align="center">CONVERGED</td>
8595 <td align="center">Good values,<wbr/> not changing</td>
8596 </tr>
8597 <tr>
8598 <td align="center">SEARCHING</td>
8599 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8600 <td align="center">LOCKED</td>
8601 <td align="center">Values locked</td>
8602 </tr>
8603 <tr>
8604 <td align="center">CONVERGED</td>
8605 <td align="center">Camera device initiates AWB scan</td>
8606 <td align="center">SEARCHING</td>
8607 <td align="center">Values changing</td>
8608 </tr>
8609 <tr>
8610 <td align="center">CONVERGED</td>
8611 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8612 <td align="center">LOCKED</td>
8613 <td align="center">Values locked</td>
8614 </tr>
8615 <tr>
8616 <td align="center">LOCKED</td>
8617 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8618 <td align="center">SEARCHING</td>
8619 <td align="center">Values not good after unlock</td>
8620 </tr>
8621 </tbody>
8622 </table>
8623 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8624 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8625 can be skipped in that manner is called a transient state.<wbr/></p>
8626 <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
8627 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
8628 transient states between two results.<wbr/> See below table for examples:</p>
8629 <table>
8630 <thead>
8631 <tr>
8632 <th align="center">State</th>
8633 <th align="center">Transition Cause</th>
8634 <th align="center">New State</th>
8635 <th align="center">Notes</th>
8636 </tr>
8637 </thead>
8638 <tbody>
8639 <tr>
8640 <td align="center">INACTIVE</td>
8641 <td align="center">Camera device finished AWB scan</td>
8642 <td align="center">CONVERGED</td>
8643 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
8644 </tr>
8645 <tr>
8646 <td align="center">LOCKED</td>
8647 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8648 <td align="center">CONVERGED</td>
8649 <td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
8650 </tr>
8651 </tbody>
8652 </table>
8653             </td>
8654           </tr>
8655
8656
8657           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8658            <!-- end of entry -->
8659         
8660                 
8661           <tr class="entry" id="dynamic_android.control.effectMode">
8662             <td class="entry_name
8663              " rowspan="3">
8664               android.<wbr/>control.<wbr/>effect<wbr/>Mode
8665             </td>
8666             <td class="entry_type">
8667                 <span class="entry_type_name entry_type_name_enum">byte</span>
8668
8669               <span class="entry_type_visibility"> [public]</span>
8670
8671
8672               <span class="entry_type_hwlevel">[legacy] </span>
8673
8674
8675
8676                 <ul class="entry_type_enum">
8677                   <li>
8678                     <span class="entry_type_enum_name">OFF (v3.2)</span>
8679                     <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8680                   </li>
8681                   <li>
8682                     <span class="entry_type_enum_name">MONO (v3.2)</span>
8683                     <span class="entry_type_enum_optional">[optional]</span>
8684                     <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8685 a single color.<wbr/></p>
8686 <p>This will typically be grayscale.<wbr/></p></span>
8687                   </li>
8688                   <li>
8689                     <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
8690                     <span class="entry_type_enum_optional">[optional]</span>
8691                     <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8692 are inverted.<wbr/></p></span>
8693                   </li>
8694                   <li>
8695                     <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
8696                     <span class="entry_type_enum_optional">[optional]</span>
8697                     <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8698 image is wholly or partially reversed in
8699 tone.<wbr/></p></span>
8700                   </li>
8701                   <li>
8702                     <span class="entry_type_enum_name">SEPIA (v3.2)</span>
8703                     <span class="entry_type_enum_optional">[optional]</span>
8704                     <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8705 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8706                   </li>
8707                   <li>
8708                     <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
8709                     <span class="entry_type_enum_optional">[optional]</span>
8710                     <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8711 discrete regions of tone rather than a continuous
8712 gradient of tones.<wbr/></p></span>
8713                   </li>
8714                   <li>
8715                     <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
8716                     <span class="entry_type_enum_optional">[optional]</span>
8717                     <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8718 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8719                   </li>
8720                   <li>
8721                     <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
8722                     <span class="entry_type_enum_optional">[optional]</span>
8723                     <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8724 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8725                   </li>
8726                   <li>
8727                     <span class="entry_type_enum_name">AQUA (v3.2)</span>
8728                     <span class="entry_type_enum_optional">[optional]</span>
8729                     <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8730                   </li>
8731                 </ul>
8732
8733             </td> <!-- entry_type -->
8734
8735             <td class="entry_description">
8736               <p>A special color effect to apply.<wbr/></p>
8737             </td>
8738
8739             <td class="entry_units">
8740             </td>
8741
8742             <td class="entry_range">
8743               <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8744             </td>
8745
8746             <td class="entry_hal_version">
8747               <p>3.<wbr/>2</p>
8748             </td>
8749
8750             <td class="entry_tags">
8751               <ul class="entry_tags">
8752                   <li><a href="#tag_BC">BC</a></li>
8753               </ul>
8754             </td>
8755
8756           </tr>
8757           <tr class="entries_header">
8758             <th class="th_details" colspan="6">Details</th>
8759           </tr>
8760           <tr class="entry_cont">
8761             <td class="entry_details" colspan="6">
8762               <p>When this mode is set,<wbr/> a color effect will be applied
8763 to images produced by the camera device.<wbr/> The interpretation
8764 and implementation of these color effects is left to the
8765 implementor of the camera device,<wbr/> and should not be
8766 depended on to be consistent (or present) across all
8767 devices.<wbr/></p>
8768             </td>
8769           </tr>
8770
8771
8772           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8773            <!-- end of entry -->
8774         
8775                 
8776           <tr class="entry" id="dynamic_android.control.mode">
8777             <td class="entry_name
8778              " rowspan="3">
8779               android.<wbr/>control.<wbr/>mode
8780             </td>
8781             <td class="entry_type">
8782                 <span class="entry_type_name entry_type_name_enum">byte</span>
8783
8784               <span class="entry_type_visibility"> [public]</span>
8785
8786
8787               <span class="entry_type_hwlevel">[legacy] </span>
8788
8789
8790
8791                 <ul class="entry_type_enum">
8792                   <li>
8793                     <span class="entry_type_enum_name">OFF (v3.2)</span>
8794                     <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8795 <p>All control by the device's metering and focusing (3A)
8796 routines is disabled,<wbr/> and no other settings in
8797 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8798 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8799 device to select post-processing values for processing
8800 blocks that do not allow for manual control,<wbr/> or are not
8801 exposed by the camera API.<wbr/></p>
8802 <p>However,<wbr/> the camera device's 3A routines may continue to
8803 collect statistics and update their internal state so that
8804 when control is switched to AUTO mode,<wbr/> good control values
8805 can be immediately applied.<wbr/></p></span>
8806                   </li>
8807                   <li>
8808                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
8809                     <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8810 <p>Manual control of capture parameters is disabled.<wbr/> All
8811 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8812 effect.<wbr/></p></span>
8813                   </li>
8814                   <li>
8815                     <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
8816                     <span class="entry_type_enum_optional">[optional]</span>
8817                     <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8818 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8819 control.<wbr/>afMode controls; the camera device will ignore
8820 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8821 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8822 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8823 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8824 contain some modes other than DISABLED).<wbr/></p></span>
8825                   </li>
8826                   <li>
8827                     <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
8828                     <span class="entry_type_enum_optional">[optional]</span>
8829                     <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8830 used by camera device background auto-exposure,<wbr/> auto-white balance and
8831 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8832 <p>Specifically,<wbr/> the 3A routines are locked to the last
8833 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8834 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8835 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8836 discarded by the camera device.<wbr/></p></span>
8837                   </li>
8838                 </ul>
8839
8840             </td> <!-- entry_type -->
8841
8842             <td class="entry_description">
8843               <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8844 routines.<wbr/></p>
8845             </td>
8846
8847             <td class="entry_units">
8848             </td>
8849
8850             <td class="entry_range">
8851               <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8852             </td>
8853
8854             <td class="entry_hal_version">
8855               <p>3.<wbr/>2</p>
8856             </td>
8857
8858             <td class="entry_tags">
8859               <ul class="entry_tags">
8860                   <li><a href="#tag_BC">BC</a></li>
8861               </ul>
8862             </td>
8863
8864           </tr>
8865           <tr class="entries_header">
8866             <th class="th_details" colspan="6">Details</th>
8867           </tr>
8868           <tr class="entry_cont">
8869             <td class="entry_details" colspan="6">
8870               <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8871 by the camera device is disabled.<wbr/> The application must set the fields for
8872 capture parameters itself.<wbr/></p>
8873 <p>When set to AUTO,<wbr/> the individual algorithm controls in
8874 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>
8875 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8876 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
8877 implements one of the scene mode settings (such as ACTION,<wbr/>
8878 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
8879 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8880 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8881 is that this frame will not be used by camera device background 3A statistics
8882 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8883 where the application doesn't want a 3A manual control capture to affect
8884 the subsequent auto 3A capture results.<wbr/></p>
8885             </td>
8886           </tr>
8887
8888
8889           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8890            <!-- end of entry -->
8891         
8892                 
8893           <tr class="entry" id="dynamic_android.control.sceneMode">
8894             <td class="entry_name
8895              " rowspan="5">
8896               android.<wbr/>control.<wbr/>scene<wbr/>Mode
8897             </td>
8898             <td class="entry_type">
8899                 <span class="entry_type_name entry_type_name_enum">byte</span>
8900
8901               <span class="entry_type_visibility"> [public]</span>
8902
8903
8904               <span class="entry_type_hwlevel">[legacy] </span>
8905
8906
8907
8908                 <ul class="entry_type_enum">
8909                   <li>
8910                     <span class="entry_type_enum_name">DISABLED (v3.2)</span>
8911                     <span class="entry_type_enum_value">0</span>
8912                     <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8913                   </li>
8914                   <li>
8915                     <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
8916                     <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8917 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8918 auto-exposure routines.<wbr/></p>
8919 <p>If face detection statistics are disabled
8920 (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/>
8921 this should still operate correctly (but will not return
8922 face detection statistics to the framework).<wbr/></p>
8923 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8924 <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>
8925 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8926                   </li>
8927                   <li>
8928                     <span class="entry_type_enum_name">ACTION (v3.2)</span>
8929                     <span class="entry_type_enum_optional">[optional]</span>
8930                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8931 <p>Similar to SPORTS.<wbr/></p></span>
8932                   </li>
8933                   <li>
8934                     <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
8935                     <span class="entry_type_enum_optional">[optional]</span>
8936                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8937                   </li>
8938                   <li>
8939                     <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
8940                     <span class="entry_type_enum_optional">[optional]</span>
8941                     <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8942                   </li>
8943                   <li>
8944                     <span class="entry_type_enum_name">NIGHT (v3.2)</span>
8945                     <span class="entry_type_enum_optional">[optional]</span>
8946                     <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8947                   </li>
8948                   <li>
8949                     <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
8950                     <span class="entry_type_enum_optional">[optional]</span>
8951                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8952 settings.<wbr/></p></span>
8953                   </li>
8954                   <li>
8955                     <span class="entry_type_enum_name">THEATRE (v3.2)</span>
8956                     <span class="entry_type_enum_optional">[optional]</span>
8957                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8958 remain off.<wbr/></p></span>
8959                   </li>
8960                   <li>
8961                     <span class="entry_type_enum_name">BEACH (v3.2)</span>
8962                     <span class="entry_type_enum_optional">[optional]</span>
8963                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8964                   </li>
8965                   <li>
8966                     <span class="entry_type_enum_name">SNOW (v3.2)</span>
8967                     <span class="entry_type_enum_optional">[optional]</span>
8968                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8969                   </li>
8970                   <li>
8971                     <span class="entry_type_enum_name">SUNSET (v3.2)</span>
8972                     <span class="entry_type_enum_optional">[optional]</span>
8973                     <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8974                   </li>
8975                   <li>
8976                     <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
8977                     <span class="entry_type_enum_optional">[optional]</span>
8978                     <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8979 device motion (for example: due to hand shake).<wbr/></p></span>
8980                   </li>
8981                   <li>
8982                     <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
8983                     <span class="entry_type_enum_optional">[optional]</span>
8984                     <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8985                   </li>
8986                   <li>
8987                     <span class="entry_type_enum_name">SPORTS (v3.2)</span>
8988                     <span class="entry_type_enum_optional">[optional]</span>
8989                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8990 <p>Similar to ACTION.<wbr/></p></span>
8991                   </li>
8992                   <li>
8993                     <span class="entry_type_enum_name">PARTY (v3.2)</span>
8994                     <span class="entry_type_enum_optional">[optional]</span>
8995                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8996 people.<wbr/></p></span>
8997                   </li>
8998                   <li>
8999                     <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
9000                     <span class="entry_type_enum_optional">[optional]</span>
9001                     <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
9002 is a flame.<wbr/></p></span>
9003                   </li>
9004                   <li>
9005                     <span class="entry_type_enum_name">BARCODE (v3.2)</span>
9006                     <span class="entry_type_enum_optional">[optional]</span>
9007                     <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
9008 for use by camera applications that wish to read the
9009 barcode value.<wbr/></p></span>
9010                   </li>
9011                   <li>
9012                     <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
9013                     <span class="entry_type_enum_deprecated">[deprecated]</span>
9014                     <span class="entry_type_enum_optional">[optional]</span>
9015                     <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>
9016 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
9017 for high speed video recording.<wbr/></p>
9018 <p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
9019 <p>The supported high speed video sizes and fps ranges are specified in
9020 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
9021 output frame rates,<wbr/> the application is only allowed to select video size
9022 and fps range combinations listed in this static metadata.<wbr/> The fps range
9023 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
9024 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
9025 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
9026 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
9027 and post-processing parameters is possible.<wbr/> All other controls operate the
9028 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
9029 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
9030 <ul>
9031 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
9032 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
9033 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
9034 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
9035 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
9036 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
9037 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
9038 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
9039 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
9040 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
9041 </ul>
9042 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
9043 <ul>
9044 <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>
9045 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
9046 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
9047 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
9048 </ul>
9049 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
9050 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
9051 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
9052 the application need check if the video encoder is capable of supporting the
9053 high frame rate for a given video size,<wbr/> or it will end up with lower recording
9054 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
9055 rate will be bounded by the screen refresh rate.<wbr/></p>
9056 <p>The camera device will only support up to 2 output high speed streams
9057 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
9058 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
9059 <ul>
9060 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
9061 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
9062 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>
9063 <li>The stream sizes are selected from the sizes reported by
9064 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
9065 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
9066 </ul>
9067 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
9068 <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/>
9069 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
9070 and the returned capture result metadata will give the fps range choosen
9071 by the camera device.<wbr/></p>
9072 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
9073 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
9074 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
9075                   </li>
9076                   <li>
9077                     <span class="entry_type_enum_name">HDR (v3.2)</span>
9078                     <span class="entry_type_enum_optional">[optional]</span>
9079                     <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
9080 <p>In this scene mode,<wbr/> the camera device captures images
9081 that keep a larger range of scene illumination levels
9082 visible in the final image.<wbr/> For example,<wbr/> when taking a
9083 picture of a object in front of a bright window,<wbr/> both
9084 the object and the scene through the window may be
9085 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
9086 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
9087 HDR mode generally takes much longer to capture a single
9088 image,<wbr/> has no user control,<wbr/> and may have other artifacts
9089 depending on the HDR method used.<wbr/></p>
9090 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
9091 than regular captures.<wbr/></p>
9092 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
9093 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
9094 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
9095 using a high dynamic range capture technique.<wbr/>  On LEGACY
9096 devices,<wbr/> captures that target a JPEG-format output will
9097 be captured with HDR,<wbr/> and the capture intent is not
9098 relevant.<wbr/></p>
9099 <p>The HDR capture may involve the device capturing a burst
9100 of images internally and combining them into one,<wbr/> or it
9101 may involve the device using specialized high dynamic
9102 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
9103 produced in response to a capture request submitted
9104 while in HDR mode.<wbr/></p>
9105 <p>Since substantial post-processing is generally needed to
9106 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
9107 outputs are supported for LIMITED/<wbr/>FULL device HDR
9108 captures,<wbr/> and only JPEG outputs are supported for LEGACY
9109 HDR captures.<wbr/> Using a RAW output for HDR capture is not
9110 supported.<wbr/></p>
9111 <p>Some devices may also support always-on HDR,<wbr/> which
9112 applies HDR processing at full frame rate.<wbr/>  For these
9113 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
9114 produce an HDR output with no frame rate impact compared
9115 to normal operation,<wbr/> though the quality may be lower
9116 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
9117 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
9118 or capture intents,<wbr/> the images captured will be as if
9119 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
9120                   </li>
9121                   <li>
9122                     <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
9123                     <span class="entry_type_enum_optional">[optional]</span>
9124                     <span class="entry_type_enum_hidden">[hidden]</span>
9125                     <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
9126 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
9127 under low light conditions.<wbr/></p>
9128 <p>The camera device may be tuned to expose the images in a reduced
9129 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
9130 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/>
9131 the camera device auto-exposure routine tuning process may limit the actual
9132 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
9133 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
9134 low light may be under-exposed when the sensor max exposure time (bounded by the
9135 <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
9136 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
9137 camera device auto-exposure routine to increase the sensitivity up to the max
9138 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
9139 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
9140 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
9141 recommended that the application only use this scene mode when it is capable of
9142 reducing the noise level of the captured images.<wbr/></p>
9143 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9144 <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>
9145 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
9146                   </li>
9147                   <li>
9148                     <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
9149                     <span class="entry_type_enum_optional">[optional]</span>
9150                     <span class="entry_type_enum_hidden">[hidden]</span>
9151                     <span class="entry_type_enum_value">100</span>
9152                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9153 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9154 customized scene modes.<wbr/></p></span>
9155                   </li>
9156                   <li>
9157                     <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
9158                     <span class="entry_type_enum_optional">[optional]</span>
9159                     <span class="entry_type_enum_hidden">[hidden]</span>
9160                     <span class="entry_type_enum_value">127</span>
9161                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9162 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9163 customized scene modes.<wbr/></p></span>
9164                   </li>
9165                 </ul>
9166
9167             </td> <!-- entry_type -->
9168
9169             <td class="entry_description">
9170               <p>Control for which scene mode is currently active.<wbr/></p>
9171             </td>
9172
9173             <td class="entry_units">
9174             </td>
9175
9176             <td class="entry_range">
9177               <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
9178             </td>
9179
9180             <td class="entry_hal_version">
9181               <p>3.<wbr/>2</p>
9182             </td>
9183
9184             <td class="entry_tags">
9185               <ul class="entry_tags">
9186                   <li><a href="#tag_BC">BC</a></li>
9187               </ul>
9188             </td>
9189
9190           </tr>
9191           <tr class="entries_header">
9192             <th class="th_details" colspan="6">Details</th>
9193           </tr>
9194           <tr class="entry_cont">
9195             <td class="entry_details" colspan="6">
9196               <p>Scene modes are custom camera modes optimized for a certain set of conditions and
9197 capture settings.<wbr/></p>
9198 <p>This is the mode that that is active when
9199 <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
9200 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>
9201 while in use.<wbr/></p>
9202 <p>The interpretation and implementation of these scene modes is left
9203 to the implementor of the camera device.<wbr/> Their behavior will not be
9204 consistent across all devices,<wbr/> and any given device may only implement
9205 a subset of these modes.<wbr/></p>
9206             </td>
9207           </tr>
9208
9209           <tr class="entries_header">
9210             <th class="th_details" colspan="6">HAL Implementation Details</th>
9211           </tr>
9212           <tr class="entry_cont">
9213             <td class="entry_details" colspan="6">
9214               <p>HAL implementations that include scene modes are expected to provide
9215 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9216 <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
9217 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
9218 <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
9219 HAL must list supported video size and fps range in
9220 <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/>
9221 if the HAL has two different sensor configurations for normal streaming mode and high
9222 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
9223 HAL may have to switch between different sensor modes.<wbr/>  This mode is deprecated in legacy
9224 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
9225 <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
9226 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
9227             </td>
9228           </tr>
9229
9230           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9231            <!-- end of entry -->
9232         
9233                 
9234           <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
9235             <td class="entry_name
9236              " rowspan="3">
9237               android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
9238             </td>
9239             <td class="entry_type">
9240                 <span class="entry_type_name entry_type_name_enum">byte</span>
9241
9242               <span class="entry_type_visibility"> [public]</span>
9243
9244
9245               <span class="entry_type_hwlevel">[legacy] </span>
9246
9247
9248
9249                 <ul class="entry_type_enum">
9250                   <li>
9251                     <span class="entry_type_enum_name">OFF (v3.2)</span>
9252                     <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
9253                   </li>
9254                   <li>
9255                     <span class="entry_type_enum_name">ON (v3.2)</span>
9256                     <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
9257                   </li>
9258                 </ul>
9259
9260             </td> <!-- entry_type -->
9261
9262             <td class="entry_description">
9263               <p>Whether video stabilization is
9264 active.<wbr/></p>
9265             </td>
9266
9267             <td class="entry_units">
9268             </td>
9269
9270             <td class="entry_range">
9271             </td>
9272
9273             <td class="entry_hal_version">
9274               <p>3.<wbr/>2</p>
9275             </td>
9276
9277             <td class="entry_tags">
9278               <ul class="entry_tags">
9279                   <li><a href="#tag_BC">BC</a></li>
9280               </ul>
9281             </td>
9282
9283           </tr>
9284           <tr class="entries_header">
9285             <th class="th_details" colspan="6">Details</th>
9286           </tr>
9287           <tr class="entry_cont">
9288             <td class="entry_details" colspan="6">
9289               <p>Video stabilization automatically warps images from
9290 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
9291 <p>If enabled,<wbr/> video stabilization can modify the
9292 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
9293 <p>Switching between different video stabilization modes may take several
9294 frames to initialize,<wbr/> the camera device will report the current mode
9295 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
9296 the video stabilization modes in the first several capture results may
9297 still be "OFF",<wbr/> and it will become "ON" when the initialization is
9298 done.<wbr/></p>
9299 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
9300 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
9301 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
9302 the recording resolution is less than or equal to 1920 x 1080 (width less than
9303 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
9304 frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
9305 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
9306 OFF if the recording output is not stabilized,<wbr/> or if there are no output
9307 Surface types that can be stabilized.<wbr/></p>
9308 <p>If a camera device supports both this mode and OIS
9309 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
9310 produce undesirable interaction,<wbr/> so it is recommended not to enable
9311 both at the same time.<wbr/></p>
9312             </td>
9313           </tr>
9314
9315
9316           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9317            <!-- end of entry -->
9318         
9319                 
9320           <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
9321             <td class="entry_name
9322              " rowspan="3">
9323               android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
9324             </td>
9325             <td class="entry_type">
9326                 <span class="entry_type_name">int32</span>
9327
9328               <span class="entry_type_visibility"> [public]</span>
9329
9330
9331
9332
9333
9334
9335             </td> <!-- entry_type -->
9336
9337             <td class="entry_description">
9338               <p>The amount of additional sensitivity boost applied to output images
9339 after RAW sensor data is captured.<wbr/></p>
9340             </td>
9341
9342             <td class="entry_units">
9343               ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
9344             </td>
9345
9346             <td class="entry_range">
9347               <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
9348             </td>
9349
9350             <td class="entry_hal_version">
9351               <p>3.<wbr/>2</p>
9352             </td>
9353
9354             <td class="entry_tags">
9355             </td>
9356
9357           </tr>
9358           <tr class="entries_header">
9359             <th class="th_details" colspan="6">Details</th>
9360           </tr>
9361           <tr class="entry_cont">
9362             <td class="entry_details" colspan="6">
9363               <p>Some camera devices support additional digital sensitivity boosting in the
9364 camera processing pipeline after sensor RAW image is captured.<wbr/>
9365 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
9366 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
9367 <p>This key will be <code>null</code> for devices that do not support any RAW format
9368 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
9369 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
9370 list <code>100</code> in this key.<wbr/></p>
9371 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
9372 boost to the nearest supported value.<wbr/>
9373 The final boost value used will be available in the output capture result.<wbr/></p>
9374 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
9375 of such device will have the total sensitivity of
9376 <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>
9377 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
9378 <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
9379 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
9380             </td>
9381           </tr>
9382
9383
9384           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9385            <!-- end of entry -->
9386         
9387                 
9388           <tr class="entry" id="dynamic_android.control.enableZsl">
9389             <td class="entry_name
9390              " rowspan="5">
9391               android.<wbr/>control.<wbr/>enable<wbr/>Zsl
9392             </td>
9393             <td class="entry_type">
9394                 <span class="entry_type_name entry_type_name_enum">byte</span>
9395
9396               <span class="entry_type_visibility"> [public as boolean]</span>
9397
9398
9399
9400
9401
9402                 <ul class="entry_type_enum">
9403                   <li>
9404                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
9405                     <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
9406 after previous requests.<wbr/></p></span>
9407                   </li>
9408                   <li>
9409                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
9410                     <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
9411 captured before previous requests.<wbr/></p></span>
9412                   </li>
9413                 </ul>
9414
9415             </td> <!-- entry_type -->
9416
9417             <td class="entry_description">
9418               <p>Allow camera device to enable zero-shutter-lag mode for requests with
9419 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
9420             </td>
9421
9422             <td class="entry_units">
9423             </td>
9424
9425             <td class="entry_range">
9426             </td>
9427
9428             <td class="entry_hal_version">
9429               <p>3.<wbr/>2</p>
9430             </td>
9431
9432             <td class="entry_tags">
9433             </td>
9434
9435           </tr>
9436           <tr class="entries_header">
9437             <th class="th_details" colspan="6">Details</th>
9438           </tr>
9439           <tr class="entry_cont">
9440             <td class="entry_details" colspan="6">
9441               <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
9442 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
9443 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
9444 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
9445 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
9446 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
9447 capture intents.<wbr/></p>
9448 <p>For example,<wbr/> when requests are submitted in the following order:
9449   Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
9450   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>
9451 <p>The output images for request B may have contents captured before the output images for
9452 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
9453 request A.<wbr/></p>
9454 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
9455 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
9456 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
9457 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
9458 <code>false</code> if present.<wbr/></p>
9459 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
9460 capture templates is always <code>false</code> if present.<wbr/></p>
9461 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
9462             </td>
9463           </tr>
9464
9465           <tr class="entries_header">
9466             <th class="th_details" colspan="6">HAL Implementation Details</th>
9467           </tr>
9468           <tr class="entry_cont">
9469             <td class="entry_details" colspan="6">
9470               <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
9471 capture intent.<wbr/></p>
9472             </td>
9473           </tr>
9474
9475           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9476            <!-- end of entry -->
9477         
9478                 
9479           <tr class="entry" id="dynamic_android.control.afSceneChange">
9480             <td class="entry_name
9481              " rowspan="3">
9482               android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change
9483             </td>
9484             <td class="entry_type">
9485                 <span class="entry_type_name entry_type_name_enum">byte</span>
9486
9487               <span class="entry_type_visibility"> [public]</span>
9488
9489
9490
9491
9492
9493                 <ul class="entry_type_enum">
9494                   <li>
9495                     <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span>
9496                     <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span>
9497                   </li>
9498                   <li>
9499                     <span class="entry_type_enum_name">DETECTED (v3.3)</span>
9500                     <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span>
9501                   </li>
9502                 </ul>
9503
9504             </td> <!-- entry_type -->
9505
9506             <td class="entry_description">
9507               <p>Whether a significant scene change is detected within the currently-set AF
9508 region(s).<wbr/></p>
9509             </td>
9510
9511             <td class="entry_units">
9512             </td>
9513
9514             <td class="entry_range">
9515             </td>
9516
9517             <td class="entry_hal_version">
9518               <p>3.<wbr/>3</p>
9519             </td>
9520
9521             <td class="entry_tags">
9522             </td>
9523
9524           </tr>
9525           <tr class="entries_header">
9526             <th class="th_details" colspan="6">Details</th>
9527           </tr>
9528           <tr class="entry_cont">
9529             <td class="entry_details" colspan="6">
9530               <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/>
9531 such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a
9532 significant illumination change,<wbr/> this value will be set to DETECTED for a single capture
9533 result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar
9534 to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p>
9535 <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>
9536             </td>
9537           </tr>
9538
9539
9540           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9541            <!-- end of entry -->
9542         
9543         
9544
9545       <!-- end of kind -->
9546       </tbody>
9547
9548   <!-- end of section -->
9549   <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr>
9550
9551
9552       <tr><td colspan="7" class="kind">controls</td></tr>
9553
9554       <thead class="entries_header">
9555         <tr>
9556           <th class="th_name">Property Name</th>
9557           <th class="th_type">Type</th>
9558           <th class="th_description">Description</th>
9559           <th class="th_units">Units</th>
9560           <th class="th_range">Range</th>
9561           <th class="th_hal_version">Initial HIDL HAL version</th>
9562           <th class="th_tags">Tags</th>
9563         </tr>
9564       </thead>
9565
9566       <tbody>
9567
9568         
9569
9570         
9571
9572         
9573
9574         
9575
9576                 
9577           <tr class="entry" id="controls_android.demosaic.mode">
9578             <td class="entry_name
9579              " rowspan="1">
9580               android.<wbr/>demosaic.<wbr/>mode
9581             </td>
9582             <td class="entry_type">
9583                 <span class="entry_type_name entry_type_name_enum">byte</span>
9584
9585               <span class="entry_type_visibility"> [system]</span>
9586
9587
9588
9589
9590
9591                 <ul class="entry_type_enum">
9592                   <li>
9593                     <span class="entry_type_enum_name">FAST (v3.2)</span>
9594                     <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
9595 Bayer RAW output.<wbr/></p></span>
9596                   </li>
9597                   <li>
9598                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9599                     <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
9600 relative to raw output.<wbr/></p></span>
9601                   </li>
9602                 </ul>
9603
9604             </td> <!-- entry_type -->
9605
9606             <td class="entry_description">
9607               <p>Controls the quality of the demosaicing
9608 processing.<wbr/></p>
9609             </td>
9610
9611             <td class="entry_units">
9612             </td>
9613
9614             <td class="entry_range">
9615             </td>
9616
9617             <td class="entry_hal_version">
9618               <p>3.<wbr/>2</p>
9619             </td>
9620
9621             <td class="entry_tags">
9622               <ul class="entry_tags">
9623                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9624               </ul>
9625             </td>
9626
9627           </tr>
9628
9629
9630           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9631            <!-- end of entry -->
9632         
9633         
9634
9635       <!-- end of kind -->
9636       </tbody>
9637
9638   <!-- end of section -->
9639   <tr><td colspan="7" id="section_edge" class="section">edge</td></tr>
9640
9641
9642       <tr><td colspan="7" class="kind">controls</td></tr>
9643
9644       <thead class="entries_header">
9645         <tr>
9646           <th class="th_name">Property Name</th>
9647           <th class="th_type">Type</th>
9648           <th class="th_description">Description</th>
9649           <th class="th_units">Units</th>
9650           <th class="th_range">Range</th>
9651           <th class="th_hal_version">Initial HIDL HAL version</th>
9652           <th class="th_tags">Tags</th>
9653         </tr>
9654       </thead>
9655
9656       <tbody>
9657
9658         
9659
9660         
9661
9662         
9663
9664         
9665
9666                 
9667           <tr class="entry" id="controls_android.edge.mode">
9668             <td class="entry_name
9669              " rowspan="5">
9670               android.<wbr/>edge.<wbr/>mode
9671             </td>
9672             <td class="entry_type">
9673                 <span class="entry_type_name entry_type_name_enum">byte</span>
9674
9675               <span class="entry_type_visibility"> [public]</span>
9676
9677
9678               <span class="entry_type_hwlevel">[full] </span>
9679
9680
9681
9682                 <ul class="entry_type_enum">
9683                   <li>
9684                     <span class="entry_type_enum_name">OFF (v3.2)</span>
9685                     <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9686                   </li>
9687                   <li>
9688                     <span class="entry_type_enum_name">FAST (v3.2)</span>
9689                     <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9690 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9691 slow down frame rate relative to sensor.<wbr/></p></span>
9692                   </li>
9693                   <li>
9694                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9695                     <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>
9696                   </li>
9697                   <li>
9698                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9699                     <span class="entry_type_enum_optional">[optional]</span>
9700                     <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9701 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9702 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9703 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9704 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9705 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9706 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9707 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9708 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9709 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9710 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9711 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9712 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9713 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9714 reasonable preview quality.<wbr/></p>
9715 <p>This mode is guaranteed to be supported by devices that support either the
9716 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9717 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9718 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9719                   </li>
9720                 </ul>
9721
9722             </td> <!-- entry_type -->
9723
9724             <td class="entry_description">
9725               <p>Operation mode for edge
9726 enhancement.<wbr/></p>
9727             </td>
9728
9729             <td class="entry_units">
9730             </td>
9731
9732             <td class="entry_range">
9733               <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9734             </td>
9735
9736             <td class="entry_hal_version">
9737               <p>3.<wbr/>2</p>
9738             </td>
9739
9740             <td class="entry_tags">
9741               <ul class="entry_tags">
9742                   <li><a href="#tag_V1">V1</a></li>
9743                   <li><a href="#tag_REPROC">REPROC</a></li>
9744               </ul>
9745             </td>
9746
9747           </tr>
9748           <tr class="entries_header">
9749             <th class="th_details" colspan="6">Details</th>
9750           </tr>
9751           <tr class="entry_cont">
9752             <td class="entry_details" colspan="6">
9753               <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9754 no enhancement will be applied by the camera device.<wbr/></p>
9755 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9756 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9757 camera device will use the highest-quality enhancement algorithms,<wbr/>
9758 even if it slows down capture rate.<wbr/> FAST means the camera device will
9759 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9760 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9761 amount of enhancement applied.<wbr/></p>
9762 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9763 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9764 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9765 edge enhancement to low-resolution streams (below maximum recording resolution) to
9766 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9767 since those will be reprocessed later if necessary.<wbr/></p>
9768 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9769 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9770 The camera device may adjust its internal edge enhancement parameters for best
9771 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>
9772             </td>
9773           </tr>
9774
9775           <tr class="entries_header">
9776             <th class="th_details" colspan="6">HAL Implementation Details</th>
9777           </tr>
9778           <tr class="entry_cont">
9779             <td class="entry_details" colspan="6">
9780               <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
9781 adjust the internal edge enhancement reduction parameters appropriately to get the best
9782 quality images.<wbr/></p>
9783             </td>
9784           </tr>
9785
9786           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9787            <!-- end of entry -->
9788         
9789                 
9790           <tr class="entry" id="controls_android.edge.strength">
9791             <td class="entry_name
9792              " rowspan="1">
9793               android.<wbr/>edge.<wbr/>strength
9794             </td>
9795             <td class="entry_type">
9796                 <span class="entry_type_name">byte</span>
9797
9798               <span class="entry_type_visibility"> [system]</span>
9799
9800
9801
9802
9803
9804
9805             </td> <!-- entry_type -->
9806
9807             <td class="entry_description">
9808               <p>Control the amount of edge enhancement
9809 applied to the images</p>
9810             </td>
9811
9812             <td class="entry_units">
9813               1-10; 10 is maximum sharpening
9814             </td>
9815
9816             <td class="entry_range">
9817             </td>
9818
9819             <td class="entry_hal_version">
9820               <p>3.<wbr/>2</p>
9821             </td>
9822
9823             <td class="entry_tags">
9824               <ul class="entry_tags">
9825                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9826               </ul>
9827             </td>
9828
9829           </tr>
9830
9831
9832           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9833            <!-- end of entry -->
9834         
9835         
9836
9837       <!-- end of kind -->
9838       </tbody>
9839       <tr><td colspan="7" class="kind">static</td></tr>
9840
9841       <thead class="entries_header">
9842         <tr>
9843           <th class="th_name">Property Name</th>
9844           <th class="th_type">Type</th>
9845           <th class="th_description">Description</th>
9846           <th class="th_units">Units</th>
9847           <th class="th_range">Range</th>
9848           <th class="th_hal_version">Initial HIDL HAL version</th>
9849           <th class="th_tags">Tags</th>
9850         </tr>
9851       </thead>
9852
9853       <tbody>
9854
9855         
9856
9857         
9858
9859         
9860
9861         
9862
9863                 
9864           <tr class="entry" id="static_android.edge.availableEdgeModes">
9865             <td class="entry_name
9866              " rowspan="5">
9867               android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
9868             </td>
9869             <td class="entry_type">
9870                 <span class="entry_type_name">byte</span>
9871                 <span class="entry_type_container">x</span>
9872
9873                 <span class="entry_type_array">
9874                   n
9875                 </span>
9876               <span class="entry_type_visibility"> [public as enumList]</span>
9877
9878
9879               <span class="entry_type_hwlevel">[full] </span>
9880
9881
9882                 <div class="entry_type_notes">list of enums</div>
9883
9884
9885             </td> <!-- entry_type -->
9886
9887             <td class="entry_description">
9888               <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
9889 device.<wbr/></p>
9890             </td>
9891
9892             <td class="entry_units">
9893             </td>
9894
9895             <td class="entry_range">
9896               <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
9897             </td>
9898
9899             <td class="entry_hal_version">
9900               <p>3.<wbr/>2</p>
9901             </td>
9902
9903             <td class="entry_tags">
9904               <ul class="entry_tags">
9905                   <li><a href="#tag_V1">V1</a></li>
9906                   <li><a href="#tag_REPROC">REPROC</a></li>
9907               </ul>
9908             </td>
9909
9910           </tr>
9911           <tr class="entries_header">
9912             <th class="th_details" colspan="6">Details</th>
9913           </tr>
9914           <tr class="entry_cont">
9915             <td class="entry_details" colspan="6">
9916               <p>Full-capability camera devices must always support OFF; camera devices that support
9917 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
9918 list FAST.<wbr/></p>
9919             </td>
9920           </tr>
9921
9922           <tr class="entries_header">
9923             <th class="th_details" colspan="6">HAL Implementation Details</th>
9924           </tr>
9925           <tr class="entry_cont">
9926             <td class="entry_details" colspan="6">
9927               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
9928 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
9929 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
9930 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
9931             </td>
9932           </tr>
9933
9934           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9935            <!-- end of entry -->
9936         
9937         
9938
9939       <!-- end of kind -->
9940       </tbody>
9941       <tr><td colspan="7" class="kind">dynamic</td></tr>
9942
9943       <thead class="entries_header">
9944         <tr>
9945           <th class="th_name">Property Name</th>
9946           <th class="th_type">Type</th>
9947           <th class="th_description">Description</th>
9948           <th class="th_units">Units</th>
9949           <th class="th_range">Range</th>
9950           <th class="th_hal_version">Initial HIDL HAL version</th>
9951           <th class="th_tags">Tags</th>
9952         </tr>
9953       </thead>
9954
9955       <tbody>
9956
9957         
9958
9959         
9960
9961         
9962
9963         
9964
9965                 
9966           <tr class="entry" id="dynamic_android.edge.mode">
9967             <td class="entry_name
9968              " rowspan="5">
9969               android.<wbr/>edge.<wbr/>mode
9970             </td>
9971             <td class="entry_type">
9972                 <span class="entry_type_name entry_type_name_enum">byte</span>
9973
9974               <span class="entry_type_visibility"> [public]</span>
9975
9976
9977               <span class="entry_type_hwlevel">[full] </span>
9978
9979
9980
9981                 <ul class="entry_type_enum">
9982                   <li>
9983                     <span class="entry_type_enum_name">OFF (v3.2)</span>
9984                     <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9985                   </li>
9986                   <li>
9987                     <span class="entry_type_enum_name">FAST (v3.2)</span>
9988                     <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9989 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9990 slow down frame rate relative to sensor.<wbr/></p></span>
9991                   </li>
9992                   <li>
9993                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9994                     <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>
9995                   </li>
9996                   <li>
9997                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9998                     <span class="entry_type_enum_optional">[optional]</span>
9999                     <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
10000 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
10001 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
10002 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
10003 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
10004 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
10005 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
10006 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
10007 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
10008 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
10009 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
10010 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
10011 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
10012 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
10013 reasonable preview quality.<wbr/></p>
10014 <p>This mode is guaranteed to be supported by devices that support either the
10015 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
10016 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
10017 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
10018                   </li>
10019                 </ul>
10020
10021             </td> <!-- entry_type -->
10022
10023             <td class="entry_description">
10024               <p>Operation mode for edge
10025 enhancement.<wbr/></p>
10026             </td>
10027
10028             <td class="entry_units">
10029             </td>
10030
10031             <td class="entry_range">
10032               <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
10033             </td>
10034
10035             <td class="entry_hal_version">
10036               <p>3.<wbr/>2</p>
10037             </td>
10038
10039             <td class="entry_tags">
10040               <ul class="entry_tags">
10041                   <li><a href="#tag_V1">V1</a></li>
10042                   <li><a href="#tag_REPROC">REPROC</a></li>
10043               </ul>
10044             </td>
10045
10046           </tr>
10047           <tr class="entries_header">
10048             <th class="th_details" colspan="6">Details</th>
10049           </tr>
10050           <tr class="entry_cont">
10051             <td class="entry_details" colspan="6">
10052               <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
10053 no enhancement will be applied by the camera device.<wbr/></p>
10054 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
10055 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
10056 camera device will use the highest-quality enhancement algorithms,<wbr/>
10057 even if it slows down capture rate.<wbr/> FAST means the camera device will
10058 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
10059 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
10060 amount of enhancement applied.<wbr/></p>
10061 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
10062 buffer of high-resolution images during preview and reprocess image(s) from that buffer
10063 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
10064 edge enhancement to low-resolution streams (below maximum recording resolution) to
10065 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
10066 since those will be reprocessed later if necessary.<wbr/></p>
10067 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
10068 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
10069 The camera device may adjust its internal edge enhancement parameters for best
10070 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>
10071             </td>
10072           </tr>
10073
10074           <tr class="entries_header">
10075             <th class="th_details" colspan="6">HAL Implementation Details</th>
10076           </tr>
10077           <tr class="entry_cont">
10078             <td class="entry_details" colspan="6">
10079               <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
10080 adjust the internal edge enhancement reduction parameters appropriately to get the best
10081 quality images.<wbr/></p>
10082             </td>
10083           </tr>
10084
10085           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10086            <!-- end of entry -->
10087         
10088         
10089
10090       <!-- end of kind -->
10091       </tbody>
10092
10093   <!-- end of section -->
10094   <tr><td colspan="7" id="section_flash" class="section">flash</td></tr>
10095
10096
10097       <tr><td colspan="7" class="kind">controls</td></tr>
10098
10099       <thead class="entries_header">
10100         <tr>
10101           <th class="th_name">Property Name</th>
10102           <th class="th_type">Type</th>
10103           <th class="th_description">Description</th>
10104           <th class="th_units">Units</th>
10105           <th class="th_range">Range</th>
10106           <th class="th_hal_version">Initial HIDL HAL version</th>
10107           <th class="th_tags">Tags</th>
10108         </tr>
10109       </thead>
10110
10111       <tbody>
10112
10113         
10114
10115         
10116
10117         
10118
10119         
10120
10121                 
10122           <tr class="entry" id="controls_android.flash.firingPower">
10123             <td class="entry_name
10124              " rowspan="3">
10125               android.<wbr/>flash.<wbr/>firing<wbr/>Power
10126             </td>
10127             <td class="entry_type">
10128                 <span class="entry_type_name">byte</span>
10129
10130               <span class="entry_type_visibility"> [system]</span>
10131
10132
10133
10134
10135
10136
10137             </td> <!-- entry_type -->
10138
10139             <td class="entry_description">
10140               <p>Power for flash firing/<wbr/>torch</p>
10141             </td>
10142
10143             <td class="entry_units">
10144               10 is max power; 0 is no flash.<wbr/> Linear
10145             </td>
10146
10147             <td class="entry_range">
10148               <p>0 - 10</p>
10149             </td>
10150
10151             <td class="entry_hal_version">
10152               <p>3.<wbr/>2</p>
10153             </td>
10154
10155             <td class="entry_tags">
10156               <ul class="entry_tags">
10157                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10158               </ul>
10159             </td>
10160
10161           </tr>
10162           <tr class="entries_header">
10163             <th class="th_details" colspan="6">Details</th>
10164           </tr>
10165           <tr class="entry_cont">
10166             <td class="entry_details" colspan="6">
10167               <p>Power for snapshot may use a different scale than
10168 for torch mode.<wbr/> Only one entry for torch mode will be
10169 used</p>
10170             </td>
10171           </tr>
10172
10173
10174           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10175            <!-- end of entry -->
10176         
10177                 
10178           <tr class="entry" id="controls_android.flash.firingTime">
10179             <td class="entry_name
10180              " rowspan="3">
10181               android.<wbr/>flash.<wbr/>firing<wbr/>Time
10182             </td>
10183             <td class="entry_type">
10184                 <span class="entry_type_name">int64</span>
10185
10186               <span class="entry_type_visibility"> [system]</span>
10187
10188
10189
10190
10191
10192
10193             </td> <!-- entry_type -->
10194
10195             <td class="entry_description">
10196               <p>Firing time of flash relative to start of
10197 exposure</p>
10198             </td>
10199
10200             <td class="entry_units">
10201               nanoseconds
10202             </td>
10203
10204             <td class="entry_range">
10205               <p>0-(exposure time-flash duration)</p>
10206             </td>
10207
10208             <td class="entry_hal_version">
10209               <p>3.<wbr/>2</p>
10210             </td>
10211
10212             <td class="entry_tags">
10213               <ul class="entry_tags">
10214                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10215               </ul>
10216             </td>
10217
10218           </tr>
10219           <tr class="entries_header">
10220             <th class="th_details" colspan="6">Details</th>
10221           </tr>
10222           <tr class="entry_cont">
10223             <td class="entry_details" colspan="6">
10224               <p>Clamped to (0,<wbr/> exposure time - flash
10225 duration).<wbr/></p>
10226             </td>
10227           </tr>
10228
10229
10230           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10231            <!-- end of entry -->
10232         
10233                 
10234           <tr class="entry" id="controls_android.flash.mode">
10235             <td class="entry_name
10236              " rowspan="3">
10237               android.<wbr/>flash.<wbr/>mode
10238             </td>
10239             <td class="entry_type">
10240                 <span class="entry_type_name entry_type_name_enum">byte</span>
10241
10242               <span class="entry_type_visibility"> [public]</span>
10243
10244
10245               <span class="entry_type_hwlevel">[legacy] </span>
10246
10247
10248
10249                 <ul class="entry_type_enum">
10250                   <li>
10251                     <span class="entry_type_enum_name">OFF (v3.2)</span>
10252                     <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10253                   </li>
10254                   <li>
10255                     <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10256                     <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10257 for this capture.<wbr/></p></span>
10258                   </li>
10259                   <li>
10260                     <span class="entry_type_enum_name">TORCH (v3.2)</span>
10261                     <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10262                   </li>
10263                 </ul>
10264
10265             </td> <!-- entry_type -->
10266
10267             <td class="entry_description">
10268               <p>The desired mode for for the camera device's flash control.<wbr/></p>
10269             </td>
10270
10271             <td class="entry_units">
10272             </td>
10273
10274             <td class="entry_range">
10275             </td>
10276
10277             <td class="entry_hal_version">
10278               <p>3.<wbr/>2</p>
10279             </td>
10280
10281             <td class="entry_tags">
10282               <ul class="entry_tags">
10283                   <li><a href="#tag_BC">BC</a></li>
10284               </ul>
10285             </td>
10286
10287           </tr>
10288           <tr class="entries_header">
10289             <th class="th_details" colspan="6">Details</th>
10290           </tr>
10291           <tr class="entry_cont">
10292             <td class="entry_details" colspan="6">
10293               <p>This control is only effective when flash unit is available
10294 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10295 <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/>
10296 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10297 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10298 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10299 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10300 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10301 control should be used along with auto-exposure (AE) precapture metering sequence
10302 (<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>
10303 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10304 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10305 <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>
10306             </td>
10307           </tr>
10308
10309
10310           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10311            <!-- end of entry -->
10312         
10313         
10314
10315       <!-- end of kind -->
10316       </tbody>
10317       <tr><td colspan="7" class="kind">static</td></tr>
10318
10319       <thead class="entries_header">
10320         <tr>
10321           <th class="th_name">Property Name</th>
10322           <th class="th_type">Type</th>
10323           <th class="th_description">Description</th>
10324           <th class="th_units">Units</th>
10325           <th class="th_range">Range</th>
10326           <th class="th_hal_version">Initial HIDL HAL version</th>
10327           <th class="th_tags">Tags</th>
10328         </tr>
10329       </thead>
10330
10331       <tbody>
10332
10333         
10334
10335         
10336
10337         
10338
10339         
10340                 
10341             
10342
10343                 
10344           <tr class="entry" id="static_android.flash.info.available">
10345             <td class="entry_name
10346              " rowspan="3">
10347               android.<wbr/>flash.<wbr/>info.<wbr/>available
10348             </td>
10349             <td class="entry_type">
10350                 <span class="entry_type_name entry_type_name_enum">byte</span>
10351
10352               <span class="entry_type_visibility"> [public as boolean]</span>
10353
10354
10355               <span class="entry_type_hwlevel">[legacy] </span>
10356
10357
10358
10359                 <ul class="entry_type_enum">
10360                   <li>
10361                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
10362                   </li>
10363                   <li>
10364                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
10365                   </li>
10366                 </ul>
10367
10368             </td> <!-- entry_type -->
10369
10370             <td class="entry_description">
10371               <p>Whether this camera device has a
10372 flash unit.<wbr/></p>
10373             </td>
10374
10375             <td class="entry_units">
10376             </td>
10377
10378             <td class="entry_range">
10379             </td>
10380
10381             <td class="entry_hal_version">
10382               <p>3.<wbr/>2</p>
10383             </td>
10384
10385             <td class="entry_tags">
10386               <ul class="entry_tags">
10387                   <li><a href="#tag_BC">BC</a></li>
10388               </ul>
10389             </td>
10390
10391           </tr>
10392           <tr class="entries_header">
10393             <th class="th_details" colspan="6">Details</th>
10394           </tr>
10395           <tr class="entry_cont">
10396             <td class="entry_details" colspan="6">
10397               <p>Will be <code>false</code> if no flash is available.<wbr/></p>
10398 <p>If there is no flash unit,<wbr/> none of the flash controls do
10399 anything.<wbr/></p>
10400             </td>
10401           </tr>
10402
10403
10404           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10405            <!-- end of entry -->
10406         
10407                 
10408           <tr class="entry" id="static_android.flash.info.chargeDuration">
10409             <td class="entry_name
10410              " rowspan="3">
10411               android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
10412             </td>
10413             <td class="entry_type">
10414                 <span class="entry_type_name">int64</span>
10415
10416               <span class="entry_type_visibility"> [system]</span>
10417
10418
10419
10420
10421
10422
10423             </td> <!-- entry_type -->
10424
10425             <td class="entry_description">
10426               <p>Time taken before flash can fire
10427 again</p>
10428             </td>
10429
10430             <td class="entry_units">
10431               nanoseconds
10432             </td>
10433
10434             <td class="entry_range">
10435               <p>0-1e9</p>
10436             </td>
10437
10438             <td class="entry_hal_version">
10439               <p>3.<wbr/>2</p>
10440             </td>
10441
10442             <td class="entry_tags">
10443               <ul class="entry_tags">
10444                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10445               </ul>
10446             </td>
10447
10448           </tr>
10449           <tr class="entries_header">
10450             <th class="th_details" colspan="6">Details</th>
10451           </tr>
10452           <tr class="entry_cont">
10453             <td class="entry_details" colspan="6">
10454               <p>1 second too long/<wbr/>too short for recharge? Should
10455 this be power-dependent?</p>
10456             </td>
10457           </tr>
10458
10459
10460           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10461            <!-- end of entry -->
10462         
10463         
10464         
10465
10466                 
10467           <tr class="entry" id="static_android.flash.colorTemperature">
10468             <td class="entry_name
10469              " rowspan="1">
10470               android.<wbr/>flash.<wbr/>color<wbr/>Temperature
10471             </td>
10472             <td class="entry_type">
10473                 <span class="entry_type_name">byte</span>
10474
10475               <span class="entry_type_visibility"> [system]</span>
10476
10477
10478
10479
10480
10481
10482             </td> <!-- entry_type -->
10483
10484             <td class="entry_description">
10485               <p>The x,<wbr/>y whitepoint of the
10486 flash</p>
10487             </td>
10488
10489             <td class="entry_units">
10490               pair of floats
10491             </td>
10492
10493             <td class="entry_range">
10494               <p>0-1 for both</p>
10495             </td>
10496
10497             <td class="entry_hal_version">
10498               <p>3.<wbr/>2</p>
10499             </td>
10500
10501             <td class="entry_tags">
10502               <ul class="entry_tags">
10503                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10504               </ul>
10505             </td>
10506
10507           </tr>
10508
10509
10510           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10511            <!-- end of entry -->
10512         
10513                 
10514           <tr class="entry" id="static_android.flash.maxEnergy">
10515             <td class="entry_name
10516              " rowspan="1">
10517               android.<wbr/>flash.<wbr/>max<wbr/>Energy
10518             </td>
10519             <td class="entry_type">
10520                 <span class="entry_type_name">byte</span>
10521
10522               <span class="entry_type_visibility"> [system]</span>
10523
10524
10525
10526
10527
10528
10529             </td> <!-- entry_type -->
10530
10531             <td class="entry_description">
10532               <p>Max energy output of the flash for a full
10533 power single flash</p>
10534             </td>
10535
10536             <td class="entry_units">
10537               lumen-seconds
10538             </td>
10539
10540             <td class="entry_range">
10541               <p>&gt;= 0</p>
10542             </td>
10543
10544             <td class="entry_hal_version">
10545               <p>3.<wbr/>2</p>
10546             </td>
10547
10548             <td class="entry_tags">
10549               <ul class="entry_tags">
10550                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10551               </ul>
10552             </td>
10553
10554           </tr>
10555
10556
10557           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10558            <!-- end of entry -->
10559         
10560         
10561
10562       <!-- end of kind -->
10563       </tbody>
10564       <tr><td colspan="7" class="kind">dynamic</td></tr>
10565
10566       <thead class="entries_header">
10567         <tr>
10568           <th class="th_name">Property Name</th>
10569           <th class="th_type">Type</th>
10570           <th class="th_description">Description</th>
10571           <th class="th_units">Units</th>
10572           <th class="th_range">Range</th>
10573           <th class="th_hal_version">Initial HIDL HAL version</th>
10574           <th class="th_tags">Tags</th>
10575         </tr>
10576       </thead>
10577
10578       <tbody>
10579
10580         
10581
10582         
10583
10584         
10585
10586         
10587
10588                 
10589           <tr class="entry" id="dynamic_android.flash.firingPower">
10590             <td class="entry_name
10591              " rowspan="3">
10592               android.<wbr/>flash.<wbr/>firing<wbr/>Power
10593             </td>
10594             <td class="entry_type">
10595                 <span class="entry_type_name">byte</span>
10596
10597               <span class="entry_type_visibility"> [system]</span>
10598
10599
10600
10601
10602
10603
10604             </td> <!-- entry_type -->
10605
10606             <td class="entry_description">
10607               <p>Power for flash firing/<wbr/>torch</p>
10608             </td>
10609
10610             <td class="entry_units">
10611               10 is max power; 0 is no flash.<wbr/> Linear
10612             </td>
10613
10614             <td class="entry_range">
10615               <p>0 - 10</p>
10616             </td>
10617
10618             <td class="entry_hal_version">
10619               <p>3.<wbr/>2</p>
10620             </td>
10621
10622             <td class="entry_tags">
10623               <ul class="entry_tags">
10624                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10625               </ul>
10626             </td>
10627
10628           </tr>
10629           <tr class="entries_header">
10630             <th class="th_details" colspan="6">Details</th>
10631           </tr>
10632           <tr class="entry_cont">
10633             <td class="entry_details" colspan="6">
10634               <p>Power for snapshot may use a different scale than
10635 for torch mode.<wbr/> Only one entry for torch mode will be
10636 used</p>
10637             </td>
10638           </tr>
10639
10640
10641           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10642            <!-- end of entry -->
10643         
10644                 
10645           <tr class="entry" id="dynamic_android.flash.firingTime">
10646             <td class="entry_name
10647              " rowspan="3">
10648               android.<wbr/>flash.<wbr/>firing<wbr/>Time
10649             </td>
10650             <td class="entry_type">
10651                 <span class="entry_type_name">int64</span>
10652
10653               <span class="entry_type_visibility"> [system]</span>
10654
10655
10656
10657
10658
10659
10660             </td> <!-- entry_type -->
10661
10662             <td class="entry_description">
10663               <p>Firing time of flash relative to start of
10664 exposure</p>
10665             </td>
10666
10667             <td class="entry_units">
10668               nanoseconds
10669             </td>
10670
10671             <td class="entry_range">
10672               <p>0-(exposure time-flash duration)</p>
10673             </td>
10674
10675             <td class="entry_hal_version">
10676               <p>3.<wbr/>2</p>
10677             </td>
10678
10679             <td class="entry_tags">
10680               <ul class="entry_tags">
10681                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10682               </ul>
10683             </td>
10684
10685           </tr>
10686           <tr class="entries_header">
10687             <th class="th_details" colspan="6">Details</th>
10688           </tr>
10689           <tr class="entry_cont">
10690             <td class="entry_details" colspan="6">
10691               <p>Clamped to (0,<wbr/> exposure time - flash
10692 duration).<wbr/></p>
10693             </td>
10694           </tr>
10695
10696
10697           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10698            <!-- end of entry -->
10699         
10700                 
10701           <tr class="entry" id="dynamic_android.flash.mode">
10702             <td class="entry_name
10703              " rowspan="3">
10704               android.<wbr/>flash.<wbr/>mode
10705             </td>
10706             <td class="entry_type">
10707                 <span class="entry_type_name entry_type_name_enum">byte</span>
10708
10709               <span class="entry_type_visibility"> [public]</span>
10710
10711
10712               <span class="entry_type_hwlevel">[legacy] </span>
10713
10714
10715
10716                 <ul class="entry_type_enum">
10717                   <li>
10718                     <span class="entry_type_enum_name">OFF (v3.2)</span>
10719                     <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10720                   </li>
10721                   <li>
10722                     <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10723                     <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10724 for this capture.<wbr/></p></span>
10725                   </li>
10726                   <li>
10727                     <span class="entry_type_enum_name">TORCH (v3.2)</span>
10728                     <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10729                   </li>
10730                 </ul>
10731
10732             </td> <!-- entry_type -->
10733
10734             <td class="entry_description">
10735               <p>The desired mode for for the camera device's flash control.<wbr/></p>
10736             </td>
10737
10738             <td class="entry_units">
10739             </td>
10740
10741             <td class="entry_range">
10742             </td>
10743
10744             <td class="entry_hal_version">
10745               <p>3.<wbr/>2</p>
10746             </td>
10747
10748             <td class="entry_tags">
10749               <ul class="entry_tags">
10750                   <li><a href="#tag_BC">BC</a></li>
10751               </ul>
10752             </td>
10753
10754           </tr>
10755           <tr class="entries_header">
10756             <th class="th_details" colspan="6">Details</th>
10757           </tr>
10758           <tr class="entry_cont">
10759             <td class="entry_details" colspan="6">
10760               <p>This control is only effective when flash unit is available
10761 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10762 <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/>
10763 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10764 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10765 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10766 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10767 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10768 control should be used along with auto-exposure (AE) precapture metering sequence
10769 (<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>
10770 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10771 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10772 <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>
10773             </td>
10774           </tr>
10775
10776
10777           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10778            <!-- end of entry -->
10779         
10780                 
10781           <tr class="entry" id="dynamic_android.flash.state">
10782             <td class="entry_name
10783              " rowspan="3">
10784               android.<wbr/>flash.<wbr/>state
10785             </td>
10786             <td class="entry_type">
10787                 <span class="entry_type_name entry_type_name_enum">byte</span>
10788
10789               <span class="entry_type_visibility"> [public]</span>
10790
10791
10792               <span class="entry_type_hwlevel">[limited] </span>
10793
10794
10795
10796                 <ul class="entry_type_enum">
10797                   <li>
10798                     <span class="entry_type_enum_name">UNAVAILABLE (v3.2)</span>
10799                     <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
10800                   </li>
10801                   <li>
10802                     <span class="entry_type_enum_name">CHARGING (v3.2)</span>
10803                     <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
10804                   </li>
10805                   <li>
10806                     <span class="entry_type_enum_name">READY (v3.2)</span>
10807                     <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
10808                   </li>
10809                   <li>
10810                     <span class="entry_type_enum_name">FIRED (v3.2)</span>
10811                     <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
10812                   </li>
10813                   <li>
10814                     <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
10815                     <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
10816 <p>This is usually due to the next or previous frame having
10817 the flash fire,<wbr/> and the flash spilling into this capture
10818 due to hardware limitations.<wbr/></p></span>
10819                   </li>
10820                 </ul>
10821
10822             </td> <!-- entry_type -->
10823
10824             <td class="entry_description">
10825               <p>Current state of the flash
10826 unit.<wbr/></p>
10827             </td>
10828
10829             <td class="entry_units">
10830             </td>
10831
10832             <td class="entry_range">
10833             </td>
10834
10835             <td class="entry_hal_version">
10836               <p>3.<wbr/>2</p>
10837             </td>
10838
10839             <td class="entry_tags">
10840             </td>
10841
10842           </tr>
10843           <tr class="entries_header">
10844             <th class="th_details" colspan="6">Details</th>
10845           </tr>
10846           <tr class="entry_cont">
10847             <td class="entry_details" colspan="6">
10848               <p>When the camera device doesn't have flash unit
10849 (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/>
10850 Other states indicate the current flash status.<wbr/></p>
10851 <p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
10852 <ul>
10853 <li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
10854 <li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
10855    will always return FIRED.<wbr/></li>
10856 <li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
10857    will always return FIRED.<wbr/></li>
10858 </ul>
10859 <p>In all other conditions the state will not be available on
10860 LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
10861             </td>
10862           </tr>
10863
10864
10865           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10866            <!-- end of entry -->
10867         
10868         
10869
10870       <!-- end of kind -->
10871       </tbody>
10872
10873   <!-- end of section -->
10874   <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr>
10875
10876
10877       <tr><td colspan="7" class="kind">controls</td></tr>
10878
10879       <thead class="entries_header">
10880         <tr>
10881           <th class="th_name">Property Name</th>
10882           <th class="th_type">Type</th>
10883           <th class="th_description">Description</th>
10884           <th class="th_units">Units</th>
10885           <th class="th_range">Range</th>
10886           <th class="th_hal_version">Initial HIDL HAL version</th>
10887           <th class="th_tags">Tags</th>
10888         </tr>
10889       </thead>
10890
10891       <tbody>
10892
10893         
10894
10895         
10896
10897         
10898
10899         
10900
10901                 
10902           <tr class="entry" id="controls_android.hotPixel.mode">
10903             <td class="entry_name
10904              " rowspan="3">
10905               android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10906             </td>
10907             <td class="entry_type">
10908                 <span class="entry_type_name entry_type_name_enum">byte</span>
10909
10910               <span class="entry_type_visibility"> [public]</span>
10911
10912
10913
10914
10915
10916                 <ul class="entry_type_enum">
10917                   <li>
10918                     <span class="entry_type_enum_name">OFF (v3.2)</span>
10919                     <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10920 <p>The frame rate must not be reduced relative to sensor raw output
10921 for this option.<wbr/></p>
10922 <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>
10923                   </li>
10924                   <li>
10925                     <span class="entry_type_enum_name">FAST (v3.2)</span>
10926                     <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10927 rate relative to sensor raw output.<wbr/></p>
10928 <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>
10929                   </li>
10930                   <li>
10931                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
10932                     <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10933 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10934 <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>
10935                   </li>
10936                 </ul>
10937
10938             </td> <!-- entry_type -->
10939
10940             <td class="entry_description">
10941               <p>Operational mode for hot pixel correction.<wbr/></p>
10942             </td>
10943
10944             <td class="entry_units">
10945             </td>
10946
10947             <td class="entry_range">
10948               <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10949             </td>
10950
10951             <td class="entry_hal_version">
10952               <p>3.<wbr/>2</p>
10953             </td>
10954
10955             <td class="entry_tags">
10956               <ul class="entry_tags">
10957                   <li><a href="#tag_V1">V1</a></li>
10958                   <li><a href="#tag_RAW">RAW</a></li>
10959               </ul>
10960             </td>
10961
10962           </tr>
10963           <tr class="entries_header">
10964             <th class="th_details" colspan="6">Details</th>
10965           </tr>
10966           <tr class="entry_cont">
10967             <td class="entry_details" colspan="6">
10968               <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10969 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10970 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10971             </td>
10972           </tr>
10973
10974
10975           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10976            <!-- end of entry -->
10977         
10978         
10979
10980       <!-- end of kind -->
10981       </tbody>
10982       <tr><td colspan="7" class="kind">static</td></tr>
10983
10984       <thead class="entries_header">
10985         <tr>
10986           <th class="th_name">Property Name</th>
10987           <th class="th_type">Type</th>
10988           <th class="th_description">Description</th>
10989           <th class="th_units">Units</th>
10990           <th class="th_range">Range</th>
10991           <th class="th_hal_version">Initial HIDL HAL version</th>
10992           <th class="th_tags">Tags</th>
10993         </tr>
10994       </thead>
10995
10996       <tbody>
10997
10998         
10999
11000         
11001
11002         
11003
11004         
11005
11006                 
11007           <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
11008             <td class="entry_name
11009              " rowspan="5">
11010               android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
11011             </td>
11012             <td class="entry_type">
11013                 <span class="entry_type_name">byte</span>
11014                 <span class="entry_type_container">x</span>
11015
11016                 <span class="entry_type_array">
11017                   n
11018                 </span>
11019               <span class="entry_type_visibility"> [public as enumList]</span>
11020
11021
11022
11023
11024                 <div class="entry_type_notes">list of enums</div>
11025
11026
11027             </td> <!-- entry_type -->
11028
11029             <td class="entry_description">
11030               <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
11031 camera device.<wbr/></p>
11032             </td>
11033
11034             <td class="entry_units">
11035             </td>
11036
11037             <td class="entry_range">
11038               <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
11039             </td>
11040
11041             <td class="entry_hal_version">
11042               <p>3.<wbr/>2</p>
11043             </td>
11044
11045             <td class="entry_tags">
11046               <ul class="entry_tags">
11047                   <li><a href="#tag_V1">V1</a></li>
11048                   <li><a href="#tag_RAW">RAW</a></li>
11049               </ul>
11050             </td>
11051
11052           </tr>
11053           <tr class="entries_header">
11054             <th class="th_details" colspan="6">Details</th>
11055           </tr>
11056           <tr class="entry_cont">
11057             <td class="entry_details" colspan="6">
11058               <p>FULL mode camera devices will always support FAST.<wbr/></p>
11059             </td>
11060           </tr>
11061
11062           <tr class="entries_header">
11063             <th class="th_details" colspan="6">HAL Implementation Details</th>
11064           </tr>
11065           <tr class="entry_cont">
11066             <td class="entry_details" colspan="6">
11067               <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
11068 pixels than actual pixels on the camera sensor.<wbr/>
11069 HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
11070 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
11071 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
11072 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
11073             </td>
11074           </tr>
11075
11076           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11077            <!-- end of entry -->
11078         
11079         
11080
11081       <!-- end of kind -->
11082       </tbody>
11083       <tr><td colspan="7" class="kind">dynamic</td></tr>
11084
11085       <thead class="entries_header">
11086         <tr>
11087           <th class="th_name">Property Name</th>
11088           <th class="th_type">Type</th>
11089           <th class="th_description">Description</th>
11090           <th class="th_units">Units</th>
11091           <th class="th_range">Range</th>
11092           <th class="th_hal_version">Initial HIDL HAL version</th>
11093           <th class="th_tags">Tags</th>
11094         </tr>
11095       </thead>
11096
11097       <tbody>
11098
11099         
11100
11101         
11102
11103         
11104
11105         
11106
11107                 
11108           <tr class="entry" id="dynamic_android.hotPixel.mode">
11109             <td class="entry_name
11110              " rowspan="3">
11111               android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
11112             </td>
11113             <td class="entry_type">
11114                 <span class="entry_type_name entry_type_name_enum">byte</span>
11115
11116               <span class="entry_type_visibility"> [public]</span>
11117
11118
11119
11120
11121
11122                 <ul class="entry_type_enum">
11123                   <li>
11124                     <span class="entry_type_enum_name">OFF (v3.2)</span>
11125                     <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
11126 <p>The frame rate must not be reduced relative to sensor raw output
11127 for this option.<wbr/></p>
11128 <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>
11129                   </li>
11130                   <li>
11131                     <span class="entry_type_enum_name">FAST (v3.2)</span>
11132                     <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
11133 rate relative to sensor raw output.<wbr/></p>
11134 <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>
11135                   </li>
11136                   <li>
11137                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
11138                     <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
11139 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
11140 <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>
11141                   </li>
11142                 </ul>
11143
11144             </td> <!-- entry_type -->
11145
11146             <td class="entry_description">
11147               <p>Operational mode for hot pixel correction.<wbr/></p>
11148             </td>
11149
11150             <td class="entry_units">
11151             </td>
11152
11153             <td class="entry_range">
11154               <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
11155             </td>
11156
11157             <td class="entry_hal_version">
11158               <p>3.<wbr/>2</p>
11159             </td>
11160
11161             <td class="entry_tags">
11162               <ul class="entry_tags">
11163                   <li><a href="#tag_V1">V1</a></li>
11164                   <li><a href="#tag_RAW">RAW</a></li>
11165               </ul>
11166             </td>
11167
11168           </tr>
11169           <tr class="entries_header">
11170             <th class="th_details" colspan="6">Details</th>
11171           </tr>
11172           <tr class="entry_cont">
11173             <td class="entry_details" colspan="6">
11174               <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
11175 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
11176 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
11177             </td>
11178           </tr>
11179
11180
11181           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11182            <!-- end of entry -->
11183         
11184         
11185
11186       <!-- end of kind -->
11187       </tbody>
11188
11189   <!-- end of section -->
11190   <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr>
11191
11192
11193       <tr><td colspan="7" class="kind">controls</td></tr>
11194
11195       <thead class="entries_header">
11196         <tr>
11197           <th class="th_name">Property Name</th>
11198           <th class="th_type">Type</th>
11199           <th class="th_description">Description</th>
11200           <th class="th_units">Units</th>
11201           <th class="th_range">Range</th>
11202           <th class="th_hal_version">Initial HIDL HAL version</th>
11203           <th class="th_tags">Tags</th>
11204         </tr>
11205       </thead>
11206
11207       <tbody>
11208
11209         
11210
11211         
11212
11213         
11214
11215         
11216
11217                 
11218           <tr class="entry" id="controls_android.jpeg.gpsLocation">
11219             <td class="entry_name
11220              " rowspan="3">
11221               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11222             </td>
11223             <td class="entry_type">
11224                 <span class="entry_type_name">byte</span>
11225
11226               <span class="entry_type_visibility"> [java_public as location]</span>
11227
11228               <span class="entry_type_synthetic">[synthetic] </span>
11229
11230               <span class="entry_type_hwlevel">[legacy] </span>
11231
11232
11233
11234
11235             </td> <!-- entry_type -->
11236
11237             <td class="entry_description">
11238               <p>A location object to use when generating image GPS metadata.<wbr/></p>
11239             </td>
11240
11241             <td class="entry_units">
11242             </td>
11243
11244             <td class="entry_range">
11245             </td>
11246
11247             <td class="entry_hal_version">
11248               <p>3.<wbr/>2</p>
11249             </td>
11250
11251             <td class="entry_tags">
11252             </td>
11253
11254           </tr>
11255           <tr class="entries_header">
11256             <th class="th_details" colspan="6">Details</th>
11257           </tr>
11258           <tr class="entry_cont">
11259             <td class="entry_details" colspan="6">
11260               <p>Setting a location object in a request will include the GPS coordinates of the location
11261 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11262 viewed by anyone who receives the JPEG image.<wbr/></p>
11263             </td>
11264           </tr>
11265
11266
11267           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11268            <!-- end of entry -->
11269         
11270                 
11271           <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
11272             <td class="entry_name
11273              " rowspan="1">
11274               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11275             </td>
11276             <td class="entry_type">
11277                 <span class="entry_type_name">double</span>
11278                 <span class="entry_type_container">x</span>
11279
11280                 <span class="entry_type_array">
11281                   3
11282                 </span>
11283               <span class="entry_type_visibility"> [ndk_public]</span>
11284
11285
11286               <span class="entry_type_hwlevel">[legacy] </span>
11287
11288
11289                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11290
11291
11292             </td> <!-- entry_type -->
11293
11294             <td class="entry_description">
11295               <p>GPS coordinates to include in output JPEG
11296 EXIF.<wbr/></p>
11297             </td>
11298
11299             <td class="entry_units">
11300             </td>
11301
11302             <td class="entry_range">
11303               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11304             </td>
11305
11306             <td class="entry_hal_version">
11307               <p>3.<wbr/>2</p>
11308             </td>
11309
11310             <td class="entry_tags">
11311               <ul class="entry_tags">
11312                   <li><a href="#tag_BC">BC</a></li>
11313               </ul>
11314             </td>
11315
11316           </tr>
11317
11318
11319           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11320            <!-- end of entry -->
11321         
11322                 
11323           <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
11324             <td class="entry_name
11325              " rowspan="1">
11326               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11327             </td>
11328             <td class="entry_type">
11329                 <span class="entry_type_name">byte</span>
11330
11331               <span class="entry_type_visibility"> [ndk_public as string]</span>
11332
11333
11334               <span class="entry_type_hwlevel">[legacy] </span>
11335
11336
11337
11338
11339             </td> <!-- entry_type -->
11340
11341             <td class="entry_description">
11342               <p>32 characters describing GPS algorithm to
11343 include in EXIF.<wbr/></p>
11344             </td>
11345
11346             <td class="entry_units">
11347               UTF-8 null-terminated string
11348             </td>
11349
11350             <td class="entry_range">
11351             </td>
11352
11353             <td class="entry_hal_version">
11354               <p>3.<wbr/>2</p>
11355             </td>
11356
11357             <td class="entry_tags">
11358               <ul class="entry_tags">
11359                   <li><a href="#tag_BC">BC</a></li>
11360               </ul>
11361             </td>
11362
11363           </tr>
11364
11365
11366           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11367            <!-- end of entry -->
11368         
11369                 
11370           <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
11371             <td class="entry_name
11372              " rowspan="1">
11373               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11374             </td>
11375             <td class="entry_type">
11376                 <span class="entry_type_name">int64</span>
11377
11378               <span class="entry_type_visibility"> [ndk_public]</span>
11379
11380
11381               <span class="entry_type_hwlevel">[legacy] </span>
11382
11383
11384
11385
11386             </td> <!-- entry_type -->
11387
11388             <td class="entry_description">
11389               <p>Time GPS fix was made to include in
11390 EXIF.<wbr/></p>
11391             </td>
11392
11393             <td class="entry_units">
11394               UTC in seconds since January 1,<wbr/> 1970
11395             </td>
11396
11397             <td class="entry_range">
11398             </td>
11399
11400             <td class="entry_hal_version">
11401               <p>3.<wbr/>2</p>
11402             </td>
11403
11404             <td class="entry_tags">
11405               <ul class="entry_tags">
11406                   <li><a href="#tag_BC">BC</a></li>
11407               </ul>
11408             </td>
11409
11410           </tr>
11411
11412
11413           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11414            <!-- end of entry -->
11415         
11416                 
11417           <tr class="entry" id="controls_android.jpeg.orientation">
11418             <td class="entry_name
11419              " rowspan="3">
11420               android.<wbr/>jpeg.<wbr/>orientation
11421             </td>
11422             <td class="entry_type">
11423                 <span class="entry_type_name">int32</span>
11424
11425               <span class="entry_type_visibility"> [public]</span>
11426
11427
11428               <span class="entry_type_hwlevel">[legacy] </span>
11429
11430
11431
11432
11433             </td> <!-- entry_type -->
11434
11435             <td class="entry_description">
11436               <p>The orientation for a JPEG image.<wbr/></p>
11437             </td>
11438
11439             <td class="entry_units">
11440               Degrees in multiples of 90
11441             </td>
11442
11443             <td class="entry_range">
11444               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11445             </td>
11446
11447             <td class="entry_hal_version">
11448               <p>3.<wbr/>2</p>
11449             </td>
11450
11451             <td class="entry_tags">
11452               <ul class="entry_tags">
11453                   <li><a href="#tag_BC">BC</a></li>
11454               </ul>
11455             </td>
11456
11457           </tr>
11458           <tr class="entries_header">
11459             <th class="th_details" colspan="6">Details</th>
11460           </tr>
11461           <tr class="entry_cont">
11462             <td class="entry_details" colspan="6">
11463               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11464 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11465 upright.<wbr/></p>
11466 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11467 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11468 the thumbnail data will also be rotated.<wbr/></p>
11469 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11470 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11471 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
11472 sample code may be used:</p>
11473 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11474     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11475     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11476
11477     //<wbr/> Round device orientation to a multiple of 90
11478     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11479
11480     //<wbr/> Reverse device orientation for front-facing cameras
11481     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11482     if (facingFront) deviceOrientation = -deviceOrientation;
11483
11484     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11485     //<wbr/> the image upright relative to the device orientation
11486     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11487
11488     return jpegOrientation;
11489 }
11490 </code></pre>
11491             </td>
11492           </tr>
11493
11494
11495           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11496            <!-- end of entry -->
11497         
11498                 
11499           <tr class="entry" id="controls_android.jpeg.quality">
11500             <td class="entry_name
11501              " rowspan="3">
11502               android.<wbr/>jpeg.<wbr/>quality
11503             </td>
11504             <td class="entry_type">
11505                 <span class="entry_type_name">byte</span>
11506
11507               <span class="entry_type_visibility"> [public]</span>
11508
11509
11510               <span class="entry_type_hwlevel">[legacy] </span>
11511
11512
11513
11514
11515             </td> <!-- entry_type -->
11516
11517             <td class="entry_description">
11518               <p>Compression quality of the final JPEG
11519 image.<wbr/></p>
11520             </td>
11521
11522             <td class="entry_units">
11523             </td>
11524
11525             <td class="entry_range">
11526               <p>1-100; larger is higher quality</p>
11527             </td>
11528
11529             <td class="entry_hal_version">
11530               <p>3.<wbr/>2</p>
11531             </td>
11532
11533             <td class="entry_tags">
11534               <ul class="entry_tags">
11535                   <li><a href="#tag_BC">BC</a></li>
11536               </ul>
11537             </td>
11538
11539           </tr>
11540           <tr class="entries_header">
11541             <th class="th_details" colspan="6">Details</th>
11542           </tr>
11543           <tr class="entry_cont">
11544             <td class="entry_details" colspan="6">
11545               <p>85-95 is typical usage range.<wbr/></p>
11546             </td>
11547           </tr>
11548
11549
11550           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11551            <!-- end of entry -->
11552         
11553                 
11554           <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
11555             <td class="entry_name
11556              " rowspan="1">
11557               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11558             </td>
11559             <td class="entry_type">
11560                 <span class="entry_type_name">byte</span>
11561
11562               <span class="entry_type_visibility"> [public]</span>
11563
11564
11565               <span class="entry_type_hwlevel">[legacy] </span>
11566
11567
11568
11569
11570             </td> <!-- entry_type -->
11571
11572             <td class="entry_description">
11573               <p>Compression quality of JPEG
11574 thumbnail.<wbr/></p>
11575             </td>
11576
11577             <td class="entry_units">
11578             </td>
11579
11580             <td class="entry_range">
11581               <p>1-100; larger is higher quality</p>
11582             </td>
11583
11584             <td class="entry_hal_version">
11585               <p>3.<wbr/>2</p>
11586             </td>
11587
11588             <td class="entry_tags">
11589               <ul class="entry_tags">
11590                   <li><a href="#tag_BC">BC</a></li>
11591               </ul>
11592             </td>
11593
11594           </tr>
11595
11596
11597           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11598            <!-- end of entry -->
11599         
11600                 
11601           <tr class="entry" id="controls_android.jpeg.thumbnailSize">
11602             <td class="entry_name
11603              " rowspan="5">
11604               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11605             </td>
11606             <td class="entry_type">
11607                 <span class="entry_type_name">int32</span>
11608                 <span class="entry_type_container">x</span>
11609
11610                 <span class="entry_type_array">
11611                   2
11612                 </span>
11613               <span class="entry_type_visibility"> [public as size]</span>
11614
11615
11616               <span class="entry_type_hwlevel">[legacy] </span>
11617
11618
11619
11620
11621             </td> <!-- entry_type -->
11622
11623             <td class="entry_description">
11624               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11625             </td>
11626
11627             <td class="entry_units">
11628             </td>
11629
11630             <td class="entry_range">
11631               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11632             </td>
11633
11634             <td class="entry_hal_version">
11635               <p>3.<wbr/>2</p>
11636             </td>
11637
11638             <td class="entry_tags">
11639               <ul class="entry_tags">
11640                   <li><a href="#tag_BC">BC</a></li>
11641               </ul>
11642             </td>
11643
11644           </tr>
11645           <tr class="entries_header">
11646             <th class="th_details" colspan="6">Details</th>
11647           </tr>
11648           <tr class="entry_cont">
11649             <td class="entry_details" colspan="6">
11650               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11651 but the captured JPEG will still be a valid image.<wbr/></p>
11652 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11653 should have the same aspect ratio as the main JPEG output.<wbr/></p>
11654 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11655 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11656 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
11657 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11658 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11659 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11660 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11661 the camera device will handle thumbnail rotation in one of the following ways:</p>
11662 <ul>
11663 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11664   and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11665 <li>Rotate the jpeg and thumbnail image data and not set
11666   <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11667   case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11668   capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11669   orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11670   size.<wbr/></li>
11671 </ul>
11672             </td>
11673           </tr>
11674
11675           <tr class="entries_header">
11676             <th class="th_details" colspan="6">HAL Implementation Details</th>
11677           </tr>
11678           <tr class="entry_cont">
11679             <td class="entry_details" colspan="6">
11680               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11681 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11682 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11683 thumbnail image cropping.<wbr/></p>
11684             </td>
11685           </tr>
11686
11687           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11688            <!-- end of entry -->
11689         
11690         
11691
11692       <!-- end of kind -->
11693       </tbody>
11694       <tr><td colspan="7" class="kind">static</td></tr>
11695
11696       <thead class="entries_header">
11697         <tr>
11698           <th class="th_name">Property Name</th>
11699           <th class="th_type">Type</th>
11700           <th class="th_description">Description</th>
11701           <th class="th_units">Units</th>
11702           <th class="th_range">Range</th>
11703           <th class="th_hal_version">Initial HIDL HAL version</th>
11704           <th class="th_tags">Tags</th>
11705         </tr>
11706       </thead>
11707
11708       <tbody>
11709
11710         
11711
11712         
11713
11714         
11715
11716         
11717
11718                 
11719           <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
11720             <td class="entry_name
11721              " rowspan="3">
11722               android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
11723             </td>
11724             <td class="entry_type">
11725                 <span class="entry_type_name">int32</span>
11726                 <span class="entry_type_container">x</span>
11727
11728                 <span class="entry_type_array">
11729                   2 x n
11730                 </span>
11731               <span class="entry_type_visibility"> [public as size]</span>
11732
11733
11734               <span class="entry_type_hwlevel">[legacy] </span>
11735
11736
11737
11738
11739             </td> <!-- entry_type -->
11740
11741             <td class="entry_description">
11742               <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
11743 camera device.<wbr/></p>
11744             </td>
11745
11746             <td class="entry_units">
11747             </td>
11748
11749             <td class="entry_range">
11750             </td>
11751
11752             <td class="entry_hal_version">
11753               <p>3.<wbr/>2</p>
11754             </td>
11755
11756             <td class="entry_tags">
11757               <ul class="entry_tags">
11758                   <li><a href="#tag_BC">BC</a></li>
11759               </ul>
11760             </td>
11761
11762           </tr>
11763           <tr class="entries_header">
11764             <th class="th_details" colspan="6">Details</th>
11765           </tr>
11766           <tr class="entry_cont">
11767             <td class="entry_details" colspan="6">
11768               <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
11769 thumbnail should be generated.<wbr/></p>
11770 <p>Below condiditions will be satisfied for this size list:</p>
11771 <ul>
11772 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
11773 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
11774 <li>The aspect ratio of the largest thumbnail size will be same as the
11775 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/>
11776 The largest size is defined as the size that has the largest pixel area
11777 in a given size list.<wbr/></li>
11778 <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
11779 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
11780 and vice versa.<wbr/></li>
11781 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
11782 </ul>
11783             </td>
11784           </tr>
11785
11786
11787           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11788            <!-- end of entry -->
11789         
11790                 
11791           <tr class="entry" id="static_android.jpeg.maxSize">
11792             <td class="entry_name
11793              " rowspan="3">
11794               android.<wbr/>jpeg.<wbr/>max<wbr/>Size
11795             </td>
11796             <td class="entry_type">
11797                 <span class="entry_type_name">int32</span>
11798
11799               <span class="entry_type_visibility"> [system]</span>
11800
11801
11802
11803
11804
11805
11806             </td> <!-- entry_type -->
11807
11808             <td class="entry_description">
11809               <p>Maximum size in bytes for the compressed
11810 JPEG buffer</p>
11811             </td>
11812
11813             <td class="entry_units">
11814             </td>
11815
11816             <td class="entry_range">
11817               <p>Must be large enough to fit any JPEG produced by
11818 the camera</p>
11819             </td>
11820
11821             <td class="entry_hal_version">
11822               <p>3.<wbr/>2</p>
11823             </td>
11824
11825             <td class="entry_tags">
11826             </td>
11827
11828           </tr>
11829           <tr class="entries_header">
11830             <th class="th_details" colspan="6">Details</th>
11831           </tr>
11832           <tr class="entry_cont">
11833             <td class="entry_details" colspan="6">
11834               <p>This is used for sizing the gralloc buffers for
11835 JPEG</p>
11836             </td>
11837           </tr>
11838
11839
11840           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11841            <!-- end of entry -->
11842         
11843         
11844
11845       <!-- end of kind -->
11846       </tbody>
11847       <tr><td colspan="7" class="kind">dynamic</td></tr>
11848
11849       <thead class="entries_header">
11850         <tr>
11851           <th class="th_name">Property Name</th>
11852           <th class="th_type">Type</th>
11853           <th class="th_description">Description</th>
11854           <th class="th_units">Units</th>
11855           <th class="th_range">Range</th>
11856           <th class="th_hal_version">Initial HIDL HAL version</th>
11857           <th class="th_tags">Tags</th>
11858         </tr>
11859       </thead>
11860
11861       <tbody>
11862
11863         
11864
11865         
11866
11867         
11868
11869         
11870
11871                 
11872           <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
11873             <td class="entry_name
11874              " rowspan="3">
11875               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11876             </td>
11877             <td class="entry_type">
11878                 <span class="entry_type_name">byte</span>
11879
11880               <span class="entry_type_visibility"> [java_public as location]</span>
11881
11882               <span class="entry_type_synthetic">[synthetic] </span>
11883
11884               <span class="entry_type_hwlevel">[legacy] </span>
11885
11886
11887
11888
11889             </td> <!-- entry_type -->
11890
11891             <td class="entry_description">
11892               <p>A location object to use when generating image GPS metadata.<wbr/></p>
11893             </td>
11894
11895             <td class="entry_units">
11896             </td>
11897
11898             <td class="entry_range">
11899             </td>
11900
11901             <td class="entry_hal_version">
11902               <p>3.<wbr/>2</p>
11903             </td>
11904
11905             <td class="entry_tags">
11906             </td>
11907
11908           </tr>
11909           <tr class="entries_header">
11910             <th class="th_details" colspan="6">Details</th>
11911           </tr>
11912           <tr class="entry_cont">
11913             <td class="entry_details" colspan="6">
11914               <p>Setting a location object in a request will include the GPS coordinates of the location
11915 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11916 viewed by anyone who receives the JPEG image.<wbr/></p>
11917             </td>
11918           </tr>
11919
11920
11921           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11922            <!-- end of entry -->
11923         
11924                 
11925           <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
11926             <td class="entry_name
11927              " rowspan="1">
11928               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11929             </td>
11930             <td class="entry_type">
11931                 <span class="entry_type_name">double</span>
11932                 <span class="entry_type_container">x</span>
11933
11934                 <span class="entry_type_array">
11935                   3
11936                 </span>
11937               <span class="entry_type_visibility"> [ndk_public]</span>
11938
11939
11940               <span class="entry_type_hwlevel">[legacy] </span>
11941
11942
11943                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11944
11945
11946             </td> <!-- entry_type -->
11947
11948             <td class="entry_description">
11949               <p>GPS coordinates to include in output JPEG
11950 EXIF.<wbr/></p>
11951             </td>
11952
11953             <td class="entry_units">
11954             </td>
11955
11956             <td class="entry_range">
11957               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11958             </td>
11959
11960             <td class="entry_hal_version">
11961               <p>3.<wbr/>2</p>
11962             </td>
11963
11964             <td class="entry_tags">
11965               <ul class="entry_tags">
11966                   <li><a href="#tag_BC">BC</a></li>
11967               </ul>
11968             </td>
11969
11970           </tr>
11971
11972
11973           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11974            <!-- end of entry -->
11975         
11976                 
11977           <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
11978             <td class="entry_name
11979              " rowspan="1">
11980               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11981             </td>
11982             <td class="entry_type">
11983                 <span class="entry_type_name">byte</span>
11984
11985               <span class="entry_type_visibility"> [ndk_public as string]</span>
11986
11987
11988               <span class="entry_type_hwlevel">[legacy] </span>
11989
11990
11991
11992
11993             </td> <!-- entry_type -->
11994
11995             <td class="entry_description">
11996               <p>32 characters describing GPS algorithm to
11997 include in EXIF.<wbr/></p>
11998             </td>
11999
12000             <td class="entry_units">
12001               UTF-8 null-terminated string
12002             </td>
12003
12004             <td class="entry_range">
12005             </td>
12006
12007             <td class="entry_hal_version">
12008               <p>3.<wbr/>2</p>
12009             </td>
12010
12011             <td class="entry_tags">
12012               <ul class="entry_tags">
12013                   <li><a href="#tag_BC">BC</a></li>
12014               </ul>
12015             </td>
12016
12017           </tr>
12018
12019
12020           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12021            <!-- end of entry -->
12022         
12023                 
12024           <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
12025             <td class="entry_name
12026              " rowspan="1">
12027               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
12028             </td>
12029             <td class="entry_type">
12030                 <span class="entry_type_name">int64</span>
12031
12032               <span class="entry_type_visibility"> [ndk_public]</span>
12033
12034
12035               <span class="entry_type_hwlevel">[legacy] </span>
12036
12037
12038
12039
12040             </td> <!-- entry_type -->
12041
12042             <td class="entry_description">
12043               <p>Time GPS fix was made to include in
12044 EXIF.<wbr/></p>
12045             </td>
12046
12047             <td class="entry_units">
12048               UTC in seconds since January 1,<wbr/> 1970
12049             </td>
12050
12051             <td class="entry_range">
12052             </td>
12053
12054             <td class="entry_hal_version">
12055               <p>3.<wbr/>2</p>
12056             </td>
12057
12058             <td class="entry_tags">
12059               <ul class="entry_tags">
12060                   <li><a href="#tag_BC">BC</a></li>
12061               </ul>
12062             </td>
12063
12064           </tr>
12065
12066
12067           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12068            <!-- end of entry -->
12069         
12070                 
12071           <tr class="entry" id="dynamic_android.jpeg.orientation">
12072             <td class="entry_name
12073              " rowspan="3">
12074               android.<wbr/>jpeg.<wbr/>orientation
12075             </td>
12076             <td class="entry_type">
12077                 <span class="entry_type_name">int32</span>
12078
12079               <span class="entry_type_visibility"> [public]</span>
12080
12081
12082               <span class="entry_type_hwlevel">[legacy] </span>
12083
12084
12085
12086
12087             </td> <!-- entry_type -->
12088
12089             <td class="entry_description">
12090               <p>The orientation for a JPEG image.<wbr/></p>
12091             </td>
12092
12093             <td class="entry_units">
12094               Degrees in multiples of 90
12095             </td>
12096
12097             <td class="entry_range">
12098               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
12099             </td>
12100
12101             <td class="entry_hal_version">
12102               <p>3.<wbr/>2</p>
12103             </td>
12104
12105             <td class="entry_tags">
12106               <ul class="entry_tags">
12107                   <li><a href="#tag_BC">BC</a></li>
12108               </ul>
12109             </td>
12110
12111           </tr>
12112           <tr class="entries_header">
12113             <th class="th_details" colspan="6">Details</th>
12114           </tr>
12115           <tr class="entry_cont">
12116             <td class="entry_details" colspan="6">
12117               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
12118 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
12119 upright.<wbr/></p>
12120 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
12121 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
12122 the thumbnail data will also be rotated.<wbr/></p>
12123 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
12124 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
12125 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
12126 sample code may be used:</p>
12127 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
12128     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
12129     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
12130
12131     //<wbr/> Round device orientation to a multiple of 90
12132     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
12133
12134     //<wbr/> Reverse device orientation for front-facing cameras
12135     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
12136     if (facingFront) deviceOrientation = -deviceOrientation;
12137
12138     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
12139     //<wbr/> the image upright relative to the device orientation
12140     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
12141
12142     return jpegOrientation;
12143 }
12144 </code></pre>
12145             </td>
12146           </tr>
12147
12148
12149           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12150            <!-- end of entry -->
12151         
12152                 
12153           <tr class="entry" id="dynamic_android.jpeg.quality">
12154             <td class="entry_name
12155              " rowspan="3">
12156               android.<wbr/>jpeg.<wbr/>quality
12157             </td>
12158             <td class="entry_type">
12159                 <span class="entry_type_name">byte</span>
12160
12161               <span class="entry_type_visibility"> [public]</span>
12162
12163
12164               <span class="entry_type_hwlevel">[legacy] </span>
12165
12166
12167
12168
12169             </td> <!-- entry_type -->
12170
12171             <td class="entry_description">
12172               <p>Compression quality of the final JPEG
12173 image.<wbr/></p>
12174             </td>
12175
12176             <td class="entry_units">
12177             </td>
12178
12179             <td class="entry_range">
12180               <p>1-100; larger is higher quality</p>
12181             </td>
12182
12183             <td class="entry_hal_version">
12184               <p>3.<wbr/>2</p>
12185             </td>
12186
12187             <td class="entry_tags">
12188               <ul class="entry_tags">
12189                   <li><a href="#tag_BC">BC</a></li>
12190               </ul>
12191             </td>
12192
12193           </tr>
12194           <tr class="entries_header">
12195             <th class="th_details" colspan="6">Details</th>
12196           </tr>
12197           <tr class="entry_cont">
12198             <td class="entry_details" colspan="6">
12199               <p>85-95 is typical usage range.<wbr/></p>
12200             </td>
12201           </tr>
12202
12203
12204           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12205            <!-- end of entry -->
12206         
12207                 
12208           <tr class="entry" id="dynamic_android.jpeg.size">
12209             <td class="entry_name
12210              " rowspan="3">
12211               android.<wbr/>jpeg.<wbr/>size
12212             </td>
12213             <td class="entry_type">
12214                 <span class="entry_type_name">int32</span>
12215
12216               <span class="entry_type_visibility"> [system]</span>
12217
12218
12219
12220
12221
12222
12223             </td> <!-- entry_type -->
12224
12225             <td class="entry_description">
12226               <p>The size of the compressed JPEG image,<wbr/> in
12227 bytes</p>
12228             </td>
12229
12230             <td class="entry_units">
12231             </td>
12232
12233             <td class="entry_range">
12234               <p>&gt;= 0</p>
12235             </td>
12236
12237             <td class="entry_hal_version">
12238               <p>3.<wbr/>2</p>
12239             </td>
12240
12241             <td class="entry_tags">
12242               <ul class="entry_tags">
12243                   <li><a href="#tag_FUTURE">FUTURE</a></li>
12244               </ul>
12245             </td>
12246
12247           </tr>
12248           <tr class="entries_header">
12249             <th class="th_details" colspan="6">Details</th>
12250           </tr>
12251           <tr class="entry_cont">
12252             <td class="entry_details" colspan="6">
12253               <p>If no JPEG output is produced for the request,<wbr/>
12254 this must be 0.<wbr/></p>
12255 <p>Otherwise,<wbr/> this describes the real size of the compressed
12256 JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
12257 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
12258 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
12259 the JPEG stream will be 1000000 bytes,<wbr/> of which the first
12260 500000 make up the real data.<wbr/></p>
12261             </td>
12262           </tr>
12263
12264
12265           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12266            <!-- end of entry -->
12267         
12268                 
12269           <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
12270             <td class="entry_name
12271              " rowspan="1">
12272               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
12273             </td>
12274             <td class="entry_type">
12275                 <span class="entry_type_name">byte</span>
12276
12277               <span class="entry_type_visibility"> [public]</span>
12278
12279
12280               <span class="entry_type_hwlevel">[legacy] </span>
12281
12282
12283
12284
12285             </td> <!-- entry_type -->
12286
12287             <td class="entry_description">
12288               <p>Compression quality of JPEG
12289 thumbnail.<wbr/></p>
12290             </td>
12291
12292             <td class="entry_units">
12293             </td>
12294
12295             <td class="entry_range">
12296               <p>1-100; larger is higher quality</p>
12297             </td>
12298
12299             <td class="entry_hal_version">
12300               <p>3.<wbr/>2</p>
12301             </td>
12302
12303             <td class="entry_tags">
12304               <ul class="entry_tags">
12305                   <li><a href="#tag_BC">BC</a></li>
12306               </ul>
12307             </td>
12308
12309           </tr>
12310
12311
12312           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12313            <!-- end of entry -->
12314         
12315                 
12316           <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
12317             <td class="entry_name
12318              " rowspan="5">
12319               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
12320             </td>
12321             <td class="entry_type">
12322                 <span class="entry_type_name">int32</span>
12323                 <span class="entry_type_container">x</span>
12324
12325                 <span class="entry_type_array">
12326                   2
12327                 </span>
12328               <span class="entry_type_visibility"> [public as size]</span>
12329
12330
12331               <span class="entry_type_hwlevel">[legacy] </span>
12332
12333
12334
12335
12336             </td> <!-- entry_type -->
12337
12338             <td class="entry_description">
12339               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
12340             </td>
12341
12342             <td class="entry_units">
12343             </td>
12344
12345             <td class="entry_range">
12346               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
12347             </td>
12348
12349             <td class="entry_hal_version">
12350               <p>3.<wbr/>2</p>
12351             </td>
12352
12353             <td class="entry_tags">
12354               <ul class="entry_tags">
12355                   <li><a href="#tag_BC">BC</a></li>
12356               </ul>
12357             </td>
12358
12359           </tr>
12360           <tr class="entries_header">
12361             <th class="th_details" colspan="6">Details</th>
12362           </tr>
12363           <tr class="entry_cont">
12364             <td class="entry_details" colspan="6">
12365               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
12366 but the captured JPEG will still be a valid image.<wbr/></p>
12367 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
12368 should have the same aspect ratio as the main JPEG output.<wbr/></p>
12369 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
12370 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
12371 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
12372 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
12373 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
12374 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
12375 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
12376 the camera device will handle thumbnail rotation in one of the following ways:</p>
12377 <ul>
12378 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
12379   and keep jpeg and thumbnail image data unrotated.<wbr/></li>
12380 <li>Rotate the jpeg and thumbnail image data and not set
12381   <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
12382   case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
12383   capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
12384   orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
12385   size.<wbr/></li>
12386 </ul>
12387             </td>
12388           </tr>
12389
12390           <tr class="entries_header">
12391             <th class="th_details" colspan="6">HAL Implementation Details</th>
12392           </tr>
12393           <tr class="entry_cont">
12394             <td class="entry_details" colspan="6">
12395               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
12396 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
12397 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
12398 thumbnail image cropping.<wbr/></p>
12399             </td>
12400           </tr>
12401
12402           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12403            <!-- end of entry -->
12404         
12405         
12406
12407       <!-- end of kind -->
12408       </tbody>
12409
12410   <!-- end of section -->
12411   <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
12412
12413
12414       <tr><td colspan="7" class="kind">controls</td></tr>
12415
12416       <thead class="entries_header">
12417         <tr>
12418           <th class="th_name">Property Name</th>
12419           <th class="th_type">Type</th>
12420           <th class="th_description">Description</th>
12421           <th class="th_units">Units</th>
12422           <th class="th_range">Range</th>
12423           <th class="th_hal_version">Initial HIDL HAL version</th>
12424           <th class="th_tags">Tags</th>
12425         </tr>
12426       </thead>
12427
12428       <tbody>
12429
12430         
12431
12432         
12433
12434         
12435
12436         
12437
12438                 
12439           <tr class="entry" id="controls_android.lens.aperture">
12440             <td class="entry_name
12441              " rowspan="3">
12442               android.<wbr/>lens.<wbr/>aperture
12443             </td>
12444             <td class="entry_type">
12445                 <span class="entry_type_name">float</span>
12446
12447               <span class="entry_type_visibility"> [public]</span>
12448
12449
12450               <span class="entry_type_hwlevel">[full] </span>
12451
12452
12453
12454
12455             </td> <!-- entry_type -->
12456
12457             <td class="entry_description">
12458               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12459 effective aperture diameter.<wbr/></p>
12460             </td>
12461
12462             <td class="entry_units">
12463               The f-number (f/<wbr/>N)
12464             </td>
12465
12466             <td class="entry_range">
12467               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12468             </td>
12469
12470             <td class="entry_hal_version">
12471               <p>3.<wbr/>2</p>
12472             </td>
12473
12474             <td class="entry_tags">
12475               <ul class="entry_tags">
12476                   <li><a href="#tag_V1">V1</a></li>
12477               </ul>
12478             </td>
12479
12480           </tr>
12481           <tr class="entries_header">
12482             <th class="th_details" colspan="6">Details</th>
12483           </tr>
12484           <tr class="entry_cont">
12485             <td class="entry_details" colspan="6">
12486               <p>Setting this value is only supported on the camera devices that have a variable
12487 aperture lens.<wbr/></p>
12488 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12489 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12490 <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>
12491 to achieve manual exposure control.<wbr/></p>
12492 <p>The requested aperture value may take several frames to reach the
12493 requested value; the camera device will report the current (intermediate)
12494 aperture size in capture result metadata while the aperture is changing.<wbr/>
12495 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>
12496 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12497 the ON modes,<wbr/> this will be overridden by the camera device
12498 auto-exposure algorithm,<wbr/> the overridden values are then provided
12499 back to the user in the corresponding result.<wbr/></p>
12500             </td>
12501           </tr>
12502
12503
12504           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12505            <!-- end of entry -->
12506         
12507                 
12508           <tr class="entry" id="controls_android.lens.filterDensity">
12509             <td class="entry_name
12510              " rowspan="3">
12511               android.<wbr/>lens.<wbr/>filter<wbr/>Density
12512             </td>
12513             <td class="entry_type">
12514                 <span class="entry_type_name">float</span>
12515
12516               <span class="entry_type_visibility"> [public]</span>
12517
12518
12519               <span class="entry_type_hwlevel">[full] </span>
12520
12521
12522
12523
12524             </td> <!-- entry_type -->
12525
12526             <td class="entry_description">
12527               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12528             </td>
12529
12530             <td class="entry_units">
12531               Exposure Value (EV)
12532             </td>
12533
12534             <td class="entry_range">
12535               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12536             </td>
12537
12538             <td class="entry_hal_version">
12539               <p>3.<wbr/>2</p>
12540             </td>
12541
12542             <td class="entry_tags">
12543               <ul class="entry_tags">
12544                   <li><a href="#tag_V1">V1</a></li>
12545               </ul>
12546             </td>
12547
12548           </tr>
12549           <tr class="entries_header">
12550             <th class="th_details" colspan="6">Details</th>
12551           </tr>
12552           <tr class="entry_cont">
12553             <td class="entry_details" colspan="6">
12554               <p>This control will not be supported on most camera devices.<wbr/></p>
12555 <p>Lens filters are typically used to lower the amount of light the
12556 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12557 step is the standard logarithmic representation,<wbr/> which are
12558 non-negative,<wbr/> and inversely proportional to the amount of light
12559 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
12560 in no reduction of the incoming light,<wbr/> and setting this to 2 would
12561 mean that the filter is set to reduce incoming light by two stops
12562 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12563 <p>It may take several frames before the lens filter density changes
12564 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12565 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12566             </td>
12567           </tr>
12568
12569
12570           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12571            <!-- end of entry -->
12572         
12573                 
12574           <tr class="entry" id="controls_android.lens.focalLength">
12575             <td class="entry_name
12576              " rowspan="3">
12577               android.<wbr/>lens.<wbr/>focal<wbr/>Length
12578             </td>
12579             <td class="entry_type">
12580                 <span class="entry_type_name">float</span>
12581
12582               <span class="entry_type_visibility"> [public]</span>
12583
12584
12585               <span class="entry_type_hwlevel">[legacy] </span>
12586
12587
12588
12589
12590             </td> <!-- entry_type -->
12591
12592             <td class="entry_description">
12593               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12594             </td>
12595
12596             <td class="entry_units">
12597               Millimeters
12598             </td>
12599
12600             <td class="entry_range">
12601               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12602             </td>
12603
12604             <td class="entry_hal_version">
12605               <p>3.<wbr/>2</p>
12606             </td>
12607
12608             <td class="entry_tags">
12609               <ul class="entry_tags">
12610                   <li><a href="#tag_V1">V1</a></li>
12611               </ul>
12612             </td>
12613
12614           </tr>
12615           <tr class="entries_header">
12616             <th class="th_details" colspan="6">Details</th>
12617           </tr>
12618           <tr class="entry_cont">
12619             <td class="entry_details" colspan="6">
12620               <p>This setting controls the physical focal length of the camera
12621 device's lens.<wbr/> Changing the focal length changes the field of
12622 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12623 <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
12624 setting won't be applied instantaneously,<wbr/> and it may take several
12625 frames before the lens can change to the requested focal length.<wbr/>
12626 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12627 be set to MOVING.<wbr/></p>
12628 <p>Optical zoom will not be supported on most devices.<wbr/></p>
12629             </td>
12630           </tr>
12631
12632
12633           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12634            <!-- end of entry -->
12635         
12636                 
12637           <tr class="entry" id="controls_android.lens.focusDistance">
12638             <td class="entry_name
12639              " rowspan="3">
12640               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
12641             </td>
12642             <td class="entry_type">
12643                 <span class="entry_type_name">float</span>
12644
12645               <span class="entry_type_visibility"> [public]</span>
12646
12647
12648               <span class="entry_type_hwlevel">[full] </span>
12649
12650
12651
12652
12653             </td> <!-- entry_type -->
12654
12655             <td class="entry_description">
12656               <p>Desired distance to plane of sharpest focus,<wbr/>
12657 measured from frontmost surface of the lens.<wbr/></p>
12658             </td>
12659
12660             <td class="entry_units">
12661               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12662             </td>
12663
12664             <td class="entry_range">
12665               <p>&gt;= 0</p>
12666             </td>
12667
12668             <td class="entry_hal_version">
12669               <p>3.<wbr/>2</p>
12670             </td>
12671
12672             <td class="entry_tags">
12673               <ul class="entry_tags">
12674                   <li><a href="#tag_BC">BC</a></li>
12675                   <li><a href="#tag_V1">V1</a></li>
12676               </ul>
12677             </td>
12678
12679           </tr>
12680           <tr class="entries_header">
12681             <th class="th_details" colspan="6">Details</th>
12682           </tr>
12683           <tr class="entry_cont">
12684             <td class="entry_details" colspan="6">
12685               <p>This control can be used for setting manual focus,<wbr/> on devices that support
12686 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
12687 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
12688 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
12689 <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>
12690 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
12691 instantaneously,<wbr/> and it may take several frames before the lens
12692 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
12693 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12694 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
12695 for infinity focus.<wbr/></p>
12696             </td>
12697           </tr>
12698
12699
12700           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12701            <!-- end of entry -->
12702         
12703                 
12704           <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
12705             <td class="entry_name
12706              " rowspan="3">
12707               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12708             </td>
12709             <td class="entry_type">
12710                 <span class="entry_type_name entry_type_name_enum">byte</span>
12711
12712               <span class="entry_type_visibility"> [public]</span>
12713
12714
12715               <span class="entry_type_hwlevel">[limited] </span>
12716
12717
12718
12719                 <ul class="entry_type_enum">
12720                   <li>
12721                     <span class="entry_type_enum_name">OFF (v3.2)</span>
12722                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12723                   </li>
12724                   <li>
12725                     <span class="entry_type_enum_name">ON (v3.2)</span>
12726                     <span class="entry_type_enum_optional">[optional]</span>
12727                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12728                   </li>
12729                 </ul>
12730
12731             </td> <!-- entry_type -->
12732
12733             <td class="entry_description">
12734               <p>Sets whether the camera device uses optical image stabilization (OIS)
12735 when capturing images.<wbr/></p>
12736             </td>
12737
12738             <td class="entry_units">
12739             </td>
12740
12741             <td class="entry_range">
12742               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12743             </td>
12744
12745             <td class="entry_hal_version">
12746               <p>3.<wbr/>2</p>
12747             </td>
12748
12749             <td class="entry_tags">
12750               <ul class="entry_tags">
12751                   <li><a href="#tag_V1">V1</a></li>
12752               </ul>
12753             </td>
12754
12755           </tr>
12756           <tr class="entries_header">
12757             <th class="th_details" colspan="6">Details</th>
12758           </tr>
12759           <tr class="entry_cont">
12760             <td class="entry_details" colspan="6">
12761               <p>OIS is used to compensate for motion blur due to small
12762 movements of the camera during capture.<wbr/> Unlike digital image
12763 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12764 makes use of mechanical elements to stabilize the camera
12765 sensor,<wbr/> and thus allows for longer exposure times before
12766 camera shake becomes apparent.<wbr/></p>
12767 <p>Switching between different optical stabilization modes may take several
12768 frames to initialize,<wbr/> the camera device will report the current mode in
12769 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12770 optical stabilization modes in the first several capture results may still
12771 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12772 <p>If a camera device supports both OIS and digital image stabilization
12773 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12774 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12775 <p>Not all devices will support OIS; see
12776 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12777 available controls.<wbr/></p>
12778             </td>
12779           </tr>
12780
12781
12782           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12783            <!-- end of entry -->
12784         
12785         
12786
12787       <!-- end of kind -->
12788       </tbody>
12789       <tr><td colspan="7" class="kind">static</td></tr>
12790
12791       <thead class="entries_header">
12792         <tr>
12793           <th class="th_name">Property Name</th>
12794           <th class="th_type">Type</th>
12795           <th class="th_description">Description</th>
12796           <th class="th_units">Units</th>
12797           <th class="th_range">Range</th>
12798           <th class="th_hal_version">Initial HIDL HAL version</th>
12799           <th class="th_tags">Tags</th>
12800         </tr>
12801       </thead>
12802
12803       <tbody>
12804
12805         
12806
12807         
12808
12809         
12810
12811         
12812                 
12813             
12814
12815                 
12816           <tr class="entry" id="static_android.lens.info.availableApertures">
12817             <td class="entry_name
12818              " rowspan="3">
12819               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
12820             </td>
12821             <td class="entry_type">
12822                 <span class="entry_type_name">float</span>
12823                 <span class="entry_type_container">x</span>
12824
12825                 <span class="entry_type_array">
12826                   n
12827                 </span>
12828               <span class="entry_type_visibility"> [public]</span>
12829
12830
12831               <span class="entry_type_hwlevel">[full] </span>
12832
12833
12834
12835
12836             </td> <!-- entry_type -->
12837
12838             <td class="entry_description">
12839               <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
12840 supported by this camera device.<wbr/></p>
12841             </td>
12842
12843             <td class="entry_units">
12844               The aperture f-number
12845             </td>
12846
12847             <td class="entry_range">
12848             </td>
12849
12850             <td class="entry_hal_version">
12851               <p>3.<wbr/>2</p>
12852             </td>
12853
12854             <td class="entry_tags">
12855               <ul class="entry_tags">
12856                   <li><a href="#tag_V1">V1</a></li>
12857               </ul>
12858             </td>
12859
12860           </tr>
12861           <tr class="entries_header">
12862             <th class="th_details" colspan="6">Details</th>
12863           </tr>
12864           <tr class="entry_cont">
12865             <td class="entry_details" colspan="6">
12866               <p>If the camera device doesn't support a variable lens aperture,<wbr/>
12867 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
12868 <p>If the camera device supports a variable aperture,<wbr/> the aperture values
12869 in this list will be sorted in ascending order.<wbr/></p>
12870             </td>
12871           </tr>
12872
12873
12874           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12875            <!-- end of entry -->
12876         
12877                 
12878           <tr class="entry" id="static_android.lens.info.availableFilterDensities">
12879             <td class="entry_name
12880              " rowspan="3">
12881               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
12882             </td>
12883             <td class="entry_type">
12884                 <span class="entry_type_name">float</span>
12885                 <span class="entry_type_container">x</span>
12886
12887                 <span class="entry_type_array">
12888                   n
12889                 </span>
12890               <span class="entry_type_visibility"> [public]</span>
12891
12892
12893               <span class="entry_type_hwlevel">[full] </span>
12894
12895
12896
12897
12898             </td> <!-- entry_type -->
12899
12900             <td class="entry_description">
12901               <p>List of neutral density filter values for
12902 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
12903             </td>
12904
12905             <td class="entry_units">
12906               Exposure value (EV)
12907             </td>
12908
12909             <td class="entry_range">
12910               <p>Values are &gt;= 0</p>
12911             </td>
12912
12913             <td class="entry_hal_version">
12914               <p>3.<wbr/>2</p>
12915             </td>
12916
12917             <td class="entry_tags">
12918               <ul class="entry_tags">
12919                   <li><a href="#tag_V1">V1</a></li>
12920               </ul>
12921             </td>
12922
12923           </tr>
12924           <tr class="entries_header">
12925             <th class="th_details" colspan="6">Details</th>
12926           </tr>
12927           <tr class="entry_cont">
12928             <td class="entry_details" colspan="6">
12929               <p>If a neutral density filter is not supported by this camera device,<wbr/>
12930 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
12931 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
12932             </td>
12933           </tr>
12934
12935
12936           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12937            <!-- end of entry -->
12938         
12939                 
12940           <tr class="entry" id="static_android.lens.info.availableFocalLengths">
12941             <td class="entry_name
12942              " rowspan="3">
12943               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
12944             </td>
12945             <td class="entry_type">
12946                 <span class="entry_type_name">float</span>
12947                 <span class="entry_type_container">x</span>
12948
12949                 <span class="entry_type_array">
12950                   n
12951                 </span>
12952               <span class="entry_type_visibility"> [public]</span>
12953
12954
12955               <span class="entry_type_hwlevel">[legacy] </span>
12956
12957
12958                 <div class="entry_type_notes">The list of available focal lengths</div>
12959
12960
12961             </td> <!-- entry_type -->
12962
12963             <td class="entry_description">
12964               <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
12965 device.<wbr/></p>
12966             </td>
12967
12968             <td class="entry_units">
12969               Millimeters
12970             </td>
12971
12972             <td class="entry_range">
12973               <p>Values are &gt; 0</p>
12974             </td>
12975
12976             <td class="entry_hal_version">
12977               <p>3.<wbr/>2</p>
12978             </td>
12979
12980             <td class="entry_tags">
12981               <ul class="entry_tags">
12982                   <li><a href="#tag_BC">BC</a></li>
12983                   <li><a href="#tag_V1">V1</a></li>
12984               </ul>
12985             </td>
12986
12987           </tr>
12988           <tr class="entries_header">
12989             <th class="th_details" colspan="6">Details</th>
12990           </tr>
12991           <tr class="entry_cont">
12992             <td class="entry_details" colspan="6">
12993               <p>If optical zoom is not supported,<wbr/> this list will only contain
12994 a single value corresponding to the fixed focal length of the
12995 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
12996 by the camera device,<wbr/> in ascending order.<wbr/></p>
12997             </td>
12998           </tr>
12999
13000
13001           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13002            <!-- end of entry -->
13003         
13004                 
13005           <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
13006             <td class="entry_name
13007              " rowspan="3">
13008               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
13009             </td>
13010             <td class="entry_type">
13011                 <span class="entry_type_name">byte</span>
13012                 <span class="entry_type_container">x</span>
13013
13014                 <span class="entry_type_array">
13015                   n
13016                 </span>
13017               <span class="entry_type_visibility"> [public as enumList]</span>
13018
13019
13020               <span class="entry_type_hwlevel">[limited] </span>
13021
13022
13023                 <div class="entry_type_notes">list of enums</div>
13024
13025
13026             </td> <!-- entry_type -->
13027
13028             <td class="entry_description">
13029               <p>List of optical image stabilization (OIS) modes for
13030 <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>
13031             </td>
13032
13033             <td class="entry_units">
13034             </td>
13035
13036             <td class="entry_range">
13037               <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
13038             </td>
13039
13040             <td class="entry_hal_version">
13041               <p>3.<wbr/>2</p>
13042             </td>
13043
13044             <td class="entry_tags">
13045               <ul class="entry_tags">
13046                   <li><a href="#tag_V1">V1</a></li>
13047               </ul>
13048             </td>
13049
13050           </tr>
13051           <tr class="entries_header">
13052             <th class="th_details" colspan="6">Details</th>
13053           </tr>
13054           <tr class="entry_cont">
13055             <td class="entry_details" colspan="6">
13056               <p>If OIS is not supported by a given camera device,<wbr/> this list will
13057 contain only OFF.<wbr/></p>
13058             </td>
13059           </tr>
13060
13061
13062           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13063            <!-- end of entry -->
13064         
13065                 
13066           <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
13067             <td class="entry_name
13068              " rowspan="3">
13069               android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
13070             </td>
13071             <td class="entry_type">
13072                 <span class="entry_type_name">float</span>
13073
13074               <span class="entry_type_visibility"> [public]</span>
13075
13076
13077               <span class="entry_type_hwlevel">[limited] </span>
13078
13079
13080
13081
13082             </td> <!-- entry_type -->
13083
13084             <td class="entry_description">
13085               <p>Hyperfocal distance for this lens.<wbr/></p>
13086             </td>
13087
13088             <td class="entry_units">
13089               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13090             </td>
13091
13092             <td class="entry_range">
13093               <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
13094 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>
13095             </td>
13096
13097             <td class="entry_hal_version">
13098               <p>3.<wbr/>2</p>
13099             </td>
13100
13101             <td class="entry_tags">
13102             </td>
13103
13104           </tr>
13105           <tr class="entries_header">
13106             <th class="th_details" colspan="6">Details</th>
13107           </tr>
13108           <tr class="entry_cont">
13109             <td class="entry_details" colspan="6">
13110               <p>If the lens is not fixed focus,<wbr/> the camera device will report this
13111 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>
13112             </td>
13113           </tr>
13114
13115
13116           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13117            <!-- end of entry -->
13118         
13119                 
13120           <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
13121             <td class="entry_name
13122              " rowspan="5">
13123               android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
13124             </td>
13125             <td class="entry_type">
13126                 <span class="entry_type_name">float</span>
13127
13128               <span class="entry_type_visibility"> [public]</span>
13129
13130
13131               <span class="entry_type_hwlevel">[limited] </span>
13132
13133
13134
13135
13136             </td> <!-- entry_type -->
13137
13138             <td class="entry_description">
13139               <p>Shortest distance from frontmost surface
13140 of the lens that can be brought into sharp focus.<wbr/></p>
13141             </td>
13142
13143             <td class="entry_units">
13144               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13145             </td>
13146
13147             <td class="entry_range">
13148               <p>&gt;= 0</p>
13149             </td>
13150
13151             <td class="entry_hal_version">
13152               <p>3.<wbr/>2</p>
13153             </td>
13154
13155             <td class="entry_tags">
13156               <ul class="entry_tags">
13157                   <li><a href="#tag_V1">V1</a></li>
13158               </ul>
13159             </td>
13160
13161           </tr>
13162           <tr class="entries_header">
13163             <th class="th_details" colspan="6">Details</th>
13164           </tr>
13165           <tr class="entry_cont">
13166             <td class="entry_details" colspan="6">
13167               <p>If the lens is fixed-focus,<wbr/> this will be
13168 0.<wbr/></p>
13169             </td>
13170           </tr>
13171
13172           <tr class="entries_header">
13173             <th class="th_details" colspan="6">HAL Implementation Details</th>
13174           </tr>
13175           <tr class="entry_cont">
13176             <td class="entry_details" colspan="6">
13177               <p>Mandatory for FULL devices; LIMITED devices
13178 must always set this value to 0 for fixed-focus; and may omit
13179 the minimum focus distance otherwise.<wbr/></p>
13180 <p>This field is also mandatory for all devices advertising
13181 the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
13182             </td>
13183           </tr>
13184
13185           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13186            <!-- end of entry -->
13187         
13188                 
13189           <tr class="entry" id="static_android.lens.info.shadingMapSize">
13190             <td class="entry_name
13191              " rowspan="3">
13192               android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
13193             </td>
13194             <td class="entry_type">
13195                 <span class="entry_type_name">int32</span>
13196                 <span class="entry_type_container">x</span>
13197
13198                 <span class="entry_type_array">
13199                   2
13200                 </span>
13201               <span class="entry_type_visibility"> [ndk_public as size]</span>
13202
13203
13204               <span class="entry_type_hwlevel">[full] </span>
13205
13206
13207                 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
13208
13209
13210             </td> <!-- entry_type -->
13211
13212             <td class="entry_description">
13213               <p>Dimensions of lens shading map.<wbr/></p>
13214             </td>
13215
13216             <td class="entry_units">
13217             </td>
13218
13219             <td class="entry_range">
13220               <p>Both values &gt;= 1</p>
13221             </td>
13222
13223             <td class="entry_hal_version">
13224               <p>3.<wbr/>2</p>
13225             </td>
13226
13227             <td class="entry_tags">
13228               <ul class="entry_tags">
13229                   <li><a href="#tag_V1">V1</a></li>
13230               </ul>
13231             </td>
13232
13233           </tr>
13234           <tr class="entries_header">
13235             <th class="th_details" colspan="6">Details</th>
13236           </tr>
13237           <tr class="entry_cont">
13238             <td class="entry_details" colspan="6">
13239               <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
13240 must be smaller than 64x64.<wbr/></p>
13241             </td>
13242           </tr>
13243
13244
13245           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13246            <!-- end of entry -->
13247         
13248                 
13249           <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
13250             <td class="entry_name
13251              " rowspan="5">
13252               android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
13253             </td>
13254             <td class="entry_type">
13255                 <span class="entry_type_name entry_type_name_enum">byte</span>
13256
13257               <span class="entry_type_visibility"> [public]</span>
13258
13259
13260               <span class="entry_type_hwlevel">[limited] </span>
13261
13262
13263
13264                 <ul class="entry_type_enum">
13265                   <li>
13266                     <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span>
13267                     <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
13268 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
13269 <p>Setting the lens to the same focus distance on separate occasions may
13270 result in a different real focus distance,<wbr/> depending on factors such
13271 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
13272 and the device temperature.<wbr/> The focus distance value will still be
13273 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
13274 represents the farthest focus.<wbr/></p></span>
13275                   </li>
13276                   <li>
13277                     <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span>
13278                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
13279 <p>However,<wbr/> setting the lens to the same focus distance
13280 on separate occasions may result in a different real
13281 focus distance,<wbr/> depending on factors such as the
13282 orientation of the device,<wbr/> the age of the focusing
13283 mechanism,<wbr/> and the device temperature.<wbr/></p></span>
13284                   </li>
13285                   <li>
13286                     <span class="entry_type_enum_name">CALIBRATED (v3.2)</span>
13287                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
13288 is calibrated.<wbr/></p>
13289 <p>The lens mechanism is calibrated so that setting the
13290 same focus distance is repeatable on multiple
13291 occasions with good accuracy,<wbr/> and the focus distance
13292 corresponds to the real physical distance to the plane
13293 of best focus.<wbr/></p></span>
13294                   </li>
13295                 </ul>
13296
13297             </td> <!-- entry_type -->
13298
13299             <td class="entry_description">
13300               <p>The lens focus distance calibration quality.<wbr/></p>
13301             </td>
13302
13303             <td class="entry_units">
13304             </td>
13305
13306             <td class="entry_range">
13307             </td>
13308
13309             <td class="entry_hal_version">
13310               <p>3.<wbr/>2</p>
13311             </td>
13312
13313             <td class="entry_tags">
13314               <ul class="entry_tags">
13315                   <li><a href="#tag_V1">V1</a></li>
13316               </ul>
13317             </td>
13318
13319           </tr>
13320           <tr class="entries_header">
13321             <th class="th_details" colspan="6">Details</th>
13322           </tr>
13323           <tr class="entry_cont">
13324             <td class="entry_details" colspan="6">
13325               <p>The lens focus distance calibration quality determines the reliability of
13326 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
13327 <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
13328 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
13329 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in
13330 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
13331 and increasing positive numbers represent focusing closer and closer
13332 to the camera device.<wbr/> The focus distance control also uses diopters
13333 on these devices.<wbr/></p>
13334 <p>UNCALIBRATED devices do not use units that are directly comparable
13335 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
13336 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
13337 nearest focus the device can achieve.<wbr/></p>
13338             </td>
13339           </tr>
13340
13341           <tr class="entries_header">
13342             <th class="th_details" colspan="6">HAL Implementation Details</th>
13343           </tr>
13344           <tr class="entry_cont">
13345             <td class="entry_details" colspan="6">
13346               <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
13347 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
13348 and the lens focus distance is set to 0 diopters
13349 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
13350 and is stably focused at infinity even if the device tilts.<wbr/> It may take the
13351 lens some time to move; during the move the lens state should be MOVING and
13352 the output diopter value should be changing toward 0.<wbr/></p>
13353             </td>
13354           </tr>
13355
13356           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13357            <!-- end of entry -->
13358         
13359         
13360         
13361
13362                 
13363           <tr class="entry" id="static_android.lens.facing">
13364             <td class="entry_name
13365              " rowspan="1">
13366               android.<wbr/>lens.<wbr/>facing
13367             </td>
13368             <td class="entry_type">
13369                 <span class="entry_type_name entry_type_name_enum">byte</span>
13370
13371               <span class="entry_type_visibility"> [public]</span>
13372
13373
13374               <span class="entry_type_hwlevel">[legacy] </span>
13375
13376
13377
13378                 <ul class="entry_type_enum">
13379                   <li>
13380                     <span class="entry_type_enum_name">FRONT (v3.2)</span>
13381                     <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
13382                   </li>
13383                   <li>
13384                     <span class="entry_type_enum_name">BACK (v3.2)</span>
13385                     <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
13386                   </li>
13387                   <li>
13388                     <span class="entry_type_enum_name">EXTERNAL (v3.2)</span>
13389                     <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
13390 device's screen.<wbr/></p></span>
13391                   </li>
13392                 </ul>
13393
13394             </td> <!-- entry_type -->
13395
13396             <td class="entry_description">
13397               <p>Direction the camera faces relative to
13398 device screen.<wbr/></p>
13399             </td>
13400
13401             <td class="entry_units">
13402             </td>
13403
13404             <td class="entry_range">
13405             </td>
13406
13407             <td class="entry_hal_version">
13408               <p>3.<wbr/>2</p>
13409             </td>
13410
13411             <td class="entry_tags">
13412             </td>
13413
13414           </tr>
13415
13416
13417           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13418            <!-- end of entry -->
13419         
13420                 
13421           <tr class="entry" id="static_android.lens.poseRotation">
13422             <td class="entry_name
13423              " rowspan="3">
13424               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13425             </td>
13426             <td class="entry_type">
13427                 <span class="entry_type_name">float</span>
13428                 <span class="entry_type_container">x</span>
13429
13430                 <span class="entry_type_array">
13431                   4
13432                 </span>
13433               <span class="entry_type_visibility"> [public]</span>
13434
13435
13436
13437
13438
13439
13440             </td> <!-- entry_type -->
13441
13442             <td class="entry_description">
13443               <p>The orientation of the camera relative to the sensor
13444 coordinate system.<wbr/></p>
13445             </td>
13446
13447             <td class="entry_units">
13448               
13449             Quaternion coefficients
13450           
13451             </td>
13452
13453             <td class="entry_range">
13454             </td>
13455
13456             <td class="entry_hal_version">
13457               <p>3.<wbr/>2</p>
13458             </td>
13459
13460             <td class="entry_tags">
13461               <ul class="entry_tags">
13462                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13463               </ul>
13464             </td>
13465
13466           </tr>
13467           <tr class="entries_header">
13468             <th class="th_details" colspan="6">Details</th>
13469           </tr>
13470           <tr class="entry_cont">
13471             <td class="entry_details" colspan="6">
13472               <p>The four coefficients that describe the quaternion
13473 rotation from the Android sensor coordinate system to a
13474 camera-aligned coordinate system where the X-axis is
13475 aligned with the long side of the image sensor,<wbr/> the Y-axis
13476 is aligned with the short side of the image sensor,<wbr/> and
13477 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13478 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13479 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13480 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13481 <pre><code> theta = 2 * acos(w)
13482 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13483 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13484 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13485 </code></pre>
13486 <p>To create a 3x3 rotation matrix that applies the rotation
13487 defined by this quaternion,<wbr/> the following matrix can be
13488 used:</p>
13489 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
13490            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
13491            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13492 </code></pre>
13493 <p>This matrix can then be used to apply the rotation to a
13494  column vector point with</p>
13495 <p><code>p' = Rp</code></p>
13496 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13497  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13498             </td>
13499           </tr>
13500
13501
13502           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13503            <!-- end of entry -->
13504         
13505                 
13506           <tr class="entry" id="static_android.lens.poseTranslation">
13507             <td class="entry_name
13508              " rowspan="3">
13509               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13510             </td>
13511             <td class="entry_type">
13512                 <span class="entry_type_name">float</span>
13513                 <span class="entry_type_container">x</span>
13514
13515                 <span class="entry_type_array">
13516                   3
13517                 </span>
13518               <span class="entry_type_visibility"> [public]</span>
13519
13520
13521
13522
13523
13524
13525             </td> <!-- entry_type -->
13526
13527             <td class="entry_description">
13528               <p>Position of the camera optical center.<wbr/></p>
13529             </td>
13530
13531             <td class="entry_units">
13532               Meters
13533             </td>
13534
13535             <td class="entry_range">
13536             </td>
13537
13538             <td class="entry_hal_version">
13539               <p>3.<wbr/>2</p>
13540             </td>
13541
13542             <td class="entry_tags">
13543               <ul class="entry_tags">
13544                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13545               </ul>
13546             </td>
13547
13548           </tr>
13549           <tr class="entries_header">
13550             <th class="th_details" colspan="6">Details</th>
13551           </tr>
13552           <tr class="entry_cont">
13553             <td class="entry_details" colspan="6">
13554               <p>The position of the camera device's lens optical center,<wbr/>
13555 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
13556 <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
13557 is relative to the optical center of the largest camera device facing in the same
13558 direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
13559 coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
13560 coordinate system,<wbr/> but not the origin.<wbr/></p>
13561 <p>If this device is the largest or only camera device with a given facing,<wbr/> then this
13562 position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
13563 from the main sensor along the +X axis (to the right from the user's perspective) will
13564 report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13565 <p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
13566 the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/>  Then the source
13567 camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
13568 <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
13569 relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
13570 camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
13571 camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
13572 coordinates.<wbr/></p>
13573 <p>To compare this against a real image from the destination camera,<wbr/> the destination camera
13574 image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
13575 <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
13576 the center of the primary gyroscope on the device.<wbr/></p>
13577             </td>
13578           </tr>
13579
13580
13581           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13582            <!-- end of entry -->
13583         
13584                 
13585           <tr class="entry" id="static_android.lens.intrinsicCalibration">
13586             <td class="entry_name
13587              " rowspan="3">
13588               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13589             </td>
13590             <td class="entry_type">
13591                 <span class="entry_type_name">float</span>
13592                 <span class="entry_type_container">x</span>
13593
13594                 <span class="entry_type_array">
13595                   5
13596                 </span>
13597               <span class="entry_type_visibility"> [public]</span>
13598
13599
13600
13601
13602
13603
13604             </td> <!-- entry_type -->
13605
13606             <td class="entry_description">
13607               <p>The parameters for this camera device's intrinsic
13608 calibration.<wbr/></p>
13609             </td>
13610
13611             <td class="entry_units">
13612               
13613             Pixels in the
13614             android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13615             coordinate system.<wbr/>
13616           
13617             </td>
13618
13619             <td class="entry_range">
13620             </td>
13621
13622             <td class="entry_hal_version">
13623               <p>3.<wbr/>2</p>
13624             </td>
13625
13626             <td class="entry_tags">
13627               <ul class="entry_tags">
13628                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13629               </ul>
13630             </td>
13631
13632           </tr>
13633           <tr class="entries_header">
13634             <th class="th_details" colspan="6">Details</th>
13635           </tr>
13636           <tr class="entry_cont">
13637             <td class="entry_details" colspan="6">
13638               <p>The five calibration parameters that describe the
13639 transform from camera-centric 3D coordinates to sensor
13640 pixel coordinates:</p>
13641 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13642 </code></pre>
13643 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13644 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13645 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13646 being aligned with the lens plane.<wbr/></p>
13647 <p>These are typically used within a transformation matrix K:</p>
13648 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
13649        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13650        0    0,<wbr/>   1 ]
13651 </code></pre>
13652 <p>which can then be combined with the camera pose rotation
13653 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13654 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13655 complete transform from world coordinates to pixel
13656 coordinates:</p>
13657 <pre><code>P = [ K 0   * [ R t
13658      0 1 ]     0 1 ]
13659 </code></pre>
13660 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13661 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13662 coordinate system,<wbr/> and with the mapping including the
13663 homogeneous division by z:</p>
13664 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13665 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13666 </code></pre>
13667 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13668 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13669 (depth) in pixel coordinates.<wbr/></p>
13670 <p>Note that the coordinate system for this transform is the
13671 <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/>
13672 where <code>(0,<wbr/>0)</code> is the top-left of the
13673 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13674 intrinsic calibration transforms have been applied to a
13675 world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>
13676 transform needs to be applied,<wbr/> and the result adjusted to
13677 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13678 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13679 activeArraySize rectangle),<wbr/> to determine the final pixel
13680 coordinate of the world point for processed (non-RAW)
13681 output buffers.<wbr/></p>
13682             </td>
13683           </tr>
13684
13685
13686           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13687            <!-- end of entry -->
13688         
13689                 
13690           <tr class="entry" id="static_android.lens.radialDistortion">
13691             <td class="entry_name
13692                 entry_name_deprecated
13693              " rowspan="3">
13694               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13695             </td>
13696             <td class="entry_type">
13697                 <span class="entry_type_name">float</span>
13698                 <span class="entry_type_container">x</span>
13699
13700                 <span class="entry_type_array">
13701                   6
13702                 </span>
13703               <span class="entry_type_visibility"> [public]</span>
13704
13705
13706
13707               <span class="entry_type_deprecated">[deprecated] </span>
13708
13709
13710
13711             </td> <!-- entry_type -->
13712
13713             <td class="entry_description">
13714               <p>The correction coefficients to correct for this camera device's
13715 radial and tangential lens distortion.<wbr/></p>
13716             </td>
13717
13718             <td class="entry_units">
13719               
13720             Unitless coefficients.<wbr/>
13721           
13722             </td>
13723
13724             <td class="entry_range">
13725               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13726             </td>
13727
13728             <td class="entry_hal_version">
13729               <p>3.<wbr/>2</p>
13730             </td>
13731
13732             <td class="entry_tags">
13733               <ul class="entry_tags">
13734                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13735               </ul>
13736             </td>
13737
13738           </tr>
13739           <tr class="entries_header">
13740             <th class="th_details" colspan="6">Details</th>
13741           </tr>
13742           <tr class="entry_cont">
13743             <td class="entry_details" colspan="6">
13744               <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13745 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13746 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13747 lens's geometric distortion with the mapping equations:</p>
13748 <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 ) +
13749        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13750  y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13751        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13752 </code></pre>
13753 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13754 input image that correspond to the pixel values in the
13755 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13756 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13757 </code></pre>
13758 <p>The pixel coordinates are defined in a normalized
13759 coordinate system related to the
13760 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13761 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
13762 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13763 of both x and y coordinates are normalized to be 1 at the
13764 edge further from the optical center,<wbr/> so the range
13765 for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
13766 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13767 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13768 is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
13769 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13770             </td>
13771           </tr>
13772
13773
13774           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13775            <!-- end of entry -->
13776         
13777                 
13778           <tr class="entry" id="static_android.lens.poseReference">
13779             <td class="entry_name
13780              " rowspan="3">
13781               android.<wbr/>lens.<wbr/>pose<wbr/>Reference
13782             </td>
13783             <td class="entry_type">
13784                 <span class="entry_type_name entry_type_name_enum">byte</span>
13785
13786               <span class="entry_type_visibility"> [public]</span>
13787
13788
13789
13790
13791
13792                 <ul class="entry_type_enum">
13793                   <li>
13794                     <span class="entry_type_enum_name">PRIMARY_CAMERA (v3.3)</span>
13795                     <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
13796 the largest camera device facing the same direction as this camera.<wbr/></p>
13797 <p>This is the default value for API levels before Android P.<wbr/></p></span>
13798                   </li>
13799                   <li>
13800                     <span class="entry_type_enum_name">GYROSCOPE (v3.3)</span>
13801                     <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
13802 primary gyroscope of this Android device.<wbr/></p></span>
13803                   </li>
13804                 </ul>
13805
13806             </td> <!-- entry_type -->
13807
13808             <td class="entry_description">
13809               <p>The origin for <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p>
13810             </td>
13811
13812             <td class="entry_units">
13813             </td>
13814
13815             <td class="entry_range">
13816             </td>
13817
13818             <td class="entry_hal_version">
13819               <p>3.<wbr/>3</p>
13820             </td>
13821
13822             <td class="entry_tags">
13823             </td>
13824
13825           </tr>
13826           <tr class="entries_header">
13827             <th class="th_details" colspan="6">Details</th>
13828           </tr>
13829           <tr class="entry_cont">
13830             <td class="entry_details" colspan="6">
13831               <p>Different calibration methods and use cases can produce better or worse results
13832 depending on the selected coordinate origin.<wbr/></p>
13833             </td>
13834           </tr>
13835
13836
13837           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13838            <!-- end of entry -->
13839         
13840                 
13841           <tr class="entry" id="static_android.lens.distortion">
13842             <td class="entry_name
13843              " rowspan="3">
13844               android.<wbr/>lens.<wbr/>distortion
13845             </td>
13846             <td class="entry_type">
13847                 <span class="entry_type_name">float</span>
13848                 <span class="entry_type_container">x</span>
13849
13850                 <span class="entry_type_array">
13851                   5
13852                 </span>
13853               <span class="entry_type_visibility"> [public]</span>
13854
13855
13856
13857
13858
13859
13860             </td> <!-- entry_type -->
13861
13862             <td class="entry_description">
13863               <p>The correction coefficients to correct for this camera device's
13864 radial and tangential lens distortion.<wbr/></p>
13865 <p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was
13866 inconsistently defined.<wbr/></p>
13867             </td>
13868
13869             <td class="entry_units">
13870               
13871             Unitless coefficients.<wbr/>
13872           
13873             </td>
13874
13875             <td class="entry_range">
13876             </td>
13877
13878             <td class="entry_hal_version">
13879               <p>3.<wbr/>3</p>
13880             </td>
13881
13882             <td class="entry_tags">
13883               <ul class="entry_tags">
13884                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13885               </ul>
13886             </td>
13887
13888           </tr>
13889           <tr class="entries_header">
13890             <th class="th_details" colspan="6">Details</th>
13891           </tr>
13892           <tr class="entry_cont">
13893             <td class="entry_details" colspan="6">
13894               <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13895 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13896 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13897 lens's geometric distortion with the mapping equations:</p>
13898 <pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13899        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13900  y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13901        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13902 </code></pre>
13903 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13904 input image that correspond to the pixel values in the
13905 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13906 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13907 </code></pre>
13908 <p>The pixel coordinates are defined in a coordinate system
13909 related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
13910 calibration fields; see that entry for details of the mapping stages.<wbr/>
13911 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code>
13912 have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and
13913 the range of the coordinates depends on the focal length
13914 terms of the intrinsic calibration.<wbr/></p>
13915 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13916 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
13917 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13918             </td>
13919           </tr>
13920
13921
13922           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13923            <!-- end of entry -->
13924         
13925         
13926
13927       <!-- end of kind -->
13928       </tbody>
13929       <tr><td colspan="7" class="kind">dynamic</td></tr>
13930
13931       <thead class="entries_header">
13932         <tr>
13933           <th class="th_name">Property Name</th>
13934           <th class="th_type">Type</th>
13935           <th class="th_description">Description</th>
13936           <th class="th_units">Units</th>
13937           <th class="th_range">Range</th>
13938           <th class="th_hal_version">Initial HIDL HAL version</th>
13939           <th class="th_tags">Tags</th>
13940         </tr>
13941       </thead>
13942
13943       <tbody>
13944
13945         
13946
13947         
13948
13949         
13950
13951         
13952
13953                 
13954           <tr class="entry" id="dynamic_android.lens.aperture">
13955             <td class="entry_name
13956              " rowspan="3">
13957               android.<wbr/>lens.<wbr/>aperture
13958             </td>
13959             <td class="entry_type">
13960                 <span class="entry_type_name">float</span>
13961
13962               <span class="entry_type_visibility"> [public]</span>
13963
13964
13965               <span class="entry_type_hwlevel">[full] </span>
13966
13967
13968
13969
13970             </td> <!-- entry_type -->
13971
13972             <td class="entry_description">
13973               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
13974 effective aperture diameter.<wbr/></p>
13975             </td>
13976
13977             <td class="entry_units">
13978               The f-number (f/<wbr/>N)
13979             </td>
13980
13981             <td class="entry_range">
13982               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
13983             </td>
13984
13985             <td class="entry_hal_version">
13986               <p>3.<wbr/>2</p>
13987             </td>
13988
13989             <td class="entry_tags">
13990               <ul class="entry_tags">
13991                   <li><a href="#tag_V1">V1</a></li>
13992               </ul>
13993             </td>
13994
13995           </tr>
13996           <tr class="entries_header">
13997             <th class="th_details" colspan="6">Details</th>
13998           </tr>
13999           <tr class="entry_cont">
14000             <td class="entry_details" colspan="6">
14001               <p>Setting this value is only supported on the camera devices that have a variable
14002 aperture lens.<wbr/></p>
14003 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
14004 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
14005 <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>
14006 to achieve manual exposure control.<wbr/></p>
14007 <p>The requested aperture value may take several frames to reach the
14008 requested value; the camera device will report the current (intermediate)
14009 aperture size in capture result metadata while the aperture is changing.<wbr/>
14010 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>
14011 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
14012 the ON modes,<wbr/> this will be overridden by the camera device
14013 auto-exposure algorithm,<wbr/> the overridden values are then provided
14014 back to the user in the corresponding result.<wbr/></p>
14015             </td>
14016           </tr>
14017
14018
14019           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14020            <!-- end of entry -->
14021         
14022                 
14023           <tr class="entry" id="dynamic_android.lens.filterDensity">
14024             <td class="entry_name
14025              " rowspan="3">
14026               android.<wbr/>lens.<wbr/>filter<wbr/>Density
14027             </td>
14028             <td class="entry_type">
14029                 <span class="entry_type_name">float</span>
14030
14031               <span class="entry_type_visibility"> [public]</span>
14032
14033
14034               <span class="entry_type_hwlevel">[full] </span>
14035
14036
14037
14038
14039             </td> <!-- entry_type -->
14040
14041             <td class="entry_description">
14042               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
14043             </td>
14044
14045             <td class="entry_units">
14046               Exposure Value (EV)
14047             </td>
14048
14049             <td class="entry_range">
14050               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
14051             </td>
14052
14053             <td class="entry_hal_version">
14054               <p>3.<wbr/>2</p>
14055             </td>
14056
14057             <td class="entry_tags">
14058               <ul class="entry_tags">
14059                   <li><a href="#tag_V1">V1</a></li>
14060               </ul>
14061             </td>
14062
14063           </tr>
14064           <tr class="entries_header">
14065             <th class="th_details" colspan="6">Details</th>
14066           </tr>
14067           <tr class="entry_cont">
14068             <td class="entry_details" colspan="6">
14069               <p>This control will not be supported on most camera devices.<wbr/></p>
14070 <p>Lens filters are typically used to lower the amount of light the
14071 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
14072 step is the standard logarithmic representation,<wbr/> which are
14073 non-negative,<wbr/> and inversely proportional to the amount of light
14074 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
14075 in no reduction of the incoming light,<wbr/> and setting this to 2 would
14076 mean that the filter is set to reduce incoming light by two stops
14077 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
14078 <p>It may take several frames before the lens filter density changes
14079 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
14080 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
14081             </td>
14082           </tr>
14083
14084
14085           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14086            <!-- end of entry -->
14087         
14088                 
14089           <tr class="entry" id="dynamic_android.lens.focalLength">
14090             <td class="entry_name
14091              " rowspan="3">
14092               android.<wbr/>lens.<wbr/>focal<wbr/>Length
14093             </td>
14094             <td class="entry_type">
14095                 <span class="entry_type_name">float</span>
14096
14097               <span class="entry_type_visibility"> [public]</span>
14098
14099
14100               <span class="entry_type_hwlevel">[legacy] </span>
14101
14102
14103
14104
14105             </td> <!-- entry_type -->
14106
14107             <td class="entry_description">
14108               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
14109             </td>
14110
14111             <td class="entry_units">
14112               Millimeters
14113             </td>
14114
14115             <td class="entry_range">
14116               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
14117             </td>
14118
14119             <td class="entry_hal_version">
14120               <p>3.<wbr/>2</p>
14121             </td>
14122
14123             <td class="entry_tags">
14124               <ul class="entry_tags">
14125                   <li><a href="#tag_BC">BC</a></li>
14126               </ul>
14127             </td>
14128
14129           </tr>
14130           <tr class="entries_header">
14131             <th class="th_details" colspan="6">Details</th>
14132           </tr>
14133           <tr class="entry_cont">
14134             <td class="entry_details" colspan="6">
14135               <p>This setting controls the physical focal length of the camera
14136 device's lens.<wbr/> Changing the focal length changes the field of
14137 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
14138 <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
14139 setting won't be applied instantaneously,<wbr/> and it may take several
14140 frames before the lens can change to the requested focal length.<wbr/>
14141 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
14142 be set to MOVING.<wbr/></p>
14143 <p>Optical zoom will not be supported on most devices.<wbr/></p>
14144             </td>
14145           </tr>
14146
14147
14148           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14149            <!-- end of entry -->
14150         
14151                 
14152           <tr class="entry" id="dynamic_android.lens.focusDistance">
14153             <td class="entry_name
14154              " rowspan="3">
14155               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
14156             </td>
14157             <td class="entry_type">
14158                 <span class="entry_type_name">float</span>
14159
14160               <span class="entry_type_visibility"> [public]</span>
14161
14162
14163               <span class="entry_type_hwlevel">[full] </span>
14164
14165
14166
14167
14168             </td> <!-- entry_type -->
14169
14170             <td class="entry_description">
14171               <p>Desired distance to plane of sharpest focus,<wbr/>
14172 measured from frontmost surface of the lens.<wbr/></p>
14173             </td>
14174
14175             <td class="entry_units">
14176               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
14177             </td>
14178
14179             <td class="entry_range">
14180               <p>&gt;= 0</p>
14181             </td>
14182
14183             <td class="entry_hal_version">
14184               <p>3.<wbr/>2</p>
14185             </td>
14186
14187             <td class="entry_tags">
14188               <ul class="entry_tags">
14189                   <li><a href="#tag_BC">BC</a></li>
14190               </ul>
14191             </td>
14192
14193           </tr>
14194           <tr class="entries_header">
14195             <th class="th_details" colspan="6">Details</th>
14196           </tr>
14197           <tr class="entry_cont">
14198             <td class="entry_details" colspan="6">
14199               <p>Should be zero for fixed-focus cameras</p>
14200             </td>
14201           </tr>
14202
14203
14204           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14205            <!-- end of entry -->
14206         
14207                 
14208           <tr class="entry" id="dynamic_android.lens.focusRange">
14209             <td class="entry_name
14210              " rowspan="3">
14211               android.<wbr/>lens.<wbr/>focus<wbr/>Range
14212             </td>
14213             <td class="entry_type">
14214                 <span class="entry_type_name">float</span>
14215                 <span class="entry_type_container">x</span>
14216
14217                 <span class="entry_type_array">
14218                   2
14219                 </span>
14220               <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
14221
14222
14223               <span class="entry_type_hwlevel">[limited] </span>
14224
14225
14226                 <div class="entry_type_notes">Range of scene distances that are in focus</div>
14227
14228
14229             </td> <!-- entry_type -->
14230
14231             <td class="entry_description">
14232               <p>The range of scene distances that are in
14233 sharp focus (depth of field).<wbr/></p>
14234             </td>
14235
14236             <td class="entry_units">
14237               A pair of focus distances in diopters: (near,<wbr/>
14238           far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
14239             </td>
14240
14241             <td class="entry_range">
14242               <p>&gt;=0</p>
14243             </td>
14244
14245             <td class="entry_hal_version">
14246               <p>3.<wbr/>2</p>
14247             </td>
14248
14249             <td class="entry_tags">
14250               <ul class="entry_tags">
14251                   <li><a href="#tag_BC">BC</a></li>
14252               </ul>
14253             </td>
14254
14255           </tr>
14256           <tr class="entries_header">
14257             <th class="th_details" colspan="6">Details</th>
14258           </tr>
14259           <tr class="entry_cont">
14260             <td class="entry_details" colspan="6">
14261               <p>If variable focus not supported,<wbr/> can still report
14262 fixed depth of field range</p>
14263             </td>
14264           </tr>
14265
14266
14267           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14268            <!-- end of entry -->
14269         
14270                 
14271           <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
14272             <td class="entry_name
14273              " rowspan="3">
14274               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
14275             </td>
14276             <td class="entry_type">
14277                 <span class="entry_type_name entry_type_name_enum">byte</span>
14278
14279               <span class="entry_type_visibility"> [public]</span>
14280
14281
14282               <span class="entry_type_hwlevel">[limited] </span>
14283
14284
14285
14286                 <ul class="entry_type_enum">
14287                   <li>
14288                     <span class="entry_type_enum_name">OFF (v3.2)</span>
14289                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
14290                   </li>
14291                   <li>
14292                     <span class="entry_type_enum_name">ON (v3.2)</span>
14293                     <span class="entry_type_enum_optional">[optional]</span>
14294                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
14295                   </li>
14296                 </ul>
14297
14298             </td> <!-- entry_type -->
14299
14300             <td class="entry_description">
14301               <p>Sets whether the camera device uses optical image stabilization (OIS)
14302 when capturing images.<wbr/></p>
14303             </td>
14304
14305             <td class="entry_units">
14306             </td>
14307
14308             <td class="entry_range">
14309               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
14310             </td>
14311
14312             <td class="entry_hal_version">
14313               <p>3.<wbr/>2</p>
14314             </td>
14315
14316             <td class="entry_tags">
14317               <ul class="entry_tags">
14318                   <li><a href="#tag_V1">V1</a></li>
14319               </ul>
14320             </td>
14321
14322           </tr>
14323           <tr class="entries_header">
14324             <th class="th_details" colspan="6">Details</th>
14325           </tr>
14326           <tr class="entry_cont">
14327             <td class="entry_details" colspan="6">
14328               <p>OIS is used to compensate for motion blur due to small
14329 movements of the camera during capture.<wbr/> Unlike digital image
14330 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
14331 makes use of mechanical elements to stabilize the camera
14332 sensor,<wbr/> and thus allows for longer exposure times before
14333 camera shake becomes apparent.<wbr/></p>
14334 <p>Switching between different optical stabilization modes may take several
14335 frames to initialize,<wbr/> the camera device will report the current mode in
14336 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
14337 optical stabilization modes in the first several capture results may still
14338 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
14339 <p>If a camera device supports both OIS and digital image stabilization
14340 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
14341 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
14342 <p>Not all devices will support OIS; see
14343 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
14344 available controls.<wbr/></p>
14345             </td>
14346           </tr>
14347
14348
14349           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14350            <!-- end of entry -->
14351         
14352                 
14353           <tr class="entry" id="dynamic_android.lens.state">
14354             <td class="entry_name
14355              " rowspan="3">
14356               android.<wbr/>lens.<wbr/>state
14357             </td>
14358             <td class="entry_type">
14359                 <span class="entry_type_name entry_type_name_enum">byte</span>
14360
14361               <span class="entry_type_visibility"> [public]</span>
14362
14363
14364               <span class="entry_type_hwlevel">[limited] </span>
14365
14366
14367
14368                 <ul class="entry_type_enum">
14369                   <li>
14370                     <span class="entry_type_enum_name">STATIONARY (v3.2)</span>
14371                     <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/>
14372 <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>
14373                   </li>
14374                   <li>
14375                     <span class="entry_type_enum_name">MOVING (v3.2)</span>
14376                     <span class="entry_type_enum_notes"><p>One or several of the lens parameters
14377 (<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/>
14378 <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
14379 currently changing.<wbr/></p></span>
14380                   </li>
14381                 </ul>
14382
14383             </td> <!-- entry_type -->
14384
14385             <td class="entry_description">
14386               <p>Current lens status.<wbr/></p>
14387             </td>
14388
14389             <td class="entry_units">
14390             </td>
14391
14392             <td class="entry_range">
14393             </td>
14394
14395             <td class="entry_hal_version">
14396               <p>3.<wbr/>2</p>
14397             </td>
14398
14399             <td class="entry_tags">
14400               <ul class="entry_tags">
14401                   <li><a href="#tag_V1">V1</a></li>
14402               </ul>
14403             </td>
14404
14405           </tr>
14406           <tr class="entries_header">
14407             <th class="th_details" colspan="6">Details</th>
14408           </tr>
14409           <tr class="entry_cont">
14410             <td class="entry_details" colspan="6">
14411               <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/>
14412 <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/>
14413 they may take several frames to reach the requested values.<wbr/> This state indicates
14414 the current status of the lens parameters.<wbr/></p>
14415 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
14416 either because the parameters are all fixed,<wbr/> or because the lens has had enough
14417 time to reach the most recently-requested values.<wbr/>
14418 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
14419 <ul>
14420 <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
14421 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
14422 <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/>
14423 which means the optical zoom is not supported.<wbr/></li>
14424 <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>
14425 <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>
14426 </ul>
14427 <p>Then this state will always be STATIONARY.<wbr/></p>
14428 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
14429 is changing.<wbr/></p>
14430             </td>
14431           </tr>
14432
14433
14434           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14435            <!-- end of entry -->
14436         
14437                 
14438           <tr class="entry" id="dynamic_android.lens.poseRotation">
14439             <td class="entry_name
14440              " rowspan="3">
14441               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
14442             </td>
14443             <td class="entry_type">
14444                 <span class="entry_type_name">float</span>
14445                 <span class="entry_type_container">x</span>
14446
14447                 <span class="entry_type_array">
14448                   4
14449                 </span>
14450               <span class="entry_type_visibility"> [public]</span>
14451
14452
14453
14454
14455
14456
14457             </td> <!-- entry_type -->
14458
14459             <td class="entry_description">
14460               <p>The orientation of the camera relative to the sensor
14461 coordinate system.<wbr/></p>
14462             </td>
14463
14464             <td class="entry_units">
14465               
14466             Quaternion coefficients
14467           
14468             </td>
14469
14470             <td class="entry_range">
14471             </td>
14472
14473             <td class="entry_hal_version">
14474               <p>3.<wbr/>2</p>
14475             </td>
14476
14477             <td class="entry_tags">
14478               <ul class="entry_tags">
14479                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14480               </ul>
14481             </td>
14482
14483           </tr>
14484           <tr class="entries_header">
14485             <th class="th_details" colspan="6">Details</th>
14486           </tr>
14487           <tr class="entry_cont">
14488             <td class="entry_details" colspan="6">
14489               <p>The four coefficients that describe the quaternion
14490 rotation from the Android sensor coordinate system to a
14491 camera-aligned coordinate system where the X-axis is
14492 aligned with the long side of the image sensor,<wbr/> the Y-axis
14493 is aligned with the short side of the image sensor,<wbr/> and
14494 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
14495 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
14496 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
14497 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
14498 <pre><code> theta = 2 * acos(w)
14499 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
14500 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
14501 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
14502 </code></pre>
14503 <p>To create a 3x3 rotation matrix that applies the rotation
14504 defined by this quaternion,<wbr/> the following matrix can be
14505 used:</p>
14506 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
14507            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
14508            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
14509 </code></pre>
14510 <p>This matrix can then be used to apply the rotation to a
14511  column vector point with</p>
14512 <p><code>p' = Rp</code></p>
14513 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
14514  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
14515             </td>
14516           </tr>
14517
14518
14519           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14520            <!-- end of entry -->
14521         
14522                 
14523           <tr class="entry" id="dynamic_android.lens.poseTranslation">
14524             <td class="entry_name
14525              " rowspan="3">
14526               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
14527             </td>
14528             <td class="entry_type">
14529                 <span class="entry_type_name">float</span>
14530                 <span class="entry_type_container">x</span>
14531
14532                 <span class="entry_type_array">
14533                   3
14534                 </span>
14535               <span class="entry_type_visibility"> [public]</span>
14536
14537
14538
14539
14540
14541
14542             </td> <!-- entry_type -->
14543
14544             <td class="entry_description">
14545               <p>Position of the camera optical center.<wbr/></p>
14546             </td>
14547
14548             <td class="entry_units">
14549               Meters
14550             </td>
14551
14552             <td class="entry_range">
14553             </td>
14554
14555             <td class="entry_hal_version">
14556               <p>3.<wbr/>2</p>
14557             </td>
14558
14559             <td class="entry_tags">
14560               <ul class="entry_tags">
14561                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14562               </ul>
14563             </td>
14564
14565           </tr>
14566           <tr class="entries_header">
14567             <th class="th_details" colspan="6">Details</th>
14568           </tr>
14569           <tr class="entry_cont">
14570             <td class="entry_details" colspan="6">
14571               <p>The position of the camera device's lens optical center,<wbr/>
14572 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
14573 <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
14574 is relative to the optical center of the largest camera device facing in the same
14575 direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
14576 coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
14577 coordinate system,<wbr/> but not the origin.<wbr/></p>
14578 <p>If this device is the largest or only camera device with a given facing,<wbr/> then this
14579 position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
14580 from the main sensor along the +X axis (to the right from the user's perspective) will
14581 report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
14582 <p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
14583 the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/>  Then the source
14584 camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
14585 <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
14586 relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
14587 camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
14588 camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
14589 coordinates.<wbr/></p>
14590 <p>To compare this against a real image from the destination camera,<wbr/> the destination camera
14591 image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
14592 <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
14593 the center of the primary gyroscope on the device.<wbr/></p>
14594             </td>
14595           </tr>
14596
14597
14598           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14599            <!-- end of entry -->
14600         
14601                 
14602           <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
14603             <td class="entry_name
14604              " rowspan="3">
14605               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
14606             </td>
14607             <td class="entry_type">
14608                 <span class="entry_type_name">float</span>
14609                 <span class="entry_type_container">x</span>
14610
14611                 <span class="entry_type_array">
14612                   5
14613                 </span>
14614               <span class="entry_type_visibility"> [public]</span>
14615
14616
14617
14618
14619
14620
14621             </td> <!-- entry_type -->
14622
14623             <td class="entry_description">
14624               <p>The parameters for this camera device's intrinsic
14625 calibration.<wbr/></p>
14626             </td>
14627
14628             <td class="entry_units">
14629               
14630             Pixels in the
14631             android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
14632             coordinate system.<wbr/>
14633           
14634             </td>
14635
14636             <td class="entry_range">
14637             </td>
14638
14639             <td class="entry_hal_version">
14640               <p>3.<wbr/>2</p>
14641             </td>
14642
14643             <td class="entry_tags">
14644               <ul class="entry_tags">
14645                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14646               </ul>
14647             </td>
14648
14649           </tr>
14650           <tr class="entries_header">
14651             <th class="th_details" colspan="6">Details</th>
14652           </tr>
14653           <tr class="entry_cont">
14654             <td class="entry_details" colspan="6">
14655               <p>The five calibration parameters that describe the
14656 transform from camera-centric 3D coordinates to sensor
14657 pixel coordinates:</p>
14658 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
14659 </code></pre>
14660 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
14661 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
14662 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
14663 being aligned with the lens plane.<wbr/></p>
14664 <p>These are typically used within a transformation matrix K:</p>
14665 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
14666        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
14667        0    0,<wbr/>   1 ]
14668 </code></pre>
14669 <p>which can then be combined with the camera pose rotation
14670 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
14671 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
14672 complete transform from world coordinates to pixel
14673 coordinates:</p>
14674 <pre><code>P = [ K 0   * [ R t
14675      0 1 ]     0 1 ]
14676 </code></pre>
14677 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
14678 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
14679 coordinate system,<wbr/> and with the mapping including the
14680 homogeneous division by z:</p>
14681 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
14682 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
14683 </code></pre>
14684 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
14685 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
14686 (depth) in pixel coordinates.<wbr/></p>
14687 <p>Note that the coordinate system for this transform is the
14688 <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/>
14689 where <code>(0,<wbr/>0)</code> is the top-left of the
14690 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
14691 intrinsic calibration transforms have been applied to a
14692 world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>
14693 transform needs to be applied,<wbr/> and the result adjusted to
14694 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
14695 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
14696 activeArraySize rectangle),<wbr/> to determine the final pixel
14697 coordinate of the world point for processed (non-RAW)
14698 output buffers.<wbr/></p>
14699             </td>
14700           </tr>
14701
14702
14703           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14704            <!-- end of entry -->
14705         
14706                 
14707           <tr class="entry" id="dynamic_android.lens.radialDistortion">
14708             <td class="entry_name
14709                 entry_name_deprecated
14710              " rowspan="3">
14711               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
14712             </td>
14713             <td class="entry_type">
14714                 <span class="entry_type_name">float</span>
14715                 <span class="entry_type_container">x</span>
14716
14717                 <span class="entry_type_array">
14718                   6
14719                 </span>
14720               <span class="entry_type_visibility"> [public]</span>
14721
14722
14723
14724               <span class="entry_type_deprecated">[deprecated] </span>
14725
14726
14727
14728             </td> <!-- entry_type -->
14729
14730             <td class="entry_description">
14731               <p>The correction coefficients to correct for this camera device's
14732 radial and tangential lens distortion.<wbr/></p>
14733             </td>
14734
14735             <td class="entry_units">
14736               
14737             Unitless coefficients.<wbr/>
14738           
14739             </td>
14740
14741             <td class="entry_range">
14742               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14743             </td>
14744
14745             <td class="entry_hal_version">
14746               <p>3.<wbr/>2</p>
14747             </td>
14748
14749             <td class="entry_tags">
14750               <ul class="entry_tags">
14751                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14752               </ul>
14753             </td>
14754
14755           </tr>
14756           <tr class="entries_header">
14757             <th class="th_details" colspan="6">Details</th>
14758           </tr>
14759           <tr class="entry_cont">
14760             <td class="entry_details" colspan="6">
14761               <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14762 kappa_<wbr/>3]</code> and two tangential distortion coefficients
14763 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14764 lens's geometric distortion with the mapping equations:</p>
14765 <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 ) +
14766        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14767  y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14768        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14769 </code></pre>
14770 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14771 input image that correspond to the pixel values in the
14772 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14773 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14774 </code></pre>
14775 <p>The pixel coordinates are defined in a normalized
14776 coordinate system related to the
14777 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
14778 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
14779 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
14780 of both x and y coordinates are normalized to be 1 at the
14781 edge further from the optical center,<wbr/> so the range
14782 for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
14783 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14784 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
14785 is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
14786 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14787             </td>
14788           </tr>
14789
14790
14791           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14792            <!-- end of entry -->
14793         
14794                 
14795           <tr class="entry" id="dynamic_android.lens.distortion">
14796             <td class="entry_name
14797              " rowspan="3">
14798               android.<wbr/>lens.<wbr/>distortion
14799             </td>
14800             <td class="entry_type">
14801                 <span class="entry_type_name">float</span>
14802                 <span class="entry_type_container">x</span>
14803
14804                 <span class="entry_type_array">
14805                   5
14806                 </span>
14807               <span class="entry_type_visibility"> [public]</span>
14808
14809
14810
14811
14812
14813
14814             </td> <!-- entry_type -->
14815
14816             <td class="entry_description">
14817               <p>The correction coefficients to correct for this camera device's
14818 radial and tangential lens distortion.<wbr/></p>
14819 <p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was
14820 inconsistently defined.<wbr/></p>
14821             </td>
14822
14823             <td class="entry_units">
14824               
14825             Unitless coefficients.<wbr/>
14826           
14827             </td>
14828
14829             <td class="entry_range">
14830             </td>
14831
14832             <td class="entry_hal_version">
14833               <p>3.<wbr/>3</p>
14834             </td>
14835
14836             <td class="entry_tags">
14837               <ul class="entry_tags">
14838                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14839               </ul>
14840             </td>
14841
14842           </tr>
14843           <tr class="entries_header">
14844             <th class="th_details" colspan="6">Details</th>
14845           </tr>
14846           <tr class="entry_cont">
14847             <td class="entry_details" colspan="6">
14848               <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14849 kappa_<wbr/>3]</code> and two tangential distortion coefficients
14850 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14851 lens's geometric distortion with the mapping equations:</p>
14852 <pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14853        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14854  y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14855        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14856 </code></pre>
14857 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14858 input image that correspond to the pixel values in the
14859 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14860 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14861 </code></pre>
14862 <p>The pixel coordinates are defined in a coordinate system
14863 related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
14864 calibration fields; see that entry for details of the mapping stages.<wbr/>
14865 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code>
14866 have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and
14867 the range of the coordinates depends on the focal length
14868 terms of the intrinsic calibration.<wbr/></p>
14869 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14870 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
14871 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14872             </td>
14873           </tr>
14874
14875
14876           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14877            <!-- end of entry -->
14878         
14879         
14880
14881       <!-- end of kind -->
14882       </tbody>
14883
14884   <!-- end of section -->
14885   <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
14886
14887
14888       <tr><td colspan="7" class="kind">controls</td></tr>
14889
14890       <thead class="entries_header">
14891         <tr>
14892           <th class="th_name">Property Name</th>
14893           <th class="th_type">Type</th>
14894           <th class="th_description">Description</th>
14895           <th class="th_units">Units</th>
14896           <th class="th_range">Range</th>
14897           <th class="th_hal_version">Initial HIDL HAL version</th>
14898           <th class="th_tags">Tags</th>
14899         </tr>
14900       </thead>
14901
14902       <tbody>
14903
14904         
14905
14906         
14907
14908         
14909
14910         
14911
14912                 
14913           <tr class="entry" id="controls_android.noiseReduction.mode">
14914             <td class="entry_name
14915              " rowspan="5">
14916               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14917             </td>
14918             <td class="entry_type">
14919                 <span class="entry_type_name entry_type_name_enum">byte</span>
14920
14921               <span class="entry_type_visibility"> [public]</span>
14922
14923
14924               <span class="entry_type_hwlevel">[full] </span>
14925
14926
14927
14928                 <ul class="entry_type_enum">
14929                   <li>
14930                     <span class="entry_type_enum_name">OFF (v3.2)</span>
14931                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14932                   </li>
14933                   <li>
14934                     <span class="entry_type_enum_name">FAST (v3.2)</span>
14935                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14936 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14937 relative to sensor.<wbr/></p></span>
14938                   </li>
14939                   <li>
14940                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
14941                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14942 rate relative to sensor output.<wbr/></p></span>
14943                   </li>
14944                   <li>
14945                     <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
14946                     <span class="entry_type_enum_optional">[optional]</span>
14947                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14948 sensor output.<wbr/> </p></span>
14949                   </li>
14950                   <li>
14951                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
14952                     <span class="entry_type_enum_optional">[optional]</span>
14953                     <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14954 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>)
14955 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
14956 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
14957 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
14958 and the quality is equal to or better than FAST (since it is only applied to
14959 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
14960 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14961 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14962 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14963 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
14964 high-resolution buffers must not have noise reduction applied to maximize efficiency of
14965 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14966 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14967 applied for reasonable preview quality.<wbr/></p>
14968 <p>This mode is guaranteed to be supported by devices that support either the
14969 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14970 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14971 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14972                   </li>
14973                 </ul>
14974
14975             </td> <!-- entry_type -->
14976
14977             <td class="entry_description">
14978               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14979             </td>
14980
14981             <td class="entry_units">
14982             </td>
14983
14984             <td class="entry_range">
14985               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14986             </td>
14987
14988             <td class="entry_hal_version">
14989               <p>3.<wbr/>2</p>
14990             </td>
14991
14992             <td class="entry_tags">
14993               <ul class="entry_tags">
14994                   <li><a href="#tag_V1">V1</a></li>
14995                   <li><a href="#tag_REPROC">REPROC</a></li>
14996               </ul>
14997             </td>
14998
14999           </tr>
15000           <tr class="entries_header">
15001             <th class="th_details" colspan="6">Details</th>
15002           </tr>
15003           <tr class="entry_cont">
15004             <td class="entry_details" colspan="6">
15005               <p>The noise reduction algorithm attempts to improve image quality by removing
15006 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
15007 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
15008 YUV domain.<wbr/></p>
15009 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
15010 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
15011 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
15012 <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>
15013 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
15014 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
15015 will use the highest-quality noise filtering algorithms,<wbr/>
15016 even if it slows down capture rate.<wbr/> FAST means the camera device will not
15017 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
15018 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
15019 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
15020 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
15021 buffer of high-resolution images during preview and reprocess image(s) from that buffer
15022 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
15023 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
15024 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
15025 those will be reprocessed later if necessary.<wbr/></p>
15026 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
15027 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
15028 may adjust the noise reduction parameters for best image quality based on the
15029 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
15030             </td>
15031           </tr>
15032
15033           <tr class="entries_header">
15034             <th class="th_details" colspan="6">HAL Implementation Details</th>
15035           </tr>
15036           <tr class="entry_cont">
15037             <td class="entry_details" colspan="6">
15038               <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
15039 adjust the internal noise reduction parameters appropriately to get the best quality
15040 images.<wbr/></p>
15041             </td>
15042           </tr>
15043
15044           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15045            <!-- end of entry -->
15046         
15047                 
15048           <tr class="entry" id="controls_android.noiseReduction.strength">
15049             <td class="entry_name
15050              " rowspan="1">
15051               android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
15052             </td>
15053             <td class="entry_type">
15054                 <span class="entry_type_name">byte</span>
15055
15056               <span class="entry_type_visibility"> [system]</span>
15057
15058
15059
15060
15061
15062
15063             </td> <!-- entry_type -->
15064
15065             <td class="entry_description">
15066               <p>Control the amount of noise reduction
15067 applied to the images</p>
15068             </td>
15069
15070             <td class="entry_units">
15071               1-10; 10 is max noise reduction
15072             </td>
15073
15074             <td class="entry_range">
15075               <p>1 - 10</p>
15076             </td>
15077
15078             <td class="entry_hal_version">
15079               <p>3.<wbr/>2</p>
15080             </td>
15081
15082             <td class="entry_tags">
15083               <ul class="entry_tags">
15084                   <li><a href="#tag_FUTURE">FUTURE</a></li>
15085               </ul>
15086             </td>
15087
15088           </tr>
15089
15090
15091           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15092            <!-- end of entry -->
15093         
15094         
15095
15096       <!-- end of kind -->
15097       </tbody>
15098       <tr><td colspan="7" class="kind">static</td></tr>
15099
15100       <thead class="entries_header">
15101         <tr>
15102           <th class="th_name">Property Name</th>
15103           <th class="th_type">Type</th>
15104           <th class="th_description">Description</th>
15105           <th class="th_units">Units</th>
15106           <th class="th_range">Range</th>
15107           <th class="th_hal_version">Initial HIDL HAL version</th>
15108           <th class="th_tags">Tags</th>
15109         </tr>
15110       </thead>
15111
15112       <tbody>
15113
15114         
15115
15116         
15117
15118         
15119
15120         
15121
15122                 
15123           <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
15124             <td class="entry_name
15125              " rowspan="5">
15126               android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
15127             </td>
15128             <td class="entry_type">
15129                 <span class="entry_type_name">byte</span>
15130                 <span class="entry_type_container">x</span>
15131
15132                 <span class="entry_type_array">
15133                   n
15134                 </span>
15135               <span class="entry_type_visibility"> [public as enumList]</span>
15136
15137
15138               <span class="entry_type_hwlevel">[limited] </span>
15139
15140
15141                 <div class="entry_type_notes">list of enums</div>
15142
15143
15144             </td> <!-- entry_type -->
15145
15146             <td class="entry_description">
15147               <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
15148 by this camera device.<wbr/></p>
15149             </td>
15150
15151             <td class="entry_units">
15152             </td>
15153
15154             <td class="entry_range">
15155               <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
15156             </td>
15157
15158             <td class="entry_hal_version">
15159               <p>3.<wbr/>2</p>
15160             </td>
15161
15162             <td class="entry_tags">
15163               <ul class="entry_tags">
15164                   <li><a href="#tag_V1">V1</a></li>
15165                   <li><a href="#tag_REPROC">REPROC</a></li>
15166               </ul>
15167             </td>
15168
15169           </tr>
15170           <tr class="entries_header">
15171             <th class="th_details" colspan="6">Details</th>
15172           </tr>
15173           <tr class="entry_cont">
15174             <td class="entry_details" colspan="6">
15175               <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
15176 <p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
15177 ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
15178 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
15179             </td>
15180           </tr>
15181
15182           <tr class="entries_header">
15183             <th class="th_details" colspan="6">HAL Implementation Details</th>
15184           </tr>
15185           <tr class="entry_cont">
15186             <td class="entry_details" colspan="6">
15187               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
15188 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
15189 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
15190 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
15191             </td>
15192           </tr>
15193
15194           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15195            <!-- end of entry -->
15196         
15197         
15198
15199       <!-- end of kind -->
15200       </tbody>
15201       <tr><td colspan="7" class="kind">dynamic</td></tr>
15202
15203       <thead class="entries_header">
15204         <tr>
15205           <th class="th_name">Property Name</th>
15206           <th class="th_type">Type</th>
15207           <th class="th_description">Description</th>
15208           <th class="th_units">Units</th>
15209           <th class="th_range">Range</th>
15210           <th class="th_hal_version">Initial HIDL HAL version</th>
15211           <th class="th_tags">Tags</th>
15212         </tr>
15213       </thead>
15214
15215       <tbody>
15216
15217         
15218
15219         
15220
15221         
15222
15223         
15224
15225                 
15226           <tr class="entry" id="dynamic_android.noiseReduction.mode">
15227             <td class="entry_name
15228              " rowspan="5">
15229               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
15230             </td>
15231             <td class="entry_type">
15232                 <span class="entry_type_name entry_type_name_enum">byte</span>
15233
15234               <span class="entry_type_visibility"> [public]</span>
15235
15236
15237               <span class="entry_type_hwlevel">[full] </span>
15238
15239
15240
15241                 <ul class="entry_type_enum">
15242                   <li>
15243                     <span class="entry_type_enum_name">OFF (v3.2)</span>
15244                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
15245                   </li>
15246                   <li>
15247                     <span class="entry_type_enum_name">FAST (v3.2)</span>
15248                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
15249 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
15250 relative to sensor.<wbr/></p></span>
15251                   </li>
15252                   <li>
15253                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
15254                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
15255 rate relative to sensor output.<wbr/></p></span>
15256                   </li>
15257                   <li>
15258                     <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
15259                     <span class="entry_type_enum_optional">[optional]</span>
15260                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
15261 sensor output.<wbr/> </p></span>
15262                   </li>
15263                   <li>
15264                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
15265                     <span class="entry_type_enum_optional">[optional]</span>
15266                     <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
15267 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>)
15268 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
15269 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
15270 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
15271 and the quality is equal to or better than FAST (since it is only applied to
15272 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
15273 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
15274 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
15275 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
15276 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
15277 high-resolution buffers must not have noise reduction applied to maximize efficiency of
15278 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
15279 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
15280 applied for reasonable preview quality.<wbr/></p>
15281 <p>This mode is guaranteed to be supported by devices that support either the
15282 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
15283 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
15284 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
15285                   </li>
15286                 </ul>
15287
15288             </td> <!-- entry_type -->
15289
15290             <td class="entry_description">
15291               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
15292             </td>
15293
15294             <td class="entry_units">
15295             </td>
15296
15297             <td class="entry_range">
15298               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
15299             </td>
15300
15301             <td class="entry_hal_version">
15302               <p>3.<wbr/>2</p>
15303             </td>
15304
15305             <td class="entry_tags">
15306               <ul class="entry_tags">
15307                   <li><a href="#tag_V1">V1</a></li>
15308                   <li><a href="#tag_REPROC">REPROC</a></li>
15309               </ul>
15310             </td>
15311
15312           </tr>
15313           <tr class="entries_header">
15314             <th class="th_details" colspan="6">Details</th>
15315           </tr>
15316           <tr class="entry_cont">
15317             <td class="entry_details" colspan="6">
15318               <p>The noise reduction algorithm attempts to improve image quality by removing
15319 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
15320 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
15321 YUV domain.<wbr/></p>
15322 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
15323 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
15324 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
15325 <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>
15326 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
15327 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
15328 will use the highest-quality noise filtering algorithms,<wbr/>
15329 even if it slows down capture rate.<wbr/> FAST means the camera device will not
15330 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
15331 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
15332 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
15333 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
15334 buffer of high-resolution images during preview and reprocess image(s) from that buffer
15335 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
15336 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
15337 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
15338 those will be reprocessed later if necessary.<wbr/></p>
15339 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
15340 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
15341 may adjust the noise reduction parameters for best image quality based on the
15342 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
15343             </td>
15344           </tr>
15345
15346           <tr class="entries_header">
15347             <th class="th_details" colspan="6">HAL Implementation Details</th>
15348           </tr>
15349           <tr class="entry_cont">
15350             <td class="entry_details" colspan="6">
15351               <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
15352 adjust the internal noise reduction parameters appropriately to get the best quality
15353 images.<wbr/></p>
15354             </td>
15355           </tr>
15356
15357           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15358            <!-- end of entry -->
15359         
15360         
15361
15362       <!-- end of kind -->
15363       </tbody>
15364
15365   <!-- end of section -->
15366   <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
15367
15368
15369       <tr><td colspan="7" class="kind">static</td></tr>
15370
15371       <thead class="entries_header">
15372         <tr>
15373           <th class="th_name">Property Name</th>
15374           <th class="th_type">Type</th>
15375           <th class="th_description">Description</th>
15376           <th class="th_units">Units</th>
15377           <th class="th_range">Range</th>
15378           <th class="th_hal_version">Initial HIDL HAL version</th>
15379           <th class="th_tags">Tags</th>
15380         </tr>
15381       </thead>
15382
15383       <tbody>
15384
15385         
15386
15387         
15388
15389         
15390
15391         
15392
15393                 
15394           <tr class="entry" id="static_android.quirks.meteringCropRegion">
15395             <td class="entry_name
15396                 entry_name_deprecated
15397              " rowspan="3">
15398               android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
15399             </td>
15400             <td class="entry_type">
15401                 <span class="entry_type_name">byte</span>
15402
15403               <span class="entry_type_visibility"> [system]</span>
15404
15405
15406
15407               <span class="entry_type_deprecated">[deprecated] </span>
15408
15409
15410
15411             </td> <!-- entry_type -->
15412
15413             <td class="entry_description">
15414               <p>If set to 1,<wbr/> the camera service does not
15415 scale 'normalized' coordinates with respect to the crop
15416 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
15417 and output (face rectangles).<wbr/></p>
15418             </td>
15419
15420             <td class="entry_units">
15421             </td>
15422
15423             <td class="entry_range">
15424               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15425             </td>
15426
15427             <td class="entry_hal_version">
15428               <p>3.<wbr/>2</p>
15429             </td>
15430
15431             <td class="entry_tags">
15432             </td>
15433
15434           </tr>
15435           <tr class="entries_header">
15436             <th class="th_details" colspan="6">Details</th>
15437           </tr>
15438           <tr class="entry_cont">
15439             <td class="entry_details" colspan="6">
15440               <p>Normalized coordinates refer to those in the
15441 (-1000,<wbr/>1000) range mentioned in the
15442 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15443 <p>HAL implementations should instead always use and emit
15444 sensor array-relative coordinates for all region data.<wbr/> Does
15445 not need to be listed in static metadata.<wbr/> Support will be
15446 removed in future versions of camera service.<wbr/></p>
15447             </td>
15448           </tr>
15449
15450
15451           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15452            <!-- end of entry -->
15453         
15454                 
15455           <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
15456             <td class="entry_name
15457                 entry_name_deprecated
15458              " rowspan="3">
15459               android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
15460             </td>
15461             <td class="entry_type">
15462                 <span class="entry_type_name">byte</span>
15463
15464               <span class="entry_type_visibility"> [system]</span>
15465
15466
15467
15468               <span class="entry_type_deprecated">[deprecated] </span>
15469
15470
15471
15472             </td> <!-- entry_type -->
15473
15474             <td class="entry_description">
15475               <p>If set to 1,<wbr/> then the camera service always
15476 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
15477 trigger.<wbr/></p>
15478             </td>
15479
15480             <td class="entry_units">
15481             </td>
15482
15483             <td class="entry_range">
15484               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15485             </td>
15486
15487             <td class="entry_hal_version">
15488               <p>3.<wbr/>2</p>
15489             </td>
15490
15491             <td class="entry_tags">
15492             </td>
15493
15494           </tr>
15495           <tr class="entries_header">
15496             <th class="th_details" colspan="6">Details</th>
15497           </tr>
15498           <tr class="entry_cont">
15499             <td class="entry_details" colspan="6">
15500               <p>HAL implementations should implement AF trigger
15501 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
15502 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
15503 not need to be listed in static metadata.<wbr/> Support will be
15504 removed in future versions of camera service</p>
15505             </td>
15506           </tr>
15507
15508
15509           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15510            <!-- end of entry -->
15511         
15512                 
15513           <tr class="entry" id="static_android.quirks.useZslFormat">
15514             <td class="entry_name
15515                 entry_name_deprecated
15516              " rowspan="3">
15517               android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
15518             </td>
15519             <td class="entry_type">
15520                 <span class="entry_type_name">byte</span>
15521
15522               <span class="entry_type_visibility"> [system]</span>
15523
15524
15525
15526               <span class="entry_type_deprecated">[deprecated] </span>
15527
15528
15529
15530             </td> <!-- entry_type -->
15531
15532             <td class="entry_description">
15533               <p>If set to 1,<wbr/> the camera service uses
15534 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
15535 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
15536 shutter lag stream</p>
15537             </td>
15538
15539             <td class="entry_units">
15540             </td>
15541
15542             <td class="entry_range">
15543               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15544             </td>
15545
15546             <td class="entry_hal_version">
15547               <p>3.<wbr/>2</p>
15548             </td>
15549
15550             <td class="entry_tags">
15551             </td>
15552
15553           </tr>
15554           <tr class="entries_header">
15555             <th class="th_details" colspan="6">Details</th>
15556           </tr>
15557           <tr class="entry_cont">
15558             <td class="entry_details" colspan="6">
15559               <p>HAL implementations should use gralloc usage flags
15560 to determine that a stream will be used for
15561 zero-shutter-lag,<wbr/> instead of relying on an explicit
15562 format setting.<wbr/> Does not need to be listed in static
15563 metadata.<wbr/> Support will be removed in future versions of
15564 camera service.<wbr/></p>
15565             </td>
15566           </tr>
15567
15568
15569           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15570            <!-- end of entry -->
15571         
15572                 
15573           <tr class="entry" id="static_android.quirks.usePartialResult">
15574             <td class="entry_name
15575                 entry_name_deprecated
15576              " rowspan="5">
15577               android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
15578             </td>
15579             <td class="entry_type">
15580                 <span class="entry_type_name">byte</span>
15581
15582               <span class="entry_type_visibility"> [hidden]</span>
15583
15584
15585
15586               <span class="entry_type_deprecated">[deprecated] </span>
15587
15588
15589
15590             </td> <!-- entry_type -->
15591
15592             <td class="entry_description">
15593               <p>If set to 1,<wbr/> the HAL will always split result
15594 metadata for a single capture into multiple buffers,<wbr/>
15595 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
15596             </td>
15597
15598             <td class="entry_units">
15599             </td>
15600
15601             <td class="entry_range">
15602               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15603             </td>
15604
15605             <td class="entry_hal_version">
15606               <p>3.<wbr/>2</p>
15607             </td>
15608
15609             <td class="entry_tags">
15610             </td>
15611
15612           </tr>
15613           <tr class="entries_header">
15614             <th class="th_details" colspan="6">Details</th>
15615           </tr>
15616           <tr class="entry_cont">
15617             <td class="entry_details" colspan="6">
15618               <p>Does not need to be listed in static
15619 metadata.<wbr/> Support for partial results will be reworked in
15620 future versions of camera service.<wbr/> This quirk will stop
15621 working at that point; DO NOT USE without careful
15622 consideration of future support.<wbr/></p>
15623             </td>
15624           </tr>
15625
15626           <tr class="entries_header">
15627             <th class="th_details" colspan="6">HAL Implementation Details</th>
15628           </tr>
15629           <tr class="entry_cont">
15630             <td class="entry_details" colspan="6">
15631               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15632 for information on how to implement partial results.<wbr/></p>
15633             </td>
15634           </tr>
15635
15636           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15637            <!-- end of entry -->
15638         
15639         
15640
15641       <!-- end of kind -->
15642       </tbody>
15643       <tr><td colspan="7" class="kind">dynamic</td></tr>
15644
15645       <thead class="entries_header">
15646         <tr>
15647           <th class="th_name">Property Name</th>
15648           <th class="th_type">Type</th>
15649           <th class="th_description">Description</th>
15650           <th class="th_units">Units</th>
15651           <th class="th_range">Range</th>
15652           <th class="th_hal_version">Initial HIDL HAL version</th>
15653           <th class="th_tags">Tags</th>
15654         </tr>
15655       </thead>
15656
15657       <tbody>
15658
15659         
15660
15661         
15662
15663         
15664
15665         
15666
15667                 
15668           <tr class="entry" id="dynamic_android.quirks.partialResult">
15669             <td class="entry_name
15670                 entry_name_deprecated
15671              " rowspan="5">
15672               android.<wbr/>quirks.<wbr/>partial<wbr/>Result
15673             </td>
15674             <td class="entry_type">
15675                 <span class="entry_type_name entry_type_name_enum">byte</span>
15676
15677               <span class="entry_type_visibility"> [hidden as boolean]</span>
15678
15679
15680
15681               <span class="entry_type_deprecated">[deprecated] </span>
15682
15683
15684                 <ul class="entry_type_enum">
15685                   <li>
15686                     <span class="entry_type_enum_name">FINAL (v3.2)</span>
15687                     <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
15688 for this capture.<wbr/></p></span>
15689                   </li>
15690                   <li>
15691                     <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
15692                     <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
15693 capture.<wbr/> More result buffers for this capture will be sent
15694 by the camera device,<wbr/> the last of which will be marked
15695 FINAL.<wbr/></p></span>
15696                   </li>
15697                 </ul>
15698
15699             </td> <!-- entry_type -->
15700
15701             <td class="entry_description">
15702               <p>Whether a result given to the framework is the
15703 final one for the capture,<wbr/> or only a partial that contains a
15704 subset of the full set of dynamic metadata
15705 values.<wbr/></p>
15706             </td>
15707
15708             <td class="entry_units">
15709             </td>
15710
15711             <td class="entry_range">
15712               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15713               <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
15714             </td>
15715
15716             <td class="entry_hal_version">
15717               <p>3.<wbr/>2</p>
15718             </td>
15719
15720             <td class="entry_tags">
15721             </td>
15722
15723           </tr>
15724           <tr class="entries_header">
15725             <th class="th_details" colspan="6">Details</th>
15726           </tr>
15727           <tr class="entry_cont">
15728             <td class="entry_details" colspan="6">
15729               <p>The entries in the result metadata buffers for a
15730 single capture may not overlap,<wbr/> except for this entry.<wbr/> The
15731 FINAL buffers must retain FIFO ordering relative to the
15732 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
15733 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
15734 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
15735 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
15736 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
15737 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
15738             </td>
15739           </tr>
15740
15741           <tr class="entries_header">
15742             <th class="th_details" colspan="6">HAL Implementation Details</th>
15743           </tr>
15744           <tr class="entry_cont">
15745             <td class="entry_details" colspan="6">
15746               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15747 for information on how to implement partial results.<wbr/></p>
15748             </td>
15749           </tr>
15750
15751           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15752            <!-- end of entry -->
15753         
15754         
15755
15756       <!-- end of kind -->
15757       </tbody>
15758
15759   <!-- end of section -->
15760   <tr><td colspan="7" id="section_request" class="section">request</td></tr>
15761
15762
15763       <tr><td colspan="7" class="kind">controls</td></tr>
15764
15765       <thead class="entries_header">
15766         <tr>
15767           <th class="th_name">Property Name</th>
15768           <th class="th_type">Type</th>
15769           <th class="th_description">Description</th>
15770           <th class="th_units">Units</th>
15771           <th class="th_range">Range</th>
15772           <th class="th_hal_version">Initial HIDL HAL version</th>
15773           <th class="th_tags">Tags</th>
15774         </tr>
15775       </thead>
15776
15777       <tbody>
15778
15779         
15780
15781         
15782
15783         
15784
15785         
15786
15787                 
15788           <tr class="entry" id="controls_android.request.frameCount">
15789             <td class="entry_name
15790                 entry_name_deprecated
15791              " rowspan="1">
15792               android.<wbr/>request.<wbr/>frame<wbr/>Count
15793             </td>
15794             <td class="entry_type">
15795                 <span class="entry_type_name">int32</span>
15796
15797               <span class="entry_type_visibility"> [system]</span>
15798
15799
15800
15801               <span class="entry_type_deprecated">[deprecated] </span>
15802
15803
15804
15805             </td> <!-- entry_type -->
15806
15807             <td class="entry_description">
15808               <p>A frame counter set by the framework.<wbr/> Must
15809 be maintained unchanged in output frame.<wbr/> This value monotonically
15810 increases with every new result (that is,<wbr/> each new result has a unique
15811 frameCount value).<wbr/></p>
15812             </td>
15813
15814             <td class="entry_units">
15815               incrementing integer
15816             </td>
15817
15818             <td class="entry_range">
15819               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15820               <p>Any int.<wbr/></p>
15821             </td>
15822
15823             <td class="entry_hal_version">
15824               <p>3.<wbr/>2</p>
15825             </td>
15826
15827             <td class="entry_tags">
15828             </td>
15829
15830           </tr>
15831
15832
15833           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15834            <!-- end of entry -->
15835         
15836                 
15837           <tr class="entry" id="controls_android.request.id">
15838             <td class="entry_name
15839              " rowspan="1">
15840               android.<wbr/>request.<wbr/>id
15841             </td>
15842             <td class="entry_type">
15843                 <span class="entry_type_name">int32</span>
15844
15845               <span class="entry_type_visibility"> [hidden]</span>
15846
15847
15848
15849
15850
15851
15852             </td> <!-- entry_type -->
15853
15854             <td class="entry_description">
15855               <p>An application-specified ID for the current
15856 request.<wbr/> Must be maintained unchanged in output
15857 frame</p>
15858             </td>
15859
15860             <td class="entry_units">
15861               arbitrary integer assigned by application
15862             </td>
15863
15864             <td class="entry_range">
15865               <p>Any int</p>
15866             </td>
15867
15868             <td class="entry_hal_version">
15869               <p>3.<wbr/>2</p>
15870             </td>
15871
15872             <td class="entry_tags">
15873               <ul class="entry_tags">
15874                   <li><a href="#tag_V1">V1</a></li>
15875               </ul>
15876             </td>
15877
15878           </tr>
15879
15880
15881           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15882            <!-- end of entry -->
15883         
15884                 
15885           <tr class="entry" id="controls_android.request.inputStreams">
15886             <td class="entry_name
15887                 entry_name_deprecated
15888              " rowspan="3">
15889               android.<wbr/>request.<wbr/>input<wbr/>Streams
15890             </td>
15891             <td class="entry_type">
15892                 <span class="entry_type_name">int32</span>
15893                 <span class="entry_type_container">x</span>
15894
15895                 <span class="entry_type_array">
15896                   n
15897                 </span>
15898               <span class="entry_type_visibility"> [system]</span>
15899
15900
15901
15902               <span class="entry_type_deprecated">[deprecated] </span>
15903
15904
15905
15906             </td> <!-- entry_type -->
15907
15908             <td class="entry_description">
15909               <p>List which camera reprocess stream is used
15910 for the source of reprocessing data.<wbr/></p>
15911             </td>
15912
15913             <td class="entry_units">
15914               List of camera reprocess stream IDs
15915             </td>
15916
15917             <td class="entry_range">
15918               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15919               <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
15920             </td>
15921
15922             <td class="entry_hal_version">
15923               <p>3.<wbr/>2</p>
15924             </td>
15925
15926             <td class="entry_tags">
15927               <ul class="entry_tags">
15928                   <li><a href="#tag_HAL2">HAL2</a></li>
15929               </ul>
15930             </td>
15931
15932           </tr>
15933           <tr class="entries_header">
15934             <th class="th_details" colspan="6">Details</th>
15935           </tr>
15936           <tr class="entry_cont">
15937             <td class="entry_details" colspan="6">
15938               <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
15939 REPROCESS.<wbr/> Ignored otherwise</p>
15940             </td>
15941           </tr>
15942
15943
15944           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15945            <!-- end of entry -->
15946         
15947                 
15948           <tr class="entry" id="controls_android.request.metadataMode">
15949             <td class="entry_name
15950              " rowspan="1">
15951               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
15952             </td>
15953             <td class="entry_type">
15954                 <span class="entry_type_name entry_type_name_enum">byte</span>
15955
15956               <span class="entry_type_visibility"> [system]</span>
15957
15958
15959
15960
15961
15962                 <ul class="entry_type_enum">
15963                   <li>
15964                     <span class="entry_type_enum_name">NONE (v3.2)</span>
15965                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
15966 for application-bound buffer data.<wbr/> If no
15967 application-bound streams exist,<wbr/> no frame should be
15968 placed in the output frame queue.<wbr/> If such streams
15969 exist,<wbr/> a frame should be placed on the output queue
15970 with null metadata but with the necessary output buffer
15971 information.<wbr/> Timestamp information should still be
15972 included with any output stream buffers</p></span>
15973                   </li>
15974                   <li>
15975                     <span class="entry_type_enum_name">FULL (v3.2)</span>
15976                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
15977 only be produced if they are separately
15978 enabled</p></span>
15979                   </li>
15980                 </ul>
15981
15982             </td> <!-- entry_type -->
15983
15984             <td class="entry_description">
15985               <p>How much metadata to produce on
15986 output</p>
15987             </td>
15988
15989             <td class="entry_units">
15990             </td>
15991
15992             <td class="entry_range">
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_FUTURE">FUTURE</a></li>
16002               </ul>
16003             </td>
16004
16005           </tr>
16006
16007
16008           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16009            <!-- end of entry -->
16010         
16011                 
16012           <tr class="entry" id="controls_android.request.outputStreams">
16013             <td class="entry_name
16014                 entry_name_deprecated
16015              " rowspan="3">
16016               android.<wbr/>request.<wbr/>output<wbr/>Streams
16017             </td>
16018             <td class="entry_type">
16019                 <span class="entry_type_name">int32</span>
16020                 <span class="entry_type_container">x</span>
16021
16022                 <span class="entry_type_array">
16023                   n
16024                 </span>
16025               <span class="entry_type_visibility"> [system]</span>
16026
16027
16028
16029               <span class="entry_type_deprecated">[deprecated] </span>
16030
16031
16032
16033             </td> <!-- entry_type -->
16034
16035             <td class="entry_description">
16036               <p>Lists which camera output streams image data
16037 from this capture must be sent to</p>
16038             </td>
16039
16040             <td class="entry_units">
16041               List of camera stream IDs
16042             </td>
16043
16044             <td class="entry_range">
16045               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16046               <p>List must only include streams that have been
16047 created</p>
16048             </td>
16049
16050             <td class="entry_hal_version">
16051               <p>3.<wbr/>2</p>
16052             </td>
16053
16054             <td class="entry_tags">
16055               <ul class="entry_tags">
16056                   <li><a href="#tag_HAL2">HAL2</a></li>
16057               </ul>
16058             </td>
16059
16060           </tr>
16061           <tr class="entries_header">
16062             <th class="th_details" colspan="6">Details</th>
16063           </tr>
16064           <tr class="entry_cont">
16065             <td class="entry_details" colspan="6">
16066               <p>If no output streams are listed,<wbr/> then the image
16067 data should simply be discarded.<wbr/> The image data must
16068 still be captured for metadata and statistics production,<wbr/>
16069 and the lens and flash must operate as requested.<wbr/></p>
16070             </td>
16071           </tr>
16072
16073
16074           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16075            <!-- end of entry -->
16076         
16077                 
16078           <tr class="entry" id="controls_android.request.type">
16079             <td class="entry_name
16080                 entry_name_deprecated
16081              " rowspan="1">
16082               android.<wbr/>request.<wbr/>type
16083             </td>
16084             <td class="entry_type">
16085                 <span class="entry_type_name entry_type_name_enum">byte</span>
16086
16087               <span class="entry_type_visibility"> [system]</span>
16088
16089
16090
16091               <span class="entry_type_deprecated">[deprecated] </span>
16092
16093
16094                 <ul class="entry_type_enum">
16095                   <li>
16096                     <span class="entry_type_enum_name">CAPTURE (v3.2)</span>
16097                     <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
16098 and process it according to the
16099 settings</p></span>
16100                   </li>
16101                   <li>
16102                     <span class="entry_type_enum_name">REPROCESS (v3.2)</span>
16103                     <span class="entry_type_enum_notes"><p>Process previously captured data; the
16104 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
16105 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
16106 needed for reprocessing with [RP]</p></span>
16107                   </li>
16108                 </ul>
16109
16110             </td> <!-- entry_type -->
16111
16112             <td class="entry_description">
16113               <p>The type of the request; either CAPTURE or
16114 REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p>
16115             </td>
16116
16117             <td class="entry_units">
16118             </td>
16119
16120             <td class="entry_range">
16121               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16122             </td>
16123
16124             <td class="entry_hal_version">
16125               <p>3.<wbr/>2</p>
16126             </td>
16127
16128             <td class="entry_tags">
16129               <ul class="entry_tags">
16130                   <li><a href="#tag_HAL2">HAL2</a></li>
16131               </ul>
16132             </td>
16133
16134           </tr>
16135
16136
16137           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16138            <!-- end of entry -->
16139         
16140         
16141
16142       <!-- end of kind -->
16143       </tbody>
16144       <tr><td colspan="7" class="kind">static</td></tr>
16145
16146       <thead class="entries_header">
16147         <tr>
16148           <th class="th_name">Property Name</th>
16149           <th class="th_type">Type</th>
16150           <th class="th_description">Description</th>
16151           <th class="th_units">Units</th>
16152           <th class="th_range">Range</th>
16153           <th class="th_hal_version">Initial HIDL HAL version</th>
16154           <th class="th_tags">Tags</th>
16155         </tr>
16156       </thead>
16157
16158       <tbody>
16159
16160         
16161
16162         
16163
16164         
16165
16166         
16167
16168                 
16169           <tr class="entry" id="static_android.request.maxNumOutputStreams">
16170             <td class="entry_name
16171              " rowspan="3">
16172               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
16173             </td>
16174             <td class="entry_type">
16175                 <span class="entry_type_name">int32</span>
16176                 <span class="entry_type_container">x</span>
16177
16178                 <span class="entry_type_array">
16179                   3
16180                 </span>
16181               <span class="entry_type_visibility"> [ndk_public]</span>
16182
16183
16184               <span class="entry_type_hwlevel">[legacy] </span>
16185
16186
16187
16188
16189             </td> <!-- entry_type -->
16190
16191             <td class="entry_description">
16192               <p>The maximum numbers of different types of output streams
16193 that can be configured and used simultaneously by a camera device.<wbr/></p>
16194             </td>
16195
16196             <td class="entry_units">
16197             </td>
16198
16199             <td class="entry_range">
16200               <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
16201 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
16202 <p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
16203 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16204 &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>
16205             </td>
16206
16207             <td class="entry_hal_version">
16208               <p>3.<wbr/>2</p>
16209             </td>
16210
16211             <td class="entry_tags">
16212               <ul class="entry_tags">
16213                   <li><a href="#tag_BC">BC</a></li>
16214               </ul>
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 is a 3 element tuple that contains the max number of output simultaneous
16224 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
16225 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
16226 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
16227 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>
16228 <p>This lists the upper bound of the number of output streams supported by
16229 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16230 CPU resources that will consume more power.<wbr/> The image format for an output stream can
16231 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
16232 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
16233 into the 3 stream types as below:</p>
16234 <ul>
16235 <li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
16236   Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
16237 <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
16238   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
16239 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>  Typically
16240   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
16241   <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>
16242 </ul>
16243             </td>
16244           </tr>
16245
16246
16247           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16248            <!-- end of entry -->
16249         
16250                 
16251           <tr class="entry" id="static_android.request.maxNumOutputRaw">
16252             <td class="entry_name
16253              " rowspan="3">
16254               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
16255             </td>
16256             <td class="entry_type">
16257                 <span class="entry_type_name">int32</span>
16258
16259               <span class="entry_type_visibility"> [java_public]</span>
16260
16261               <span class="entry_type_synthetic">[synthetic] </span>
16262
16263               <span class="entry_type_hwlevel">[legacy] </span>
16264
16265
16266
16267
16268             </td> <!-- entry_type -->
16269
16270             <td class="entry_description">
16271               <p>The maximum numbers of different types of output streams
16272 that can be configured and used simultaneously by a camera device
16273 for any <code>RAW</code> formats.<wbr/></p>
16274             </td>
16275
16276             <td class="entry_units">
16277             </td>
16278
16279             <td class="entry_range">
16280               <p>&gt;= 0</p>
16281             </td>
16282
16283             <td class="entry_hal_version">
16284               <p>3.<wbr/>2</p>
16285             </td>
16286
16287             <td class="entry_tags">
16288             </td>
16289
16290           </tr>
16291           <tr class="entries_header">
16292             <th class="th_details" colspan="6">Details</th>
16293           </tr>
16294           <tr class="entry_cont">
16295             <td class="entry_details" colspan="6">
16296               <p>This value contains the max number of output simultaneous
16297 streams from the raw sensor.<wbr/></p>
16298 <p>This lists the upper bound of the number of output streams supported by
16299 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16300 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16301 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>
16302 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
16303 <ul>
16304 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
16305 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
16306 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
16307 </ul>
16308 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
16309 never support raw streams.<wbr/></p>
16310             </td>
16311           </tr>
16312
16313
16314           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16315            <!-- end of entry -->
16316         
16317                 
16318           <tr class="entry" id="static_android.request.maxNumOutputProc">
16319             <td class="entry_name
16320              " rowspan="3">
16321               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
16322             </td>
16323             <td class="entry_type">
16324                 <span class="entry_type_name">int32</span>
16325
16326               <span class="entry_type_visibility"> [java_public]</span>
16327
16328               <span class="entry_type_synthetic">[synthetic] </span>
16329
16330               <span class="entry_type_hwlevel">[legacy] </span>
16331
16332
16333
16334
16335             </td> <!-- entry_type -->
16336
16337             <td class="entry_description">
16338               <p>The maximum numbers of different types of output streams
16339 that can be configured and used simultaneously by a camera device
16340 for any processed (but not-stalling) formats.<wbr/></p>
16341             </td>
16342
16343             <td class="entry_units">
16344             </td>
16345
16346             <td class="entry_range">
16347               <p>&gt;= 3
16348 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16349 &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>
16350             </td>
16351
16352             <td class="entry_hal_version">
16353               <p>3.<wbr/>2</p>
16354             </td>
16355
16356             <td class="entry_tags">
16357             </td>
16358
16359           </tr>
16360           <tr class="entries_header">
16361             <th class="th_details" colspan="6">Details</th>
16362           </tr>
16363           <tr class="entry_cont">
16364             <td class="entry_details" colspan="6">
16365               <p>This value contains the max number of output simultaneous
16366 streams for any processed (but not-stalling) formats.<wbr/></p>
16367 <p>This lists the upper bound of the number of output streams supported by
16368 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16369 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16370 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>
16371 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
16372 Typically:</p>
16373 <ul>
16374 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
16375 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
16376 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
16377 <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>
16378 </ul>
16379 <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
16380 processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
16381 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
16382             </td>
16383           </tr>
16384
16385
16386           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16387            <!-- end of entry -->
16388         
16389                 
16390           <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
16391             <td class="entry_name
16392              " rowspan="3">
16393               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
16394             </td>
16395             <td class="entry_type">
16396                 <span class="entry_type_name">int32</span>
16397
16398               <span class="entry_type_visibility"> [java_public]</span>
16399
16400               <span class="entry_type_synthetic">[synthetic] </span>
16401
16402               <span class="entry_type_hwlevel">[legacy] </span>
16403
16404
16405
16406
16407             </td> <!-- entry_type -->
16408
16409             <td class="entry_description">
16410               <p>The maximum numbers of different types of output streams
16411 that can be configured and used simultaneously by a camera device
16412 for any processed (and stalling) formats.<wbr/></p>
16413             </td>
16414
16415             <td class="entry_units">
16416             </td>
16417
16418             <td class="entry_range">
16419               <p>&gt;= 1</p>
16420             </td>
16421
16422             <td class="entry_hal_version">
16423               <p>3.<wbr/>2</p>
16424             </td>
16425
16426             <td class="entry_tags">
16427             </td>
16428
16429           </tr>
16430           <tr class="entries_header">
16431             <th class="th_details" colspan="6">Details</th>
16432           </tr>
16433           <tr class="entry_cont">
16434             <td class="entry_details" colspan="6">
16435               <p>This value contains the max number of output simultaneous
16436 streams for any processed (but not-stalling) formats.<wbr/></p>
16437 <p>This lists the upper bound of the number of output streams supported by
16438 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16439 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16440 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>
16441 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations
16442 &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>
16443 <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
16444 processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
16445 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
16446             </td>
16447           </tr>
16448
16449
16450           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16451            <!-- end of entry -->
16452         
16453                 
16454           <tr class="entry" id="static_android.request.maxNumReprocessStreams">
16455             <td class="entry_name
16456                 entry_name_deprecated
16457              " rowspan="3">
16458               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
16459             </td>
16460             <td class="entry_type">
16461                 <span class="entry_type_name">int32</span>
16462                 <span class="entry_type_container">x</span>
16463
16464                 <span class="entry_type_array">
16465                   1
16466                 </span>
16467               <span class="entry_type_visibility"> [system]</span>
16468
16469
16470
16471               <span class="entry_type_deprecated">[deprecated] </span>
16472
16473
16474
16475             </td> <!-- entry_type -->
16476
16477             <td class="entry_description">
16478               <p>How many reprocessing streams of any type
16479 can be allocated at the same time.<wbr/></p>
16480             </td>
16481
16482             <td class="entry_units">
16483             </td>
16484
16485             <td class="entry_range">
16486               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16487               <p>&gt;= 0</p>
16488             </td>
16489
16490             <td class="entry_hal_version">
16491               <p>3.<wbr/>2</p>
16492             </td>
16493
16494             <td class="entry_tags">
16495               <ul class="entry_tags">
16496                   <li><a href="#tag_HAL2">HAL2</a></li>
16497               </ul>
16498             </td>
16499
16500           </tr>
16501           <tr class="entries_header">
16502             <th class="th_details" colspan="6">Details</th>
16503           </tr>
16504           <tr class="entry_cont">
16505             <td class="entry_details" colspan="6">
16506               <p>Only used by HAL2.<wbr/>x.<wbr/></p>
16507 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
16508             </td>
16509           </tr>
16510
16511
16512           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16513            <!-- end of entry -->
16514         
16515                 
16516           <tr class="entry" id="static_android.request.maxNumInputStreams">
16517             <td class="entry_name
16518              " rowspan="5">
16519               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
16520             </td>
16521             <td class="entry_type">
16522                 <span class="entry_type_name">int32</span>
16523
16524               <span class="entry_type_visibility"> [java_public]</span>
16525
16526
16527               <span class="entry_type_hwlevel">[full] </span>
16528
16529
16530
16531
16532             </td> <!-- entry_type -->
16533
16534             <td class="entry_description">
16535               <p>The maximum numbers of any type of input streams
16536 that can be configured and used simultaneously by a camera device.<wbr/></p>
16537             </td>
16538
16539             <td class="entry_units">
16540             </td>
16541
16542             <td class="entry_range">
16543               <p>0 or 1.<wbr/></p>
16544             </td>
16545
16546             <td class="entry_hal_version">
16547               <p>3.<wbr/>2</p>
16548             </td>
16549
16550             <td class="entry_tags">
16551               <ul class="entry_tags">
16552                   <li><a href="#tag_REPROC">REPROC</a></li>
16553               </ul>
16554             </td>
16555
16556           </tr>
16557           <tr class="entries_header">
16558             <th class="th_details" colspan="6">Details</th>
16559           </tr>
16560           <tr class="entry_cont">
16561             <td class="entry_details" colspan="6">
16562               <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
16563 <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
16564 input stream,<wbr/> there must be at least one output stream configured to to receive the
16565 reprocessed images.<wbr/></p>
16566 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
16567 only the input buffer will be used to produce these output stream buffers,<wbr/> and a
16568 new sensor image will not be captured.<wbr/></p>
16569 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
16570 stream image format will be PRIVATE,<wbr/> the associated output stream image format
16571 should be JPEG.<wbr/></p>
16572             </td>
16573           </tr>
16574
16575           <tr class="entries_header">
16576             <th class="th_details" colspan="6">HAL Implementation Details</th>
16577           </tr>
16578           <tr class="entry_cont">
16579             <td class="entry_details" colspan="6">
16580               <p>For the reprocessing flow and controls,<wbr/> see
16581 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
16582             </td>
16583           </tr>
16584
16585           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16586            <!-- end of entry -->
16587         
16588                 
16589           <tr class="entry" id="static_android.request.pipelineMaxDepth">
16590             <td class="entry_name
16591              " rowspan="5">
16592               android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
16593             </td>
16594             <td class="entry_type">
16595                 <span class="entry_type_name">byte</span>
16596
16597               <span class="entry_type_visibility"> [public]</span>
16598
16599
16600               <span class="entry_type_hwlevel">[legacy] </span>
16601
16602
16603
16604
16605             </td> <!-- entry_type -->
16606
16607             <td class="entry_description">
16608               <p>Specifies the number of maximum pipeline stages a frame
16609 has to go through from when it's exposed to when it's available
16610 to the framework.<wbr/></p>
16611             </td>
16612
16613             <td class="entry_units">
16614             </td>
16615
16616             <td class="entry_range">
16617             </td>
16618
16619             <td class="entry_hal_version">
16620               <p>3.<wbr/>2</p>
16621             </td>
16622
16623             <td class="entry_tags">
16624             </td>
16625
16626           </tr>
16627           <tr class="entries_header">
16628             <th class="th_details" colspan="6">Details</th>
16629           </tr>
16630           <tr class="entry_cont">
16631             <td class="entry_details" colspan="6">
16632               <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
16633 one stage to readout) from the sensor.<wbr/> The ISP then usually adds
16634 its own stages to do custom HW processing.<wbr/> Further stages may be
16635 added by SW processing.<wbr/></p>
16636 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
16637 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
16638 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
16639 the max pipeline depth.<wbr/></p>
16640 <p>A pipeline depth of X stages is equivalent to a pipeline latency of
16641 X frame intervals.<wbr/></p>
16642 <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
16643 the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
16644             </td>
16645           </tr>
16646
16647           <tr class="entries_header">
16648             <th class="th_details" colspan="6">HAL Implementation Details</th>
16649           </tr>
16650           <tr class="entry_cont">
16651             <td class="entry_details" colspan="6">
16652               <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
16653 max batch sizes may be larger than 1.<wbr/></p>
16654             </td>
16655           </tr>
16656
16657           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16658            <!-- end of entry -->
16659         
16660                 
16661           <tr class="entry" id="static_android.request.partialResultCount">
16662             <td class="entry_name
16663              " rowspan="3">
16664               android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
16665             </td>
16666             <td class="entry_type">
16667                 <span class="entry_type_name">int32</span>
16668
16669               <span class="entry_type_visibility"> [public]</span>
16670
16671
16672
16673
16674
16675
16676             </td> <!-- entry_type -->
16677
16678             <td class="entry_description">
16679               <p>Defines how many sub-components
16680 a result will be composed of.<wbr/></p>
16681             </td>
16682
16683             <td class="entry_units">
16684             </td>
16685
16686             <td class="entry_range">
16687               <p>&gt;= 1</p>
16688             </td>
16689
16690             <td class="entry_hal_version">
16691               <p>3.<wbr/>2</p>
16692             </td>
16693
16694             <td class="entry_tags">
16695             </td>
16696
16697           </tr>
16698           <tr class="entries_header">
16699             <th class="th_details" colspan="6">Details</th>
16700           </tr>
16701           <tr class="entry_cont">
16702             <td class="entry_details" colspan="6">
16703               <p>In order to combat the pipeline latency,<wbr/> partial results
16704 may be delivered to the application layer from the camera device as
16705 soon as they are available.<wbr/></p>
16706 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
16707 results are not supported,<wbr/> and only the final TotalCaptureResult will
16708 be produced by the camera device.<wbr/></p>
16709 <p>A typical use case for this might be: after requesting an
16710 auto-focus (AF) lock the new AF state might be available 50%
16711 of the way through the pipeline.<wbr/>  The camera device could
16712 then immediately dispatch this state via a partial result to
16713 the application,<wbr/> and the rest of the metadata via later
16714 partial results.<wbr/></p>
16715             </td>
16716           </tr>
16717
16718
16719           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16720            <!-- end of entry -->
16721         
16722                 
16723           <tr class="entry" id="static_android.request.availableCapabilities">
16724             <td class="entry_name
16725              " rowspan="5">
16726               android.<wbr/>request.<wbr/>available<wbr/>Capabilities
16727             </td>
16728             <td class="entry_type">
16729                 <span class="entry_type_name entry_type_name_enum">byte</span>
16730                 <span class="entry_type_container">x</span>
16731
16732                 <span class="entry_type_array">
16733                   n
16734                 </span>
16735               <span class="entry_type_visibility"> [public]</span>
16736
16737
16738               <span class="entry_type_hwlevel">[legacy] </span>
16739
16740
16741
16742                 <ul class="entry_type_enum">
16743                   <li>
16744                     <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span>
16745                     <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
16746 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
16747 supports.<wbr/></p>
16748 <p>This capability is listed by all normal devices,<wbr/> and
16749 indicates that the camera device has a feature set
16750 that's comparable to the baseline requirements for the
16751 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
16752 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
16753 capability,<wbr/> indicating that they support only depth measurement,<wbr/>
16754 not standard color output.<wbr/></p></span>
16755                   </li>
16756                   <li>
16757                     <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span>
16758                     <span class="entry_type_enum_optional">[optional]</span>
16759                     <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
16760 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
16761 The camera device supports basic manual control of the sensor image
16762 acquisition related stages.<wbr/> This means the following controls are
16763 guaranteed to be supported:</p>
16764 <ul>
16765 <li>Manual frame duration control<ul>
16766 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
16767 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
16768 </ul>
16769 </li>
16770 <li>Manual exposure control<ul>
16771 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16772 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
16773 </ul>
16774 </li>
16775 <li>Manual sensitivity control<ul>
16776 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16777 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
16778 </ul>
16779 </li>
16780 <li>Manual lens control (if the lens is adjustable)<ul>
16781 <li>android.<wbr/>lens.<wbr/>*</li>
16782 </ul>
16783 </li>
16784 <li>Manual flash control (if a flash unit is present)<ul>
16785 <li>android.<wbr/>flash.<wbr/>*</li>
16786 </ul>
16787 </li>
16788 <li>Manual black level locking<ul>
16789 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
16790 </ul>
16791 </li>
16792 <li>Auto exposure lock<ul>
16793 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16794 </ul>
16795 </li>
16796 </ul>
16797 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
16798 device will accurately report the values applied by 3A in the
16799 result.<wbr/></p>
16800 <p>A given camera device may also support additional manual sensor controls,<wbr/>
16801 but this capability only covers the above list of controls.<wbr/></p>
16802 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
16803 additionally return a min frame duration that is greater than
16804 zero for each supported size-format combination.<wbr/></p></span>
16805                   </li>
16806                   <li>
16807                     <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span>
16808                     <span class="entry_type_enum_optional">[optional]</span>
16809                     <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
16810 The camera device supports basic manual control of the image post-processing
16811 stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
16812 <ul>
16813 <li>
16814 <p>Manual tonemap control</p>
16815 <ul>
16816 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
16817 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
16818 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
16819 <li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
16820 <li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
16821 </ul>
16822 </li>
16823 <li>
16824 <p>Manual white balance control</p>
16825 <ul>
16826 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
16827 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
16828 </ul>
16829 </li>
16830 <li>Manual lens shading map control<ul>
16831 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
16832 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
16833 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
16834 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
16835 </ul>
16836 </li>
16837 <li>Manual aberration correction control (if aberration correction is supported)<ul>
16838 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
16839 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
16840 </ul>
16841 </li>
16842 <li>Auto white balance lock<ul>
16843 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16844 </ul>
16845 </li>
16846 </ul>
16847 <p>If auto white balance is enabled,<wbr/> then the camera device
16848 will accurately report the values applied by AWB in the result.<wbr/></p>
16849 <p>A given camera device may also support additional post-processing
16850 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
16851                   </li>
16852                   <li>
16853                     <span class="entry_type_enum_name">RAW (v3.2)</span>
16854                     <span class="entry_type_enum_optional">[optional]</span>
16855                     <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
16856 metadata for interpreting them.<wbr/></p>
16857 <p>Devices supporting the RAW capability allow both for
16858 saving DNG files,<wbr/> and for direct application processing of
16859 raw sensor images.<wbr/></p>
16860 <ul>
16861 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
16862 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams
16863   will match either the value in
16864   <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
16865   <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>
16866 <li>All DNG-related optional metadata entries are provided
16867   by the camera device.<wbr/></li>
16868 </ul></span>
16869                   </li>
16870                   <li>
16871                     <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span>
16872                     <span class="entry_type_enum_optional">[optional]</span>
16873                     <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
16874 <ul>
16875 <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>
16876 <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/>
16877   that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
16878   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>
16879 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16880   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>
16881 <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>
16882 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
16883   relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16884 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
16885   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
16886   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
16887 <li>The maximum available resolution for PRIVATE streams
16888   (both input/<wbr/>output) will match the maximum available
16889   resolution of JPEG streams.<wbr/></li>
16890 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16891 <li>Only below controls are effective for reprocessing requests and
16892   will be present in capture results,<wbr/> other controls in reprocess
16893   requests will be ignored by the camera device.<wbr/><ul>
16894 <li>android.<wbr/>jpeg.<wbr/>*</li>
16895 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16896 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16897 </ul>
16898 </li>
16899 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16900   <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>
16901 </ul></span>
16902                   </li>
16903                   <li>
16904                     <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span>
16905                     <span class="entry_type_enum_optional">[optional]</span>
16906                     <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
16907 the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
16908 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
16909 <p>The values reported for the following controls are guaranteed to be available
16910 in the CaptureResult,<wbr/> including when 3A is enabled:</p>
16911 <ul>
16912 <li>Exposure control<ul>
16913 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16914 </ul>
16915 </li>
16916 <li>Sensitivity control<ul>
16917 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16918 </ul>
16919 </li>
16920 <li>Lens controls (if the lens is adjustable)<ul>
16921 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
16922 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
16923 </ul>
16924 </li>
16925 </ul>
16926 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
16927 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
16928                   </li>
16929                   <li>
16930                     <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span>
16931                     <span class="entry_type_enum_optional">[optional]</span>
16932                     <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
16933 second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
16934 to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at &gt;= 10 frames
16935 per second.<wbr/>  Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
16936 resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span>
16937                   </li>
16938                   <li>
16939                     <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span>
16940                     <span class="entry_type_enum_optional">[optional]</span>
16941                     <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
16942 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
16943 following:</p>
16944 <ul>
16945 <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>
16946 <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
16947   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>
16948 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16949   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>
16950 <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>
16951 <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
16952   drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16953 <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
16954   <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>
16955 <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
16956   maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
16957 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16958 <li>Only the below controls are effective for reprocessing requests and will be present
16959   in capture results.<wbr/> The reprocess requests are from the original capture results
16960   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
16961   reprocess requests will be ignored by the camera device.<wbr/><ul>
16962 <li>android.<wbr/>jpeg.<wbr/>*</li>
16963 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16964 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16965 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
16966 </ul>
16967 </li>
16968 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16969   <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>
16970 </ul></span>
16971                   </li>
16972                   <li>
16973                     <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span>
16974                     <span class="entry_type_enum_optional">[optional]</span>
16975                     <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
16976 <p>This capability requires the camera device to support the following:</p>
16977 <ul>
16978 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as
16979   an output format.<wbr/></li>
16980 <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
16981   optionally supported as an output format.<wbr/></li>
16982 <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
16983   list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>
16984   and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
16985 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
16986 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
16987 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
16988 <li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
16989 </ul>
16990 </li>
16991 <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>
16992 <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>
16993 <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
16994   normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
16995   format.<wbr/></li>
16996 </ul>
16997 <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
16998 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
16999 should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
17000 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
17001 using a repeating burst is recommended,<wbr/> where a depth-output target is only included
17002 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
17003 rate,<wbr/> including depth stall time.<wbr/></p></span>
17004                   </li>
17005                   <li>
17006                     <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span>
17007                     <span class="entry_type_enum_optional">[optional]</span>
17008                     <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps) use
17009 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
17010 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>
17011 <p>A camera device can still support high speed video streaming by advertising the high
17012 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
17013 normal capture request per frame control and synchronization requirements will apply
17014 to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability
17015 describes the capability of a specialized operating mode with many limitations (see
17016 below),<wbr/> which is only targeted at high speed video recording.<wbr/></p>
17017 <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/>
17018 To get desired output frame rates,<wbr/> the application is only allowed to select video
17019 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
17020 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>
17021 <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
17022 ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
17023 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
17024 and post-processing parameters is possible.<wbr/> All other controls operate the
17025 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
17026 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
17027 <ul>
17028 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
17029 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
17030 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
17031 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
17032 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
17033 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
17034 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
17035 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
17036 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
17037 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
17038 </ul>
17039 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
17040 <ul>
17041 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
17042 work since aeMode is ON)</li>
17043 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
17044 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
17045 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
17046 </ul>
17047 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
17048 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
17049 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
17050 the application need check if the video encoder is capable of supporting the
17051 high frame rate for a given video size,<wbr/> or it will end up with lower recording
17052 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
17053 rate will be bounded by the screen refresh rate.<wbr/></p>
17054 <p>The camera device will only support up to 2 high speed simultaneous output surfaces
17055 (preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only
17056 if all of below conditions are true:</p>
17057 <ul>
17058 <li>The application creates a camera capture session with no more than 2 surfaces via
17059 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
17060 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
17061 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>
17062 <li>The stream sizes are selected from the sizes reported by
17063 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
17064 <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>
17065 </ul>
17066 <p>When above conditions are NOT satistied,<wbr/>
17067 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
17068 will fail.<wbr/></p>
17069 <p>Switching to a FPS range that has different maximum FPS may trigger some camera device
17070 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
17071 the application avoids unnecessary maximum target FPS changes as much as possible
17072 during high speed streaming.<wbr/></p></span>
17073                   </li>
17074                   <li>
17075                     <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
17076                     <span class="entry_type_enum_optional">[optional]</span>
17077                     <span class="entry_type_enum_notes"><p>The camera device supports the MOTION_<wbr/>TRACKING value for
17078 <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>
17079 <p>This limits the motion blur of capture images,<wbr/> resulting in better image tracking
17080 results for use cases such as image stabilization or augmented reality.<wbr/></p></span>
17081                   </li>
17082                   <li>
17083                     <span class="entry_type_enum_name">LOGICAL_MULTI_CAMERA (v3.3)</span>
17084                     <span class="entry_type_enum_optional">[optional]</span>
17085                     <span class="entry_type_enum_notes"><p>The camera device is a logical camera backed by two or more physical cameras that are
17086 also exposed to the application.<wbr/></p>
17087 <p>This capability requires the camera device to support the following:</p>
17088 <ul>
17089 <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>
17090 <li><a href="#static_android.logicalMultiCamera.physicalIds">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids</a></li>
17091 <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type</a></li>
17092 </ul>
17093 </li>
17094 <li>The underlying physical cameras' static metadata must list the following entries,<wbr/>
17095   so that the application can correlate pixels from the physical streams:<ul>
17096 <li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
17097 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
17098 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
17099 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
17100 <li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
17101 </ul>
17102 </li>
17103 <li>The SENSOR_<wbr/>INFO_<wbr/>TIMESTAMP_<wbr/>SOURCE of the logical device and physical devices must be
17104   the same.<wbr/></li>
17105 <li>The logical camera device must be LIMITED or higher device.<wbr/></li>
17106 </ul>
17107 <p>Both the logical camera device and its underlying physical devices support the
17108 mandatory stream combinations required for their device levels.<wbr/></p>
17109 <p>Additionally,<wbr/> for each guaranteed stream combination,<wbr/> the logical camera supports:</p>
17110 <ul>
17111 <li>For each guaranteed stream combination,<wbr/> the logical camera supports replacing one
17112   logical <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>
17113   or raw stream with two physical streams of the same size and format,<wbr/> each from a
17114   separate physical camera,<wbr/> given that the size and format are supported by both
17115   physical cameras.<wbr/></li>
17116 <li>If the logical camera doesn't advertise RAW capability,<wbr/> but the underlying physical
17117   cameras do,<wbr/> the logical camera will support guaranteed stream combinations for RAW
17118   capability,<wbr/> except that the RAW streams will be physical streams,<wbr/> each from a separate
17119   physical camera.<wbr/> This is usually the case when the physical cameras have different
17120   sensor sizes.<wbr/></li>
17121 </ul>
17122 <p>Using physical streams in place of a logical stream of the same size and format will
17123 not slow down the frame rate of the capture,<wbr/> as long as the minimum frame duration
17124 of the physical and logical streams are the same.<wbr/></p></span>
17125                   </li>
17126                 </ul>
17127
17128             </td> <!-- entry_type -->
17129
17130             <td class="entry_description">
17131               <p>List of capabilities that this camera device
17132 advertises as fully supporting.<wbr/></p>
17133             </td>
17134
17135             <td class="entry_units">
17136             </td>
17137
17138             <td class="entry_range">
17139             </td>
17140
17141             <td class="entry_hal_version">
17142               <p>3.<wbr/>2</p>
17143             </td>
17144
17145             <td class="entry_tags">
17146             </td>
17147
17148           </tr>
17149           <tr class="entries_header">
17150             <th class="th_details" colspan="6">Details</th>
17151           </tr>
17152           <tr class="entry_cont">
17153             <td class="entry_details" colspan="6">
17154               <p>A capability is a contract that the camera device makes in order
17155 to be able to satisfy one or more use cases.<wbr/></p>
17156 <p>Listing a capability guarantees that the whole set of features
17157 required to support a common use will all be available.<wbr/></p>
17158 <p>Using a subset of the functionality provided by an unsupported
17159 capability may be possible on a specific camera device implementation;
17160 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
17161 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
17162 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
17163 <p>The following capabilities are guaranteed to be available on
17164 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
17165 <ul>
17166 <li>MANUAL_<wbr/>SENSOR</li>
17167 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
17168 </ul>
17169 <p>Other capabilities may be available on either FULL or LIMITED
17170 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
17171             </td>
17172           </tr>
17173
17174           <tr class="entries_header">
17175             <th class="th_details" colspan="6">HAL Implementation Details</th>
17176           </tr>
17177           <tr class="entry_cont">
17178             <td class="entry_details" colspan="6">
17179               <p>Additional constraint details per-capability will be available
17180 in the Compatibility Test Suite.<wbr/></p>
17181 <p>Minimum baseline requirements required for the
17182 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
17183 Instead refer to "BC" tags and the camera CTS tests in the
17184 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
17185 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
17186 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
17187 request and the result in order to be considered to be
17188 capability-compliant.<wbr/></p>
17189 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
17190 then exposure time must be configurable via the request <em>and</em>
17191 the actual exposure applied must be available via
17192 the result.<wbr/></p>
17193 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
17194 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
17195 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
17196 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
17197 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
17198 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
17199 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
17200 YUV_<wbr/>REPROCESSING capability must support the
17201 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
17202 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
17203 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
17204 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
17205 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
17206 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
17207 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
17208 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
17209 DEPTH).<wbr/></p>
17210 <p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the
17211 same way as a physical camera device based on its hardware level and capabilities.<wbr/>
17212 It's recommended that its feature set is superset of that of individual physical cameras.<wbr/></p>
17213             </td>
17214           </tr>
17215
17216           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17217            <!-- end of entry -->
17218         
17219                 
17220           <tr class="entry" id="static_android.request.availableRequestKeys">
17221             <td class="entry_name
17222              " rowspan="5">
17223               android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
17224             </td>
17225             <td class="entry_type">
17226                 <span class="entry_type_name">int32</span>
17227                 <span class="entry_type_container">x</span>
17228
17229                 <span class="entry_type_array">
17230                   n
17231                 </span>
17232               <span class="entry_type_visibility"> [ndk_public]</span>
17233
17234
17235               <span class="entry_type_hwlevel">[legacy] </span>
17236
17237
17238
17239
17240             </td> <!-- entry_type -->
17241
17242             <td class="entry_description">
17243               <p>A list of all keys that the camera device has available
17244 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
17245             </td>
17246
17247             <td class="entry_units">
17248             </td>
17249
17250             <td class="entry_range">
17251             </td>
17252
17253             <td class="entry_hal_version">
17254               <p>3.<wbr/>2</p>
17255             </td>
17256
17257             <td class="entry_tags">
17258             </td>
17259
17260           </tr>
17261           <tr class="entries_header">
17262             <th class="th_details" colspan="6">Details</th>
17263           </tr>
17264           <tr class="entry_cont">
17265             <td class="entry_details" colspan="6">
17266               <p>Attempting to set a key into a CaptureRequest that is not
17267 listed here will result in an invalid request and will be rejected
17268 by the camera device.<wbr/></p>
17269 <p>This field can be used to query the feature set of a camera device
17270 at a more granular level than capabilities.<wbr/> This is especially
17271 important for optional keys that are not listed under any capability
17272 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17273             </td>
17274           </tr>
17275
17276           <tr class="entries_header">
17277             <th class="th_details" colspan="6">HAL Implementation Details</th>
17278           </tr>
17279           <tr class="entry_cont">
17280             <td class="entry_details" colspan="6">
17281               <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17282 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17283 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17284 vendor extensions API and not against this field.<wbr/></p>
17285 <p>The HAL must not consume any request tags that are not listed either
17286 here or in the vendor tag list.<wbr/></p>
17287 <p>The public camera2 API will always make the vendor tags visible
17288 via
17289 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
17290             </td>
17291           </tr>
17292
17293           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17294            <!-- end of entry -->
17295         
17296                 
17297           <tr class="entry" id="static_android.request.availableResultKeys">
17298             <td class="entry_name
17299              " rowspan="5">
17300               android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
17301             </td>
17302             <td class="entry_type">
17303                 <span class="entry_type_name">int32</span>
17304                 <span class="entry_type_container">x</span>
17305
17306                 <span class="entry_type_array">
17307                   n
17308                 </span>
17309               <span class="entry_type_visibility"> [ndk_public]</span>
17310
17311
17312               <span class="entry_type_hwlevel">[legacy] </span>
17313
17314
17315
17316
17317             </td> <!-- entry_type -->
17318
17319             <td class="entry_description">
17320               <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>
17321             </td>
17322
17323             <td class="entry_units">
17324             </td>
17325
17326             <td class="entry_range">
17327             </td>
17328
17329             <td class="entry_hal_version">
17330               <p>3.<wbr/>2</p>
17331             </td>
17332
17333             <td class="entry_tags">
17334             </td>
17335
17336           </tr>
17337           <tr class="entries_header">
17338             <th class="th_details" colspan="6">Details</th>
17339           </tr>
17340           <tr class="entry_cont">
17341             <td class="entry_details" colspan="6">
17342               <p>Attempting to get a key from a CaptureResult that is not
17343 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
17344 a CaptureResult that is listed here will generally never return a <code>null</code>
17345 value.<wbr/></p>
17346 <p>The following keys may return <code>null</code> unless they are enabled:</p>
17347 <ul>
17348 <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>
17349 </ul>
17350 <p>(Those sometimes-null keys will nevertheless be listed here
17351 if they are available.<wbr/>)</p>
17352 <p>This field can be used to query the feature set of a camera device
17353 at a more granular level than capabilities.<wbr/> This is especially
17354 important for optional keys that are not listed under any capability
17355 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17356             </td>
17357           </tr>
17358
17359           <tr class="entries_header">
17360             <th class="th_details" colspan="6">HAL Implementation Details</th>
17361           </tr>
17362           <tr class="entry_cont">
17363             <td class="entry_details" colspan="6">
17364               <p>Tags listed here must always have an entry in the result metadata,<wbr/>
17365 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17366 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17367 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17368 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17369 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17370 vendor extensions API and not against this field.<wbr/></p>
17371 <p>The HAL must not produce any result tags that are not listed either
17372 here or in the vendor tag list.<wbr/></p>
17373 <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>
17374             </td>
17375           </tr>
17376
17377           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17378            <!-- end of entry -->
17379         
17380                 
17381           <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
17382             <td class="entry_name
17383              " rowspan="5">
17384               android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
17385             </td>
17386             <td class="entry_type">
17387                 <span class="entry_type_name">int32</span>
17388                 <span class="entry_type_container">x</span>
17389
17390                 <span class="entry_type_array">
17391                   n
17392                 </span>
17393               <span class="entry_type_visibility"> [ndk_public]</span>
17394
17395
17396               <span class="entry_type_hwlevel">[legacy] </span>
17397
17398
17399
17400
17401             </td> <!-- entry_type -->
17402
17403             <td class="entry_description">
17404               <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>
17405             </td>
17406
17407             <td class="entry_units">
17408             </td>
17409
17410             <td class="entry_range">
17411             </td>
17412
17413             <td class="entry_hal_version">
17414               <p>3.<wbr/>2</p>
17415             </td>
17416
17417             <td class="entry_tags">
17418             </td>
17419
17420           </tr>
17421           <tr class="entries_header">
17422             <th class="th_details" colspan="6">Details</th>
17423           </tr>
17424           <tr class="entry_cont">
17425             <td class="entry_details" colspan="6">
17426               <p>This entry follows the same rules as
17427 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
17428 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
17429 details.<wbr/></p>
17430             </td>
17431           </tr>
17432
17433           <tr class="entries_header">
17434             <th class="th_details" colspan="6">HAL Implementation Details</th>
17435           </tr>
17436           <tr class="entry_cont">
17437             <td class="entry_details" colspan="6">
17438               <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
17439 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17440 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17441 <p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
17442 the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17443 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17444 vendor extensions API and not against this field.<wbr/></p>
17445 <p>The HAL must not have any tags in its static info that are not listed
17446 either here or in the vendor tag list.<wbr/></p>
17447 <p>The public camera2 API will always make the vendor tags visible
17448 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
17449             </td>
17450           </tr>
17451
17452           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17453            <!-- end of entry -->
17454         
17455                 
17456           <tr class="entry" id="static_android.request.availableSessionKeys">
17457             <td class="entry_name
17458              " rowspan="5">
17459               android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys
17460             </td>
17461             <td class="entry_type">
17462                 <span class="entry_type_name">int32</span>
17463                 <span class="entry_type_container">x</span>
17464
17465                 <span class="entry_type_array">
17466                   n
17467                 </span>
17468               <span class="entry_type_visibility"> [ndk_public]</span>
17469
17470
17471               <span class="entry_type_hwlevel">[legacy] </span>
17472
17473
17474
17475
17476             </td> <!-- entry_type -->
17477
17478             <td class="entry_description">
17479               <p>A subset of the available request keys that the camera device
17480 can pass as part of the capture session initialization.<wbr/></p>
17481             </td>
17482
17483             <td class="entry_units">
17484             </td>
17485
17486             <td class="entry_range">
17487             </td>
17488
17489             <td class="entry_hal_version">
17490               <p>3.<wbr/>3</p>
17491             </td>
17492
17493             <td class="entry_tags">
17494             </td>
17495
17496           </tr>
17497           <tr class="entries_header">
17498             <th class="th_details" colspan="6">Details</th>
17499           </tr>
17500           <tr class="entry_cont">
17501             <td class="entry_details" colspan="6">
17502               <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which
17503 contains a list of keys that are difficult to apply per-frame and
17504 can result in unexpected delays when modified during the capture session
17505 lifetime.<wbr/> Typical examples include parameters that require a
17506 time-consuming hardware re-configuration or internal camera pipeline
17507 change.<wbr/> For performance reasons we advise clients to pass their initial
17508 values as part of
17509 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17510 Once the camera capture session is enabled it is also recommended to avoid
17511 changing them from their initial values set in
17512 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17513 Control over session parameters can still be exerted in capture requests
17514 but clients should be aware and expect delays during their application.<wbr/>
17515 An example usage scenario could look like this:</p>
17516 <ul>
17517 <li>The camera client starts by quering the session parameter key list via
17518   <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li>
17519 <li>Before triggering the capture session create sequence,<wbr/> a capture request
17520   must be built via
17521   <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a>
17522   using an appropriate template matching the particular use case.<wbr/></li>
17523 <li>The client should go over the list of session parameters and check
17524   whether some of the keys listed matches with the parameters that
17525   they intend to modify as part of the first capture request.<wbr/></li>
17526 <li>If there is no such match,<wbr/> the capture request can be  passed
17527   unmodified to
17528   <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17529 <li>If matches do exist,<wbr/> the client should update the respective values
17530   and pass the request to
17531   <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17532 <li>After the capture session initialization completes the session parameter
17533   key list can continue to serve as reference when posting or updating
17534   further requests.<wbr/> As mentioned above further changes to session
17535   parameters should ideally be avoided,<wbr/> if updates are necessary
17536   however clients could expect a delay/<wbr/>glitch during the
17537   parameter switch.<wbr/></li>
17538 </ul>
17539             </td>
17540           </tr>
17541
17542           <tr class="entries_header">
17543             <th class="th_details" colspan="6">HAL Implementation Details</th>
17544           </tr>
17545           <tr class="entry_cont">
17546             <td class="entry_details" colspan="6">
17547               <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17548 use the extensions C api (refer to
17549 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p>
17550 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17551 vendor extensions API and not against this field.<wbr/></p>
17552 <p>The HAL must not consume any request tags in the session parameters that
17553 are not listed either here or in the vendor tag list.<wbr/></p>
17554 <p>The public camera2 API will always make the vendor tags visible
17555 via
17556 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
17557             </td>
17558           </tr>
17559
17560           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17561            <!-- end of entry -->
17562         
17563                 
17564           <tr class="entry" id="static_android.request.availablePhysicalCameraRequestKeys">
17565             <td class="entry_name
17566              " rowspan="5">
17567               android.<wbr/>request.<wbr/>available<wbr/>Physical<wbr/>Camera<wbr/>Request<wbr/>Keys
17568             </td>
17569             <td class="entry_type">
17570                 <span class="entry_type_name">int32</span>
17571                 <span class="entry_type_container">x</span>
17572
17573                 <span class="entry_type_array">
17574                   n
17575                 </span>
17576               <span class="entry_type_visibility"> [hidden]</span>
17577
17578
17579               <span class="entry_type_hwlevel">[limited] </span>
17580
17581
17582
17583
17584             </td> <!-- entry_type -->
17585
17586             <td class="entry_description">
17587               <p>A subset of the available request keys that can be overriden for
17588 physical devices backing a logical multi-camera.<wbr/></p>
17589             </td>
17590
17591             <td class="entry_units">
17592             </td>
17593
17594             <td class="entry_range">
17595             </td>
17596
17597             <td class="entry_hal_version">
17598               <p>3.<wbr/>3</p>
17599             </td>
17600
17601             <td class="entry_tags">
17602             </td>
17603
17604           </tr>
17605           <tr class="entries_header">
17606             <th class="th_details" colspan="6">Details</th>
17607           </tr>
17608           <tr class="entry_cont">
17609             <td class="entry_details" colspan="6">
17610               <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
17611 of keys that can be overriden using <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/>
17612 The respective value of such request key can be obtained by calling
17613 <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>.<wbr/> Capture requests that contain
17614 individual physical device requests must be built via
17615 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.<wbr/></p>
17616             </td>
17617           </tr>
17618
17619           <tr class="entries_header">
17620             <th class="th_details" colspan="6">HAL Implementation Details</th>
17621           </tr>
17622           <tr class="entry_cont">
17623             <td class="entry_details" colspan="6">
17624               <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17625 use the extensions C api (refer to
17626 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more
17627 details).<wbr/></p>
17628 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17629 vendor extensions API and not against this field.<wbr/></p>
17630 <p>The HAL must not consume any request tags in the session parameters that
17631 are not listed either here or in the vendor tag list.<wbr/></p>
17632 <p>There should be no overlap between this set of keys and the available session keys
17633 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a> along
17634 with any other controls that can have impact on the dual-camera sync.<wbr/></p>
17635 <p>The public camera2 API will always make the vendor tags visible
17636 via
17637 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailablePhysicalCameraRequestKeys">CameraCharacteristics#getAvailablePhysicalCameraRequestKeys</a>.<wbr/></p>
17638             </td>
17639           </tr>
17640
17641           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17642            <!-- end of entry -->
17643         
17644         
17645
17646       <!-- end of kind -->
17647       </tbody>
17648       <tr><td colspan="7" class="kind">dynamic</td></tr>
17649
17650       <thead class="entries_header">
17651         <tr>
17652           <th class="th_name">Property Name</th>
17653           <th class="th_type">Type</th>
17654           <th class="th_description">Description</th>
17655           <th class="th_units">Units</th>
17656           <th class="th_range">Range</th>
17657           <th class="th_hal_version">Initial HIDL HAL version</th>
17658           <th class="th_tags">Tags</th>
17659         </tr>
17660       </thead>
17661
17662       <tbody>
17663
17664         
17665
17666         
17667
17668         
17669
17670         
17671
17672                 
17673           <tr class="entry" id="dynamic_android.request.frameCount">
17674             <td class="entry_name
17675                 entry_name_deprecated
17676              " rowspan="3">
17677               android.<wbr/>request.<wbr/>frame<wbr/>Count
17678             </td>
17679             <td class="entry_type">
17680                 <span class="entry_type_name">int32</span>
17681
17682               <span class="entry_type_visibility"> [hidden]</span>
17683
17684
17685
17686               <span class="entry_type_deprecated">[deprecated] </span>
17687
17688
17689
17690             </td> <!-- entry_type -->
17691
17692             <td class="entry_description">
17693               <p>A frame counter set by the framework.<wbr/> This value monotonically
17694 increases with every new result (that is,<wbr/> each new result has a unique
17695 frameCount value).<wbr/></p>
17696             </td>
17697
17698             <td class="entry_units">
17699               count of frames
17700             </td>
17701
17702             <td class="entry_range">
17703               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17704               <p>&gt; 0</p>
17705             </td>
17706
17707             <td class="entry_hal_version">
17708               <p>3.<wbr/>2</p>
17709             </td>
17710
17711             <td class="entry_tags">
17712             </td>
17713
17714           </tr>
17715           <tr class="entries_header">
17716             <th class="th_details" colspan="6">Details</th>
17717           </tr>
17718           <tr class="entry_cont">
17719             <td class="entry_details" colspan="6">
17720               <p>Reset on release()</p>
17721             </td>
17722           </tr>
17723
17724
17725           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17726            <!-- end of entry -->
17727         
17728                 
17729           <tr class="entry" id="dynamic_android.request.id">
17730             <td class="entry_name
17731              " rowspan="1">
17732               android.<wbr/>request.<wbr/>id
17733             </td>
17734             <td class="entry_type">
17735                 <span class="entry_type_name">int32</span>
17736
17737               <span class="entry_type_visibility"> [hidden]</span>
17738
17739
17740
17741
17742
17743
17744             </td> <!-- entry_type -->
17745
17746             <td class="entry_description">
17747               <p>An application-specified ID for the current
17748 request.<wbr/> Must be maintained unchanged in output
17749 frame</p>
17750             </td>
17751
17752             <td class="entry_units">
17753               arbitrary integer assigned by application
17754             </td>
17755
17756             <td class="entry_range">
17757               <p>Any int</p>
17758             </td>
17759
17760             <td class="entry_hal_version">
17761               <p>3.<wbr/>2</p>
17762             </td>
17763
17764             <td class="entry_tags">
17765               <ul class="entry_tags">
17766                   <li><a href="#tag_V1">V1</a></li>
17767               </ul>
17768             </td>
17769
17770           </tr>
17771
17772
17773           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17774            <!-- end of entry -->
17775         
17776                 
17777           <tr class="entry" id="dynamic_android.request.metadataMode">
17778             <td class="entry_name
17779              " rowspan="1">
17780               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
17781             </td>
17782             <td class="entry_type">
17783                 <span class="entry_type_name entry_type_name_enum">byte</span>
17784
17785               <span class="entry_type_visibility"> [system]</span>
17786
17787
17788
17789
17790
17791                 <ul class="entry_type_enum">
17792                   <li>
17793                     <span class="entry_type_enum_name">NONE (v3.2)</span>
17794                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
17795 for application-bound buffer data.<wbr/> If no
17796 application-bound streams exist,<wbr/> no frame should be
17797 placed in the output frame queue.<wbr/> If such streams
17798 exist,<wbr/> a frame should be placed on the output queue
17799 with null metadata but with the necessary output buffer
17800 information.<wbr/> Timestamp information should still be
17801 included with any output stream buffers</p></span>
17802                   </li>
17803                   <li>
17804                     <span class="entry_type_enum_name">FULL (v3.2)</span>
17805                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
17806 only be produced if they are separately
17807 enabled</p></span>
17808                   </li>
17809                 </ul>
17810
17811             </td> <!-- entry_type -->
17812
17813             <td class="entry_description">
17814               <p>How much metadata to produce on
17815 output</p>
17816             </td>
17817
17818             <td class="entry_units">
17819             </td>
17820
17821             <td class="entry_range">
17822             </td>
17823
17824             <td class="entry_hal_version">
17825               <p>3.<wbr/>2</p>
17826             </td>
17827
17828             <td class="entry_tags">
17829               <ul class="entry_tags">
17830                   <li><a href="#tag_FUTURE">FUTURE</a></li>
17831               </ul>
17832             </td>
17833
17834           </tr>
17835
17836
17837           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17838            <!-- end of entry -->
17839         
17840                 
17841           <tr class="entry" id="dynamic_android.request.outputStreams">
17842             <td class="entry_name
17843                 entry_name_deprecated
17844              " rowspan="3">
17845               android.<wbr/>request.<wbr/>output<wbr/>Streams
17846             </td>
17847             <td class="entry_type">
17848                 <span class="entry_type_name">int32</span>
17849                 <span class="entry_type_container">x</span>
17850
17851                 <span class="entry_type_array">
17852                   n
17853                 </span>
17854               <span class="entry_type_visibility"> [system]</span>
17855
17856
17857
17858               <span class="entry_type_deprecated">[deprecated] </span>
17859
17860
17861
17862             </td> <!-- entry_type -->
17863
17864             <td class="entry_description">
17865               <p>Lists which camera output streams image data
17866 from this capture must be sent to</p>
17867             </td>
17868
17869             <td class="entry_units">
17870               List of camera stream IDs
17871             </td>
17872
17873             <td class="entry_range">
17874               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17875               <p>List must only include streams that have been
17876 created</p>
17877             </td>
17878
17879             <td class="entry_hal_version">
17880               <p>3.<wbr/>2</p>
17881             </td>
17882
17883             <td class="entry_tags">
17884               <ul class="entry_tags">
17885                   <li><a href="#tag_HAL2">HAL2</a></li>
17886               </ul>
17887             </td>
17888
17889           </tr>
17890           <tr class="entries_header">
17891             <th class="th_details" colspan="6">Details</th>
17892           </tr>
17893           <tr class="entry_cont">
17894             <td class="entry_details" colspan="6">
17895               <p>If no output streams are listed,<wbr/> then the image
17896 data should simply be discarded.<wbr/> The image data must
17897 still be captured for metadata and statistics production,<wbr/>
17898 and the lens and flash must operate as requested.<wbr/></p>
17899             </td>
17900           </tr>
17901
17902
17903           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17904            <!-- end of entry -->
17905         
17906                 
17907           <tr class="entry" id="dynamic_android.request.pipelineDepth">
17908             <td class="entry_name
17909              " rowspan="5">
17910               android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
17911             </td>
17912             <td class="entry_type">
17913                 <span class="entry_type_name">byte</span>
17914
17915               <span class="entry_type_visibility"> [public]</span>
17916
17917
17918               <span class="entry_type_hwlevel">[legacy] </span>
17919
17920
17921
17922
17923             </td> <!-- entry_type -->
17924
17925             <td class="entry_description">
17926               <p>Specifies the number of pipeline stages the frame went
17927 through from when it was exposed to when the final completed result
17928 was available to the framework.<wbr/></p>
17929             </td>
17930
17931             <td class="entry_units">
17932             </td>
17933
17934             <td class="entry_range">
17935               <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
17936             </td>
17937
17938             <td class="entry_hal_version">
17939               <p>3.<wbr/>2</p>
17940             </td>
17941
17942             <td class="entry_tags">
17943             </td>
17944
17945           </tr>
17946           <tr class="entries_header">
17947             <th class="th_details" colspan="6">Details</th>
17948           </tr>
17949           <tr class="entry_cont">
17950             <td class="entry_details" colspan="6">
17951               <p>Depending on what settings are used in the request,<wbr/> and
17952 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
17953 and some pipeline stages skipped.<wbr/></p>
17954 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
17955             </td>
17956           </tr>
17957
17958           <tr class="entries_header">
17959             <th class="th_details" colspan="6">HAL Implementation Details</th>
17960           </tr>
17961           <tr class="entry_cont">
17962             <td class="entry_details" colspan="6">
17963               <p>This value must always represent the accurate count of how many
17964 pipeline stages were actually used.<wbr/></p>
17965             </td>
17966           </tr>
17967
17968           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17969            <!-- end of entry -->
17970         
17971         
17972
17973       <!-- end of kind -->
17974       </tbody>
17975
17976   <!-- end of section -->
17977   <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
17978
17979
17980       <tr><td colspan="7" class="kind">controls</td></tr>
17981
17982       <thead class="entries_header">
17983         <tr>
17984           <th class="th_name">Property Name</th>
17985           <th class="th_type">Type</th>
17986           <th class="th_description">Description</th>
17987           <th class="th_units">Units</th>
17988           <th class="th_range">Range</th>
17989           <th class="th_hal_version">Initial HIDL HAL version</th>
17990           <th class="th_tags">Tags</th>
17991         </tr>
17992       </thead>
17993
17994       <tbody>
17995
17996         
17997
17998         
17999
18000         
18001
18002         
18003
18004                 
18005           <tr class="entry" id="controls_android.scaler.cropRegion">
18006             <td class="entry_name
18007              " rowspan="5">
18008               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
18009             </td>
18010             <td class="entry_type">
18011                 <span class="entry_type_name">int32</span>
18012                 <span class="entry_type_container">x</span>
18013
18014                 <span class="entry_type_array">
18015                   4
18016                 </span>
18017               <span class="entry_type_visibility"> [public as rectangle]</span>
18018
18019
18020               <span class="entry_type_hwlevel">[legacy] </span>
18021
18022
18023
18024
18025             </td> <!-- entry_type -->
18026
18027             <td class="entry_description">
18028               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
18029             </td>
18030
18031             <td class="entry_units">
18032               Pixel coordinates relative to
18033           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
18034             </td>
18035
18036             <td class="entry_range">
18037             </td>
18038
18039             <td class="entry_hal_version">
18040               <p>3.<wbr/>2</p>
18041             </td>
18042
18043             <td class="entry_tags">
18044               <ul class="entry_tags">
18045                   <li><a href="#tag_BC">BC</a></li>
18046               </ul>
18047             </td>
18048
18049           </tr>
18050           <tr class="entries_header">
18051             <th class="th_details" colspan="6">Details</th>
18052           </tr>
18053           <tr class="entry_cont">
18054             <td class="entry_details" colspan="6">
18055               <p>This control can be used to implement digital zoom.<wbr/></p>
18056 <p>The crop region coordinate system is based off
18057 <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
18058 top-left corner of the sensor active array.<wbr/></p>
18059 <p>Output streams use this rectangle to produce their output,<wbr/>
18060 cropping to a smaller region if necessary to maintain the
18061 stream's aspect ratio,<wbr/> then scaling the sensor input to
18062 match the output's configured resolution.<wbr/></p>
18063 <p>The crop region is applied after the RAW to other color
18064 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
18065 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
18066 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
18067 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
18068 be done to maximize the final pixel area of the stream.<wbr/></p>
18069 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
18070 ratio,<wbr/> then 4:3 streams will use the exact crop
18071 region.<wbr/> 16:9 streams will further crop vertically
18072 (letterbox).<wbr/></p>
18073 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
18074 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
18075 streams will match exactly.<wbr/> These additional crops will
18076 be centered within the crop region.<wbr/></p>
18077 <p>The width and height of the crop region cannot
18078 be set to be smaller than
18079 <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
18080 <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>
18081 <p>The camera device may adjust the crop region to account
18082 for rounding and other hardware requirements; the final
18083 crop region used will be included in the output capture
18084 result.<wbr/></p>
18085             </td>
18086           </tr>
18087
18088           <tr class="entries_header">
18089             <th class="th_details" colspan="6">HAL Implementation Details</th>
18090           </tr>
18091           <tr class="entry_cont">
18092             <td class="entry_details" colspan="6">
18093               <p>The output streams must maintain square pixels at all
18094 times,<wbr/> no matter what the relative aspect ratios of the
18095 crop region and the stream are.<wbr/>  Negative values for
18096 corner are allowed for raw output if full pixel array is
18097 larger than active pixel array.<wbr/> Width and height may be
18098 rounded to nearest larger supportable width,<wbr/> especially
18099 for raw output,<wbr/> where only a few fixed scales may be
18100 possible.<wbr/></p>
18101 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
18102 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
18103 <ul>
18104 <li>
18105 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
18106 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
18107 <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>
18108 <ol>
18109 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
18110 cropped pixel area by (tx,<wbr/> ty),<wbr/>
18111 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
18112 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
18113 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
18114 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
18115 <li>Scale the width and height of requested cropRegion with scaling factor of
18116 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
18117 respectively.<wbr/>
18118 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
18119 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
18120 follow the general cropping rule for this new cropRegion and effective active
18121 array size.<wbr/></li>
18122 </ol>
18123 </li>
18124 <li>
18125 <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/>
18126 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
18127 The reported cropRegion may be slightly different with the requested cropRegion since
18128 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
18129 hardware limitations.<wbr/></p>
18130 </li>
18131 </ul>
18132 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
18133             </td>
18134           </tr>
18135
18136           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18137            <!-- end of entry -->
18138         
18139         
18140
18141       <!-- end of kind -->
18142       </tbody>
18143       <tr><td colspan="7" class="kind">static</td></tr>
18144
18145       <thead class="entries_header">
18146         <tr>
18147           <th class="th_name">Property Name</th>
18148           <th class="th_type">Type</th>
18149           <th class="th_description">Description</th>
18150           <th class="th_units">Units</th>
18151           <th class="th_range">Range</th>
18152           <th class="th_hal_version">Initial HIDL HAL version</th>
18153           <th class="th_tags">Tags</th>
18154         </tr>
18155       </thead>
18156
18157       <tbody>
18158
18159         
18160
18161         
18162
18163         
18164
18165         
18166
18167                 
18168           <tr class="entry" id="static_android.scaler.availableFormats">
18169             <td class="entry_name
18170                 entry_name_deprecated
18171              " rowspan="5">
18172               android.<wbr/>scaler.<wbr/>available<wbr/>Formats
18173             </td>
18174             <td class="entry_type">
18175                 <span class="entry_type_name entry_type_name_enum">int32</span>
18176                 <span class="entry_type_container">x</span>
18177
18178                 <span class="entry_type_array">
18179                   n
18180                 </span>
18181               <span class="entry_type_visibility"> [hidden as imageFormat]</span>
18182
18183
18184
18185               <span class="entry_type_deprecated">[deprecated] </span>
18186
18187
18188                 <ul class="entry_type_enum">
18189                   <li>
18190                     <span class="entry_type_enum_name">RAW16 (v3.2)</span>
18191                     <span class="entry_type_enum_optional">[optional]</span>
18192                     <span class="entry_type_enum_value">0x20</span>
18193                     <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
18194 buffers with 16-bit pixels.<wbr/></p>
18195 <p>Buffers of this format are typically expected to have a
18196 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
18197 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
18198 CFAs that are not representable by a format in
18199 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
18200 use this format.<wbr/></p>
18201 <p>Buffers of this format will also follow the constraints given for
18202 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
18203 <p>This format is intended to give users access to the full contents
18204 of the buffers coming directly from the image sensor prior to any
18205 cropping or scaling operations,<wbr/> and all coordinate systems for
18206 metadata used for this format are relative to the size of the
18207 active region of the image sensor before any geometric distortion
18208 correction has been applied (i.<wbr/>e.<wbr/>
18209 <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
18210 dimensions for this format are limited to the full dimensions of
18211 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
18212 <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
18213 only supported output size).<wbr/></p>
18214 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
18215 the full set of performance guarantees.<wbr/></p></span>
18216                   </li>
18217                   <li>
18218                     <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span>
18219                     <span class="entry_type_enum_optional">[optional]</span>
18220                     <span class="entry_type_enum_value">0x24</span>
18221                     <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
18222 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
18223 as referred in public API) is a format for raw image buffers
18224 coming from an image sensor.<wbr/></p>
18225 <p>The actual structure of buffers of this format is
18226 platform-specific,<wbr/> but must follow several constraints:</p>
18227 <ol>
18228 <li>No image post-processing operations may have been applied to
18229 buffers of this type.<wbr/> These buffers contain raw image data coming
18230 directly from the image sensor.<wbr/></li>
18231 <li>If a buffer of this format is passed to the camera device for
18232 reprocessing,<wbr/> the resulting images will be identical to the images
18233 produced if the buffer had come directly from the sensor and was
18234 processed with the same settings.<wbr/></li>
18235 </ol>
18236 <p>The intended use for this format is to allow access to the native
18237 raw format buffers coming directly from the camera sensor without
18238 any additional conversions or decrease in framerate.<wbr/></p>
18239 <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
18240 performance guarantees.<wbr/></p></span>
18241                   </li>
18242                   <li>
18243                     <span class="entry_type_enum_name">YV12 (v3.2)</span>
18244                     <span class="entry_type_enum_optional">[optional]</span>
18245                     <span class="entry_type_enum_value">0x32315659</span>
18246                     <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
18247                   </li>
18248                   <li>
18249                     <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span>
18250                     <span class="entry_type_enum_optional">[optional]</span>
18251                     <span class="entry_type_enum_value">0x11</span>
18252                     <span class="entry_type_enum_notes"><p>NV21</p></span>
18253                   </li>
18254                   <li>
18255                     <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span>
18256                     <span class="entry_type_enum_value">0x22</span>
18257                     <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
18258                   </li>
18259                   <li>
18260                     <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span>
18261                     <span class="entry_type_enum_value">0x23</span>
18262                     <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
18263                   </li>
18264                   <li>
18265                     <span class="entry_type_enum_name">BLOB (v3.2)</span>
18266                     <span class="entry_type_enum_value">0x21</span>
18267                     <span class="entry_type_enum_notes"><p>JPEG format</p></span>
18268                   </li>
18269                 </ul>
18270
18271             </td> <!-- entry_type -->
18272
18273             <td class="entry_description">
18274               <p>The list of image formats that are supported by this
18275 camera device for output streams.<wbr/></p>
18276             </td>
18277
18278             <td class="entry_units">
18279             </td>
18280
18281             <td class="entry_range">
18282               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18283             </td>
18284
18285             <td class="entry_hal_version">
18286               <p>3.<wbr/>2</p>
18287             </td>
18288
18289             <td class="entry_tags">
18290               <ul class="entry_tags">
18291                   <li><a href="#tag_BC">BC</a></li>
18292               </ul>
18293             </td>
18294
18295           </tr>
18296           <tr class="entries_header">
18297             <th class="th_details" colspan="6">Details</th>
18298           </tr>
18299           <tr class="entry_cont">
18300             <td class="entry_details" colspan="6">
18301               <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
18302 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
18303             </td>
18304           </tr>
18305
18306           <tr class="entries_header">
18307             <th class="th_details" colspan="6">HAL Implementation Details</th>
18308           </tr>
18309           <tr class="entry_cont">
18310             <td class="entry_details" colspan="6">
18311               <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
18312 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
18313 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
18314 gralloc module will select a format based on the usage flags provided
18315 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
18316 usually used by preview and recording streams,<wbr/> where the application doesn't
18317 need access the image data.<wbr/></p>
18318 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
18319 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
18320 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
18321 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
18322 recommended that any information used by the camera device when
18323 processing images is fully expressed by the result metadata
18324 for that image buffer.<wbr/></p>
18325             </td>
18326           </tr>
18327
18328           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18329            <!-- end of entry -->
18330         
18331                 
18332           <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
18333             <td class="entry_name
18334                 entry_name_deprecated
18335              " rowspan="3">
18336               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
18337             </td>
18338             <td class="entry_type">
18339                 <span class="entry_type_name">int64</span>
18340                 <span class="entry_type_container">x</span>
18341
18342                 <span class="entry_type_array">
18343                   n
18344                 </span>
18345               <span class="entry_type_visibility"> [hidden]</span>
18346
18347
18348
18349               <span class="entry_type_deprecated">[deprecated] </span>
18350
18351
18352
18353             </td> <!-- entry_type -->
18354
18355             <td class="entry_description">
18356               <p>The minimum frame duration that is supported
18357 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
18358             </td>
18359
18360             <td class="entry_units">
18361               Nanoseconds
18362             </td>
18363
18364             <td class="entry_range">
18365               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18366               <p>TODO: Remove property.<wbr/></p>
18367             </td>
18368
18369             <td class="entry_hal_version">
18370               <p>3.<wbr/>2</p>
18371             </td>
18372
18373             <td class="entry_tags">
18374               <ul class="entry_tags">
18375                   <li><a href="#tag_BC">BC</a></li>
18376               </ul>
18377             </td>
18378
18379           </tr>
18380           <tr class="entries_header">
18381             <th class="th_details" colspan="6">Details</th>
18382           </tr>
18383           <tr class="entry_cont">
18384             <td class="entry_details" colspan="6">
18385               <p>This corresponds to the minimum steady-state frame duration when only
18386 that JPEG stream is active and captured in a burst,<wbr/> with all
18387 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
18388 <p>When multiple streams are configured,<wbr/> the minimum
18389 frame duration will be &gt;= max(individual stream min
18390 durations)</p>
18391             </td>
18392           </tr>
18393
18394
18395           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18396            <!-- end of entry -->
18397         
18398                 
18399           <tr class="entry" id="static_android.scaler.availableJpegSizes">
18400             <td class="entry_name
18401                 entry_name_deprecated
18402              " rowspan="5">
18403               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
18404             </td>
18405             <td class="entry_type">
18406                 <span class="entry_type_name">int32</span>
18407                 <span class="entry_type_container">x</span>
18408
18409                 <span class="entry_type_array">
18410                   n x 2
18411                 </span>
18412               <span class="entry_type_visibility"> [hidden as size]</span>
18413
18414
18415
18416               <span class="entry_type_deprecated">[deprecated] </span>
18417
18418
18419
18420             </td> <!-- entry_type -->
18421
18422             <td class="entry_description">
18423               <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
18424             </td>
18425
18426             <td class="entry_units">
18427             </td>
18428
18429             <td class="entry_range">
18430               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18431               <p>TODO: Remove property.<wbr/></p>
18432             </td>
18433
18434             <td class="entry_hal_version">
18435               <p>3.<wbr/>2</p>
18436             </td>
18437
18438             <td class="entry_tags">
18439               <ul class="entry_tags">
18440                   <li><a href="#tag_BC">BC</a></li>
18441               </ul>
18442             </td>
18443
18444           </tr>
18445           <tr class="entries_header">
18446             <th class="th_details" colspan="6">Details</th>
18447           </tr>
18448           <tr class="entry_cont">
18449             <td class="entry_details" colspan="6">
18450               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
18451 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>
18452             </td>
18453           </tr>
18454
18455           <tr class="entries_header">
18456             <th class="th_details" colspan="6">HAL Implementation Details</th>
18457           </tr>
18458           <tr class="entry_cont">
18459             <td class="entry_details" colspan="6">
18460               <p>The HAL must include sensor maximum resolution
18461 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
18462 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
18463             </td>
18464           </tr>
18465
18466           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18467            <!-- end of entry -->
18468         
18469                 
18470           <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
18471             <td class="entry_name
18472              " rowspan="3">
18473               android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
18474             </td>
18475             <td class="entry_type">
18476                 <span class="entry_type_name">float</span>
18477
18478               <span class="entry_type_visibility"> [public]</span>
18479
18480
18481               <span class="entry_type_hwlevel">[legacy] </span>
18482
18483
18484
18485
18486             </td> <!-- entry_type -->
18487
18488             <td class="entry_description">
18489               <p>The maximum ratio between both active area width
18490 and crop region width,<wbr/> and active area height and
18491 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18492             </td>
18493
18494             <td class="entry_units">
18495               Zoom scale factor
18496             </td>
18497
18498             <td class="entry_range">
18499               <p>&gt;=1</p>
18500             </td>
18501
18502             <td class="entry_hal_version">
18503               <p>3.<wbr/>2</p>
18504             </td>
18505
18506             <td class="entry_tags">
18507               <ul class="entry_tags">
18508                   <li><a href="#tag_BC">BC</a></li>
18509               </ul>
18510             </td>
18511
18512           </tr>
18513           <tr class="entries_header">
18514             <th class="th_details" colspan="6">Details</th>
18515           </tr>
18516           <tr class="entry_cont">
18517             <td class="entry_details" colspan="6">
18518               <p>This represents the maximum amount of zooming possible by
18519 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
18520 window size.<wbr/></p>
18521 <p>Crop regions that have a width or height that is smaller
18522 than this ratio allows will be rounded up to the minimum
18523 allowed size by the camera device.<wbr/></p>
18524             </td>
18525           </tr>
18526
18527
18528           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18529            <!-- end of entry -->
18530         
18531                 
18532           <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
18533             <td class="entry_name
18534                 entry_name_deprecated
18535              " rowspan="3">
18536               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
18537             </td>
18538             <td class="entry_type">
18539                 <span class="entry_type_name">int64</span>
18540                 <span class="entry_type_container">x</span>
18541
18542                 <span class="entry_type_array">
18543                   n
18544                 </span>
18545               <span class="entry_type_visibility"> [hidden]</span>
18546
18547
18548
18549               <span class="entry_type_deprecated">[deprecated] </span>
18550
18551
18552
18553             </td> <!-- entry_type -->
18554
18555             <td class="entry_description">
18556               <p>For each available processed output size (defined in
18557 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
18558 minimum supportable frame duration for that size.<wbr/></p>
18559             </td>
18560
18561             <td class="entry_units">
18562               Nanoseconds
18563             </td>
18564
18565             <td class="entry_range">
18566               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18567             </td>
18568
18569             <td class="entry_hal_version">
18570               <p>3.<wbr/>2</p>
18571             </td>
18572
18573             <td class="entry_tags">
18574               <ul class="entry_tags">
18575                   <li><a href="#tag_BC">BC</a></li>
18576               </ul>
18577             </td>
18578
18579           </tr>
18580           <tr class="entries_header">
18581             <th class="th_details" colspan="6">Details</th>
18582           </tr>
18583           <tr class="entry_cont">
18584             <td class="entry_details" colspan="6">
18585               <p>This should correspond to the frame duration when only that processed
18586 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18587 set to FAST.<wbr/></p>
18588 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
18589 be &gt;= max(individual stream min durations).<wbr/></p>
18590             </td>
18591           </tr>
18592
18593
18594           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18595            <!-- end of entry -->
18596         
18597                 
18598           <tr class="entry" id="static_android.scaler.availableProcessedSizes">
18599             <td class="entry_name
18600                 entry_name_deprecated
18601              " rowspan="5">
18602               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
18603             </td>
18604             <td class="entry_type">
18605                 <span class="entry_type_name">int32</span>
18606                 <span class="entry_type_container">x</span>
18607
18608                 <span class="entry_type_array">
18609                   n x 2
18610                 </span>
18611               <span class="entry_type_visibility"> [hidden as size]</span>
18612
18613
18614
18615               <span class="entry_type_deprecated">[deprecated] </span>
18616
18617
18618
18619             </td> <!-- entry_type -->
18620
18621             <td class="entry_description">
18622               <p>The resolutions available for use with
18623 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
18624 platform opaque YUV/<wbr/>RGB streams to the GPU or video
18625 encoders.<wbr/></p>
18626             </td>
18627
18628             <td class="entry_units">
18629             </td>
18630
18631             <td class="entry_range">
18632               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18633             </td>
18634
18635             <td class="entry_hal_version">
18636               <p>3.<wbr/>2</p>
18637             </td>
18638
18639             <td class="entry_tags">
18640               <ul class="entry_tags">
18641                   <li><a href="#tag_BC">BC</a></li>
18642               </ul>
18643             </td>
18644
18645           </tr>
18646           <tr class="entries_header">
18647             <th class="th_details" colspan="6">Details</th>
18648           </tr>
18649           <tr class="entry_cont">
18650             <td class="entry_details" colspan="6">
18651               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
18652 <p>For a given use case,<wbr/> the actual maximum supported resolution
18653 may be lower than what is listed here,<wbr/> depending on the destination
18654 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18655 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18656 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18657 can provide.<wbr/></p>
18658 <p>Please reference the documentation for the image data destination to
18659 check if it limits the maximum size for image data.<wbr/></p>
18660             </td>
18661           </tr>
18662
18663           <tr class="entries_header">
18664             <th class="th_details" colspan="6">HAL Implementation Details</th>
18665           </tr>
18666           <tr class="entry_cont">
18667             <td class="entry_details" colspan="6">
18668               <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/>
18669 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>
18670 and each below resolution if it is smaller than or equal to the sensor
18671 maximum resolution (if they are not listed in JPEG sizes already):</p>
18672 <ul>
18673 <li>240p (320 x 240)</li>
18674 <li>480p (640 x 480)</li>
18675 <li>720p (1280 x 720)</li>
18676 <li>1080p (1920 x 1080)</li>
18677 </ul>
18678 <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/>
18679 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
18680             </td>
18681           </tr>
18682
18683           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18684            <!-- end of entry -->
18685         
18686                 
18687           <tr class="entry" id="static_android.scaler.availableRawMinDurations">
18688             <td class="entry_name
18689                 entry_name_deprecated
18690              " rowspan="3">
18691               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
18692             </td>
18693             <td class="entry_type">
18694                 <span class="entry_type_name">int64</span>
18695                 <span class="entry_type_container">x</span>
18696
18697                 <span class="entry_type_array">
18698                   n
18699                 </span>
18700               <span class="entry_type_visibility"> [system]</span>
18701
18702
18703
18704               <span class="entry_type_deprecated">[deprecated] </span>
18705
18706
18707
18708             </td> <!-- entry_type -->
18709
18710             <td class="entry_description">
18711               <p>For each available raw output size (defined in
18712 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
18713 supportable frame duration for that size.<wbr/></p>
18714             </td>
18715
18716             <td class="entry_units">
18717               Nanoseconds
18718             </td>
18719
18720             <td class="entry_range">
18721               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18722             </td>
18723
18724             <td class="entry_hal_version">
18725               <p>3.<wbr/>2</p>
18726             </td>
18727
18728             <td class="entry_tags">
18729               <ul class="entry_tags">
18730                   <li><a href="#tag_BC">BC</a></li>
18731               </ul>
18732             </td>
18733
18734           </tr>
18735           <tr class="entries_header">
18736             <th class="th_details" colspan="6">Details</th>
18737           </tr>
18738           <tr class="entry_cont">
18739             <td class="entry_details" colspan="6">
18740               <p>Should correspond to the frame duration when only the raw stream is
18741 active.<wbr/></p>
18742 <p>When multiple streams are configured,<wbr/> the minimum
18743 frame duration will be &gt;= max(individual stream min
18744 durations)</p>
18745             </td>
18746           </tr>
18747
18748
18749           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18750            <!-- end of entry -->
18751         
18752                 
18753           <tr class="entry" id="static_android.scaler.availableRawSizes">
18754             <td class="entry_name
18755                 entry_name_deprecated
18756              " rowspan="1">
18757               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
18758             </td>
18759             <td class="entry_type">
18760                 <span class="entry_type_name">int32</span>
18761                 <span class="entry_type_container">x</span>
18762
18763                 <span class="entry_type_array">
18764                   n x 2
18765                 </span>
18766               <span class="entry_type_visibility"> [system as size]</span>
18767
18768
18769
18770               <span class="entry_type_deprecated">[deprecated] </span>
18771
18772
18773
18774             </td> <!-- entry_type -->
18775
18776             <td class="entry_description">
18777               <p>The resolutions available for use with raw
18778 sensor output streams,<wbr/> listed as width,<wbr/>
18779 height</p>
18780             </td>
18781
18782             <td class="entry_units">
18783             </td>
18784
18785             <td class="entry_range">
18786               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18787             </td>
18788
18789             <td class="entry_hal_version">
18790               <p>3.<wbr/>2</p>
18791             </td>
18792
18793             <td class="entry_tags">
18794             </td>
18795
18796           </tr>
18797
18798
18799           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18800            <!-- end of entry -->
18801         
18802                 
18803           <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
18804             <td class="entry_name
18805              " rowspan="5">
18806               android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
18807             </td>
18808             <td class="entry_type">
18809                 <span class="entry_type_name">int32</span>
18810
18811               <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
18812
18813
18814
18815
18816
18817
18818             </td> <!-- entry_type -->
18819
18820             <td class="entry_description">
18821               <p>The mapping of image formats that are supported by this
18822 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
18823             </td>
18824
18825             <td class="entry_units">
18826             </td>
18827
18828             <td class="entry_range">
18829             </td>
18830
18831             <td class="entry_hal_version">
18832               <p>3.<wbr/>2</p>
18833             </td>
18834
18835             <td class="entry_tags">
18836               <ul class="entry_tags">
18837                   <li><a href="#tag_REPROC">REPROC</a></li>
18838               </ul>
18839             </td>
18840
18841           </tr>
18842           <tr class="entries_header">
18843             <th class="th_details" colspan="6">Details</th>
18844           </tr>
18845           <tr class="entry_cont">
18846             <td class="entry_details" colspan="6">
18847               <p>All camera devices with at least 1
18848 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
18849 available input format.<wbr/></p>
18850 <p>The camera device will support the following map of formats,<wbr/>
18851 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
18852 <table>
18853 <thead>
18854 <tr>
18855 <th align="left">Input Format</th>
18856 <th align="left">Output Format</th>
18857 <th align="left">Capability</th>
18858 </tr>
18859 </thead>
18860 <tbody>
18861 <tr>
18862 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18863 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18864 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18865 </tr>
18866 <tr>
18867 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18868 <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>
18869 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18870 </tr>
18871 <tr>
18872 <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>
18873 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18874 <td align="left">YUV_<wbr/>REPROCESSING</td>
18875 </tr>
18876 <tr>
18877 <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>
18878 <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>
18879 <td align="left">YUV_<wbr/>REPROCESSING</td>
18880 </tr>
18881 </tbody>
18882 </table>
18883 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
18884 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
18885 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
18886 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
18887 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>
18888 <p>Attempting to configure an input stream with output streams not
18889 listed as available in this map is not valid.<wbr/></p>
18890             </td>
18891           </tr>
18892
18893           <tr class="entries_header">
18894             <th class="th_details" colspan="6">HAL Implementation Details</th>
18895           </tr>
18896           <tr class="entry_cont">
18897             <td class="entry_details" colspan="6">
18898               <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
18899 of the image format enumerations.<wbr/> The PRIVATE format refers to the
18900 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
18901 the actual format by using the gralloc usage flags.<wbr/>
18902 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
18903 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
18904 See camera3.<wbr/>h for more details.<wbr/></p>
18905 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
18906 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
18907 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
18908 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
18909 <p>A code sample to read/<wbr/>write this encoding (with a device that
18910 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
18911 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
18912 <pre><code>//<wbr/> reading
18913 int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
18914 for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
18915     int32_<wbr/>t format = contents[i++];
18916     int32_<wbr/>t length = contents[i++];
18917     int32_<wbr/>t output_<wbr/>formats[length];
18918     memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
18919            length * sizeof(int32_<wbr/>t));
18920     i += length;
18921 }
18922
18923 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
18924 int32_<wbr/>t[] contents = {
18925   IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18926   YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18927 };
18928 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
18929       sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
18930 </code></pre>
18931 <p>If the HAL claims to support any of the capabilities listed in the
18932 above details,<wbr/> then it must also support all the input-output
18933 combinations listed for that capability.<wbr/> It can optionally support
18934 additional formats if it so chooses.<wbr/></p>
18935             </td>
18936           </tr>
18937
18938           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18939            <!-- end of entry -->
18940         
18941                 
18942           <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
18943             <td class="entry_name
18944              " rowspan="5">
18945               android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
18946             </td>
18947             <td class="entry_type">
18948                 <span class="entry_type_name entry_type_name_enum">int32</span>
18949                 <span class="entry_type_container">x</span>
18950
18951                 <span class="entry_type_array">
18952                   n x 4
18953                 </span>
18954               <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
18955
18956
18957               <span class="entry_type_hwlevel">[legacy] </span>
18958
18959
18960
18961                 <ul class="entry_type_enum">
18962                   <li>
18963                     <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
18964                   </li>
18965                   <li>
18966                     <span class="entry_type_enum_name">INPUT (v3.2)</span>
18967                   </li>
18968                 </ul>
18969
18970             </td> <!-- entry_type -->
18971
18972             <td class="entry_description">
18973               <p>The available stream configurations that this
18974 camera device supports
18975 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
18976             </td>
18977
18978             <td class="entry_units">
18979             </td>
18980
18981             <td class="entry_range">
18982             </td>
18983
18984             <td class="entry_hal_version">
18985               <p>3.<wbr/>2</p>
18986             </td>
18987
18988             <td class="entry_tags">
18989             </td>
18990
18991           </tr>
18992           <tr class="entries_header">
18993             <th class="th_details" colspan="6">Details</th>
18994           </tr>
18995           <tr class="entry_cont">
18996             <td class="entry_details" colspan="6">
18997               <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
18998 tuples.<wbr/></p>
18999 <p>For a given use case,<wbr/> the actual maximum supported resolution
19000 may be lower than what is listed here,<wbr/> depending on the destination
19001 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19002 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19003 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19004 can provide.<wbr/></p>
19005 <p>Please reference the documentation for the image data destination to
19006 check if it limits the maximum size for image data.<wbr/></p>
19007 <p>Not all output formats may be supported in a configuration with
19008 an input stream of a particular format.<wbr/> For more details,<wbr/> see
19009 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
19010 <p>The following table describes the minimum required output stream
19011 configurations based on the hardware level
19012 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19013 <table>
19014 <thead>
19015 <tr>
19016 <th align="center">Format</th>
19017 <th align="center">Size</th>
19018 <th align="center">Hardware Level</th>
19019 <th align="center">Notes</th>
19020 </tr>
19021 </thead>
19022 <tbody>
19023 <tr>
19024 <td align="center">JPEG</td>
19025 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
19026 <td align="center">Any</td>
19027 <td align="center"></td>
19028 </tr>
19029 <tr>
19030 <td align="center">JPEG</td>
19031 <td align="center">1920x1080 (1080p)</td>
19032 <td align="center">Any</td>
19033 <td align="center">if 1080p &lt;= activeArraySize</td>
19034 </tr>
19035 <tr>
19036 <td align="center">JPEG</td>
19037 <td align="center">1280x720 (720)</td>
19038 <td align="center">Any</td>
19039 <td align="center">if 720p &lt;= activeArraySize</td>
19040 </tr>
19041 <tr>
19042 <td align="center">JPEG</td>
19043 <td align="center">640x480 (480p)</td>
19044 <td align="center">Any</td>
19045 <td align="center">if 480p &lt;= activeArraySize</td>
19046 </tr>
19047 <tr>
19048 <td align="center">JPEG</td>
19049 <td align="center">320x240 (240p)</td>
19050 <td align="center">Any</td>
19051 <td align="center">if 240p &lt;= activeArraySize</td>
19052 </tr>
19053 <tr>
19054 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
19055 <td align="center">all output sizes available for JPEG</td>
19056 <td align="center">FULL</td>
19057 <td align="center"></td>
19058 </tr>
19059 <tr>
19060 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
19061 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
19062 <td align="center">LIMITED</td>
19063 <td align="center"></td>
19064 </tr>
19065 <tr>
19066 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
19067 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
19068 <td align="center">Any</td>
19069 <td align="center"></td>
19070 </tr>
19071 </tbody>
19072 </table>
19073 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
19074 mandatory stream configurations on a per-capability basis.<wbr/></p>
19075             </td>
19076           </tr>
19077
19078           <tr class="entries_header">
19079             <th class="th_details" colspan="6">HAL Implementation Details</th>
19080           </tr>
19081           <tr class="entry_cont">
19082             <td class="entry_details" colspan="6">
19083               <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
19084 of sensor maximum resolution for JPEG formats (regardless of hardware
19085 level).<wbr/></p>
19086 <p>(The following is a rewording of the above required table):</p>
19087 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
19088 <ul>
19089 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
19090 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
19091 (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/>
19092 it does not have to be included in the supported JPEG sizes.<wbr/></li>
19093 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
19094 the dimensions being a multiple of 16.<wbr/></li>
19095 </ul>
19096 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
19097 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
19098 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
19099 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
19100 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
19101 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
19102 3264x2448.<wbr/></p>
19103 <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/>
19104 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19105 here as output streams.<wbr/></p>
19106 <p>It must also include each below resolution if it is smaller than or
19107 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19108 formats),<wbr/> as output streams:</p>
19109 <ul>
19110 <li>240p (320 x 240)</li>
19111 <li>480p (640 x 480)</li>
19112 <li>720p (1280 x 720)</li>
19113 <li>1080p (1920 x 1080)</li>
19114 </ul>
19115 <p>For LIMITED capability devices
19116 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19117 the HAL only has to list up to the maximum video size
19118 supported by the device.<wbr/></p>
19119 <p>Regardless of hardware level,<wbr/> every output resolution available for
19120 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19121 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19122 <ul>
19123 <li>availableFormats</li>
19124 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19125 </ul>
19126             </td>
19127           </tr>
19128
19129           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19130            <!-- end of entry -->
19131         
19132                 
19133           <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
19134             <td class="entry_name
19135              " rowspan="3">
19136               android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
19137             </td>
19138             <td class="entry_type">
19139                 <span class="entry_type_name">int64</span>
19140                 <span class="entry_type_container">x</span>
19141
19142                 <span class="entry_type_array">
19143                   4 x n
19144                 </span>
19145               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
19146
19147
19148               <span class="entry_type_hwlevel">[legacy] </span>
19149
19150
19151
19152
19153             </td> <!-- entry_type -->
19154
19155             <td class="entry_description">
19156               <p>This lists the minimum frame duration for each
19157 format/<wbr/>size combination.<wbr/></p>
19158             </td>
19159
19160             <td class="entry_units">
19161               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
19162             </td>
19163
19164             <td class="entry_range">
19165             </td>
19166
19167             <td class="entry_hal_version">
19168               <p>3.<wbr/>2</p>
19169             </td>
19170
19171             <td class="entry_tags">
19172               <ul class="entry_tags">
19173                   <li><a href="#tag_V1">V1</a></li>
19174               </ul>
19175             </td>
19176
19177           </tr>
19178           <tr class="entries_header">
19179             <th class="th_details" colspan="6">Details</th>
19180           </tr>
19181           <tr class="entry_cont">
19182             <td class="entry_details" colspan="6">
19183               <p>This should correspond to the frame duration when only that
19184 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
19185 set to either OFF or FAST.<wbr/></p>
19186 <p>When multiple streams are used in a request,<wbr/> the minimum frame
19187 duration will be max(individual stream min durations).<wbr/></p>
19188 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
19189 is the same regardless of whether the stream is input or output.<wbr/></p>
19190 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
19191 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
19192 calculating the max frame rate.<wbr/></p>
19193             </td>
19194           </tr>
19195
19196
19197           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19198            <!-- end of entry -->
19199         
19200                 
19201           <tr class="entry" id="static_android.scaler.availableStallDurations">
19202             <td class="entry_name
19203              " rowspan="5">
19204               android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
19205             </td>
19206             <td class="entry_type">
19207                 <span class="entry_type_name">int64</span>
19208                 <span class="entry_type_container">x</span>
19209
19210                 <span class="entry_type_array">
19211                   4 x n
19212                 </span>
19213               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
19214
19215
19216               <span class="entry_type_hwlevel">[legacy] </span>
19217
19218
19219
19220
19221             </td> <!-- entry_type -->
19222
19223             <td class="entry_description">
19224               <p>This lists the maximum stall duration for each
19225 output format/<wbr/>size combination.<wbr/></p>
19226             </td>
19227
19228             <td class="entry_units">
19229               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
19230             </td>
19231
19232             <td class="entry_range">
19233             </td>
19234
19235             <td class="entry_hal_version">
19236               <p>3.<wbr/>2</p>
19237             </td>
19238
19239             <td class="entry_tags">
19240               <ul class="entry_tags">
19241                   <li><a href="#tag_V1">V1</a></li>
19242               </ul>
19243             </td>
19244
19245           </tr>
19246           <tr class="entries_header">
19247             <th class="th_details" colspan="6">Details</th>
19248           </tr>
19249           <tr class="entry_cont">
19250             <td class="entry_details" colspan="6">
19251               <p>A stall duration is how much extra time would get added
19252 to the normal minimum frame duration for a repeating request
19253 that has streams with non-zero stall.<wbr/></p>
19254 <p>For example,<wbr/> consider JPEG captures which have the following
19255 characteristics:</p>
19256 <ul>
19257 <li>JPEG streams act like processed YUV streams in requests for which
19258 they are not included; in requests in which they are directly
19259 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
19260 JPEG stream requires the underlying YUV data to always be ready for
19261 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
19262 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
19263 <li>The JPEG processor can run concurrently to the rest of the camera
19264 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
19265 </ul>
19266 <p>In other words,<wbr/> using a repeating YUV request would result
19267 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
19268 JPEG request is submitted periodically,<wbr/> the frame rate will stay
19269 at 30 FPS (as long as we wait for the previous JPEG to return each
19270 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
19271 the frame rate will drop from 30 FPS.<wbr/></p>
19272 <p>In general,<wbr/> submitting a new request with a non-0 stall time
19273 stream will <em>not</em> cause a frame rate drop unless there are still
19274 outstanding buffers for that stream from previous requests.<wbr/></p>
19275 <p>Submitting a repeating request with streams (call this <code>S</code>)
19276 is the same as setting the minimum frame duration from
19277 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
19278 the maximum stall duration for <code>S</code>.<wbr/></p>
19279 <p>If interleaving requests with and without a stall duration,<wbr/>
19280 a request will stall by the maximum of the remaining times
19281 for each can-stall stream with outstanding buffers.<wbr/></p>
19282 <p>This means that a stalling request will not have an exposure start
19283 until the stall has completed.<wbr/></p>
19284 <p>This should correspond to the stall duration when only that stream is
19285 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
19286 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
19287 effectively results in an indeterminate stall duration for all
19288 streams in a request (the regular stall calculation rules are
19289 ignored).<wbr/></p>
19290 <p>The following formats may always have a stall duration:</p>
19291 <ul>
19292 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
19293 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
19294 </ul>
19295 <p>The following formats will never have a stall duration:</p>
19296 <ul>
19297 <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>
19298 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
19299 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
19300 </ul>
19301 <p>All other formats may or may not have an allowed stall duration on
19302 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
19303 for more details.<wbr/></p>
19304 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
19305 calculating the max frame rate (absent stalls).<wbr/></p>
19306             </td>
19307           </tr>
19308
19309           <tr class="entries_header">
19310             <th class="th_details" colspan="6">HAL Implementation Details</th>
19311           </tr>
19312           <tr class="entry_cont">
19313             <td class="entry_details" colspan="6">
19314               <p>If possible,<wbr/> it is recommended that all non-JPEG formats
19315 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
19316 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
19317             </td>
19318           </tr>
19319
19320           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19321            <!-- end of entry -->
19322         
19323                 
19324           <tr class="entry" id="static_android.scaler.streamConfigurationMap">
19325             <td class="entry_name
19326              " rowspan="5">
19327               android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
19328             </td>
19329             <td class="entry_type">
19330                 <span class="entry_type_name">int32</span>
19331
19332               <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
19333
19334               <span class="entry_type_synthetic">[synthetic] </span>
19335
19336               <span class="entry_type_hwlevel">[legacy] </span>
19337
19338
19339
19340
19341             </td> <!-- entry_type -->
19342
19343             <td class="entry_description">
19344               <p>The available stream configurations that this
19345 camera device supports; also includes the minimum frame durations
19346 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
19347             </td>
19348
19349             <td class="entry_units">
19350             </td>
19351
19352             <td class="entry_range">
19353             </td>
19354
19355             <td class="entry_hal_version">
19356               <p>3.<wbr/>2</p>
19357             </td>
19358
19359             <td class="entry_tags">
19360             </td>
19361
19362           </tr>
19363           <tr class="entries_header">
19364             <th class="th_details" colspan="6">Details</th>
19365           </tr>
19366           <tr class="entry_cont">
19367             <td class="entry_details" colspan="6">
19368               <p>All camera devices will support sensor maximum resolution (defined by
19369 <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>
19370 <p>For a given use case,<wbr/> the actual maximum supported resolution
19371 may be lower than what is listed here,<wbr/> depending on the destination
19372 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19373 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19374 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19375 can provide.<wbr/></p>
19376 <p>Please reference the documentation for the image data destination to
19377 check if it limits the maximum size for image data.<wbr/></p>
19378 <p>The following table describes the minimum required output stream
19379 configurations based on the hardware level
19380 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19381 <table>
19382 <thead>
19383 <tr>
19384 <th align="center">Format</th>
19385 <th align="center">Size</th>
19386 <th align="center">Hardware Level</th>
19387 <th align="center">Notes</th>
19388 </tr>
19389 </thead>
19390 <tbody>
19391 <tr>
19392 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19393 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
19394 <td align="center">Any</td>
19395 <td align="center"></td>
19396 </tr>
19397 <tr>
19398 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19399 <td align="center">1920x1080 (1080p)</td>
19400 <td align="center">Any</td>
19401 <td align="center">if 1080p &lt;= activeArraySize</td>
19402 </tr>
19403 <tr>
19404 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19405 <td align="center">1280x720 (720p)</td>
19406 <td align="center">Any</td>
19407 <td align="center">if 720p &lt;= activeArraySize</td>
19408 </tr>
19409 <tr>
19410 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19411 <td align="center">640x480 (480p)</td>
19412 <td align="center">Any</td>
19413 <td align="center">if 480p &lt;= activeArraySize</td>
19414 </tr>
19415 <tr>
19416 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19417 <td align="center">320x240 (240p)</td>
19418 <td align="center">Any</td>
19419 <td align="center">if 240p &lt;= activeArraySize</td>
19420 </tr>
19421 <tr>
19422 <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>
19423 <td align="center">all output sizes available for JPEG</td>
19424 <td align="center">FULL</td>
19425 <td align="center"></td>
19426 </tr>
19427 <tr>
19428 <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>
19429 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
19430 <td align="center">LIMITED</td>
19431 <td align="center"></td>
19432 </tr>
19433 <tr>
19434 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
19435 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
19436 <td align="center">Any</td>
19437 <td align="center"></td>
19438 </tr>
19439 </tbody>
19440 </table>
19441 <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
19442 stream configurations on a per-capability basis.<wbr/></p>
19443 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
19444 <ul>
19445 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
19446 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
19447 (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/>
19448 it does not have to be included in the supported JPEG sizes.<wbr/></li>
19449 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
19450 the dimensions being a multiple of 16.<wbr/>
19451 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
19452 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
19453 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
19454 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
19455 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
19456 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
19457 3264x2448.<wbr/></li>
19458 </ul>
19459             </td>
19460           </tr>
19461
19462           <tr class="entries_header">
19463             <th class="th_details" colspan="6">HAL Implementation Details</th>
19464           </tr>
19465           <tr class="entry_cont">
19466             <td class="entry_details" colspan="6">
19467               <p>Do not set this property directly
19468 (it is synthetic and will not be available at the HAL layer);
19469 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
19470 <p>Not all output formats may be supported in a configuration with
19471 an input stream of a particular format.<wbr/> For more details,<wbr/> see
19472 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
19473 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
19474 of sensor maximum resolution for JPEG formats (regardless of hardware
19475 level).<wbr/></p>
19476 <p>(The following is a rewording of the above required table):</p>
19477 <p>The HAL must include sensor maximum resolution (defined by
19478 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
19479 <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/>
19480 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19481 here as output streams.<wbr/></p>
19482 <p>It must also include each below resolution if it is smaller than or
19483 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19484 formats),<wbr/> as output streams:</p>
19485 <ul>
19486 <li>240p (320 x 240)</li>
19487 <li>480p (640 x 480)</li>
19488 <li>720p (1280 x 720)</li>
19489 <li>1080p (1920 x 1080)</li>
19490 </ul>
19491 <p>For LIMITED capability devices
19492 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19493 the HAL only has to list up to the maximum video size
19494 supported by the device.<wbr/></p>
19495 <p>Regardless of hardware level,<wbr/> every output resolution available for
19496 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19497 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19498 <ul>
19499 <li>availableFormats</li>
19500 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19501 </ul>
19502             </td>
19503           </tr>
19504
19505           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19506            <!-- end of entry -->
19507         
19508                 
19509           <tr class="entry" id="static_android.scaler.croppingType">
19510             <td class="entry_name
19511              " rowspan="3">
19512               android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
19513             </td>
19514             <td class="entry_type">
19515                 <span class="entry_type_name entry_type_name_enum">byte</span>
19516
19517               <span class="entry_type_visibility"> [public]</span>
19518
19519
19520               <span class="entry_type_hwlevel">[legacy] </span>
19521
19522
19523
19524                 <ul class="entry_type_enum">
19525                   <li>
19526                     <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span>
19527                     <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
19528                   </li>
19529                   <li>
19530                     <span class="entry_type_enum_name">FREEFORM (v3.2)</span>
19531                     <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
19532                   </li>
19533                 </ul>
19534
19535             </td> <!-- entry_type -->
19536
19537             <td class="entry_description">
19538               <p>The crop type that this camera device supports.<wbr/></p>
19539             </td>
19540
19541             <td class="entry_units">
19542             </td>
19543
19544             <td class="entry_range">
19545             </td>
19546
19547             <td class="entry_hal_version">
19548               <p>3.<wbr/>2</p>
19549             </td>
19550
19551             <td class="entry_tags">
19552             </td>
19553
19554           </tr>
19555           <tr class="entries_header">
19556             <th class="th_details" colspan="6">Details</th>
19557           </tr>
19558           <tr class="entry_cont">
19559             <td class="entry_details" colspan="6">
19560               <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
19561 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
19562 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>)
19563 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
19564 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
19565 <p>Camera devices that support FREEFORM cropping will support any crop region that
19566 is inside of the active array.<wbr/> The camera device will apply the same crop region and
19567 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>
19568 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
19569             </td>
19570           </tr>
19571
19572
19573           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19574            <!-- end of entry -->
19575         
19576         
19577
19578       <!-- end of kind -->
19579       </tbody>
19580       <tr><td colspan="7" class="kind">dynamic</td></tr>
19581
19582       <thead class="entries_header">
19583         <tr>
19584           <th class="th_name">Property Name</th>
19585           <th class="th_type">Type</th>
19586           <th class="th_description">Description</th>
19587           <th class="th_units">Units</th>
19588           <th class="th_range">Range</th>
19589           <th class="th_hal_version">Initial HIDL HAL version</th>
19590           <th class="th_tags">Tags</th>
19591         </tr>
19592       </thead>
19593
19594       <tbody>
19595
19596         
19597
19598         
19599
19600         
19601
19602         
19603
19604                 
19605           <tr class="entry" id="dynamic_android.scaler.cropRegion">
19606             <td class="entry_name
19607              " rowspan="5">
19608               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
19609             </td>
19610             <td class="entry_type">
19611                 <span class="entry_type_name">int32</span>
19612                 <span class="entry_type_container">x</span>
19613
19614                 <span class="entry_type_array">
19615                   4
19616                 </span>
19617               <span class="entry_type_visibility"> [public as rectangle]</span>
19618
19619
19620               <span class="entry_type_hwlevel">[legacy] </span>
19621
19622
19623
19624
19625             </td> <!-- entry_type -->
19626
19627             <td class="entry_description">
19628               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
19629             </td>
19630
19631             <td class="entry_units">
19632               Pixel coordinates relative to
19633           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19634             </td>
19635
19636             <td class="entry_range">
19637             </td>
19638
19639             <td class="entry_hal_version">
19640               <p>3.<wbr/>2</p>
19641             </td>
19642
19643             <td class="entry_tags">
19644               <ul class="entry_tags">
19645                   <li><a href="#tag_BC">BC</a></li>
19646               </ul>
19647             </td>
19648
19649           </tr>
19650           <tr class="entries_header">
19651             <th class="th_details" colspan="6">Details</th>
19652           </tr>
19653           <tr class="entry_cont">
19654             <td class="entry_details" colspan="6">
19655               <p>This control can be used to implement digital zoom.<wbr/></p>
19656 <p>The crop region coordinate system is based off
19657 <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
19658 top-left corner of the sensor active array.<wbr/></p>
19659 <p>Output streams use this rectangle to produce their output,<wbr/>
19660 cropping to a smaller region if necessary to maintain the
19661 stream's aspect ratio,<wbr/> then scaling the sensor input to
19662 match the output's configured resolution.<wbr/></p>
19663 <p>The crop region is applied after the RAW to other color
19664 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
19665 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
19666 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
19667 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
19668 be done to maximize the final pixel area of the stream.<wbr/></p>
19669 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
19670 ratio,<wbr/> then 4:3 streams will use the exact crop
19671 region.<wbr/> 16:9 streams will further crop vertically
19672 (letterbox).<wbr/></p>
19673 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
19674 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
19675 streams will match exactly.<wbr/> These additional crops will
19676 be centered within the crop region.<wbr/></p>
19677 <p>The width and height of the crop region cannot
19678 be set to be smaller than
19679 <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
19680 <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>
19681 <p>The camera device may adjust the crop region to account
19682 for rounding and other hardware requirements; the final
19683 crop region used will be included in the output capture
19684 result.<wbr/></p>
19685             </td>
19686           </tr>
19687
19688           <tr class="entries_header">
19689             <th class="th_details" colspan="6">HAL Implementation Details</th>
19690           </tr>
19691           <tr class="entry_cont">
19692             <td class="entry_details" colspan="6">
19693               <p>The output streams must maintain square pixels at all
19694 times,<wbr/> no matter what the relative aspect ratios of the
19695 crop region and the stream are.<wbr/>  Negative values for
19696 corner are allowed for raw output if full pixel array is
19697 larger than active pixel array.<wbr/> Width and height may be
19698 rounded to nearest larger supportable width,<wbr/> especially
19699 for raw output,<wbr/> where only a few fixed scales may be
19700 possible.<wbr/></p>
19701 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
19702 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
19703 <ul>
19704 <li>
19705 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
19706 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
19707 <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>
19708 <ol>
19709 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
19710 cropped pixel area by (tx,<wbr/> ty),<wbr/>
19711 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
19712 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
19713 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
19714 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
19715 <li>Scale the width and height of requested cropRegion with scaling factor of
19716 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
19717 respectively.<wbr/>
19718 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
19719 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
19720 follow the general cropping rule for this new cropRegion and effective active
19721 array size.<wbr/></li>
19722 </ol>
19723 </li>
19724 <li>
19725 <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/>
19726 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
19727 The reported cropRegion may be slightly different with the requested cropRegion since
19728 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
19729 hardware limitations.<wbr/></p>
19730 </li>
19731 </ul>
19732 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
19733             </td>
19734           </tr>
19735
19736           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19737            <!-- end of entry -->
19738         
19739         
19740
19741       <!-- end of kind -->
19742       </tbody>
19743
19744   <!-- end of section -->
19745   <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
19746
19747
19748       <tr><td colspan="7" class="kind">controls</td></tr>
19749
19750       <thead class="entries_header">
19751         <tr>
19752           <th class="th_name">Property Name</th>
19753           <th class="th_type">Type</th>
19754           <th class="th_description">Description</th>
19755           <th class="th_units">Units</th>
19756           <th class="th_range">Range</th>
19757           <th class="th_hal_version">Initial HIDL HAL version</th>
19758           <th class="th_tags">Tags</th>
19759         </tr>
19760       </thead>
19761
19762       <tbody>
19763
19764         
19765
19766         
19767
19768         
19769
19770         
19771
19772                 
19773           <tr class="entry" id="controls_android.sensor.exposureTime">
19774             <td class="entry_name
19775              " rowspan="3">
19776               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
19777             </td>
19778             <td class="entry_type">
19779                 <span class="entry_type_name">int64</span>
19780
19781               <span class="entry_type_visibility"> [public]</span>
19782
19783
19784               <span class="entry_type_hwlevel">[full] </span>
19785
19786
19787
19788
19789             </td> <!-- entry_type -->
19790
19791             <td class="entry_description">
19792               <p>Duration each pixel is exposed to
19793 light.<wbr/></p>
19794             </td>
19795
19796             <td class="entry_units">
19797               Nanoseconds
19798             </td>
19799
19800             <td class="entry_range">
19801               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
19802             </td>
19803
19804             <td class="entry_hal_version">
19805               <p>3.<wbr/>2</p>
19806             </td>
19807
19808             <td class="entry_tags">
19809               <ul class="entry_tags">
19810                   <li><a href="#tag_V1">V1</a></li>
19811               </ul>
19812             </td>
19813
19814           </tr>
19815           <tr class="entries_header">
19816             <th class="th_details" colspan="6">Details</th>
19817           </tr>
19818           <tr class="entry_cont">
19819             <td class="entry_details" colspan="6">
19820               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
19821 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
19822 The final exposure time used will be available in the output capture result.<wbr/></p>
19823 <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
19824 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19825             </td>
19826           </tr>
19827
19828
19829           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19830            <!-- end of entry -->
19831         
19832                 
19833           <tr class="entry" id="controls_android.sensor.frameDuration">
19834             <td class="entry_name
19835              " rowspan="5">
19836               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
19837             </td>
19838             <td class="entry_type">
19839                 <span class="entry_type_name">int64</span>
19840
19841               <span class="entry_type_visibility"> [public]</span>
19842
19843
19844               <span class="entry_type_hwlevel">[full] </span>
19845
19846
19847
19848
19849             </td> <!-- entry_type -->
19850
19851             <td class="entry_description">
19852               <p>Duration from start of frame exposure to
19853 start of next frame exposure.<wbr/></p>
19854             </td>
19855
19856             <td class="entry_units">
19857               Nanoseconds
19858             </td>
19859
19860             <td class="entry_range">
19861               <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/>
19862 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
19863             </td>
19864
19865             <td class="entry_hal_version">
19866               <p>3.<wbr/>2</p>
19867             </td>
19868
19869             <td class="entry_tags">
19870               <ul class="entry_tags">
19871                   <li><a href="#tag_V1">V1</a></li>
19872               </ul>
19873             </td>
19874
19875           </tr>
19876           <tr class="entries_header">
19877             <th class="th_details" colspan="6">Details</th>
19878           </tr>
19879           <tr class="entry_cont">
19880             <td class="entry_details" colspan="6">
19881               <p>The maximum frame rate that can be supported by a camera subsystem is
19882 a function of many factors:</p>
19883 <ul>
19884 <li>Requested resolutions of output image streams</li>
19885 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
19886 <li>The bandwidth of the imager interface</li>
19887 <li>The bandwidth of the various ISP processing blocks</li>
19888 </ul>
19889 <p>Since these factors can vary greatly between different ISPs and
19890 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
19891 restrictions with as simple a model as possible.<wbr/></p>
19892 <p>The model presented has the following characteristics:</p>
19893 <ul>
19894 <li>The image sensor is always configured to output the smallest
19895 resolution possible given the application's requested output stream
19896 sizes.<wbr/>  The smallest resolution is defined as being at least as large
19897 as the largest requested output stream size; the camera pipeline must
19898 never digitally upsample sensor data when the crop region covers the
19899 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
19900 resolutions are configured,<wbr/> the sensor can provide a higher frame
19901 rate.<wbr/></li>
19902 <li>Since any request may use any or all the currently configured
19903 output streams,<wbr/> the sensor and ISP must be configured to support
19904 scaling a single capture to all the streams at the same time.<wbr/>  This
19905 means the camera pipeline must be ready to produce the largest
19906 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
19907 frame rate of a given configured stream set is governed only by the
19908 largest requested stream resolution.<wbr/></li>
19909 <li>Using more than one output stream in a request does not affect the
19910 frame duration.<wbr/></li>
19911 <li>Certain format-streams may need to do additional background processing
19912 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
19913 can run concurrently to the rest of the camera pipeline,<wbr/> but
19914 cannot process more than 1 capture at a time.<wbr/></li>
19915 </ul>
19916 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
19917 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
19918 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
19919 possible for a given stream configuration.<wbr/></p>
19920 <p>Specifically,<wbr/> the application can use the following rules to
19921 determine the minimum frame duration it can request from the camera
19922 device:</p>
19923 <ol>
19924 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
19925 <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>
19926 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
19927 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
19928 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>
19929 </ol>
19930 <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>
19931 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
19932 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
19933 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
19934 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
19935 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
19936 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
19937 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
19938 <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>
19939 <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
19940 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19941             </td>
19942           </tr>
19943
19944           <tr class="entries_header">
19945             <th class="th_details" colspan="6">HAL Implementation Details</th>
19946           </tr>
19947           <tr class="entry_cont">
19948             <td class="entry_details" colspan="6">
19949               <p>For more details about stalling,<wbr/> see
19950 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
19951             </td>
19952           </tr>
19953
19954           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19955            <!-- end of entry -->
19956         
19957                 
19958           <tr class="entry" id="controls_android.sensor.sensitivity">
19959             <td class="entry_name
19960              " rowspan="5">
19961               android.<wbr/>sensor.<wbr/>sensitivity
19962             </td>
19963             <td class="entry_type">
19964                 <span class="entry_type_name">int32</span>
19965
19966               <span class="entry_type_visibility"> [public]</span>
19967
19968
19969               <span class="entry_type_hwlevel">[full] </span>
19970
19971
19972
19973
19974             </td> <!-- entry_type -->
19975
19976             <td class="entry_description">
19977               <p>The amount of gain applied to sensor data
19978 before processing.<wbr/></p>
19979             </td>
19980
19981             <td class="entry_units">
19982               ISO arithmetic units
19983             </td>
19984
19985             <td class="entry_range">
19986               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
19987             </td>
19988
19989             <td class="entry_hal_version">
19990               <p>3.<wbr/>2</p>
19991             </td>
19992
19993             <td class="entry_tags">
19994               <ul class="entry_tags">
19995                   <li><a href="#tag_V1">V1</a></li>
19996               </ul>
19997             </td>
19998
19999           </tr>
20000           <tr class="entries_header">
20001             <th class="th_details" colspan="6">Details</th>
20002           </tr>
20003           <tr class="entry_cont">
20004             <td class="entry_details" colspan="6">
20005               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
20006 as defined in ISO 12232:2006.<wbr/></p>
20007 <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
20008 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
20009 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
20010 <p>If the camera device cannot apply the exact sensitivity
20011 requested,<wbr/> it will reduce the gain to the nearest supported
20012 value.<wbr/> The final sensitivity used will be available in the
20013 output capture result.<wbr/></p>
20014 <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
20015 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20016             </td>
20017           </tr>
20018
20019           <tr class="entries_header">
20020             <th class="th_details" colspan="6">HAL Implementation Details</th>
20021           </tr>
20022           <tr class="entry_cont">
20023             <td class="entry_details" colspan="6">
20024               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
20025             </td>
20026           </tr>
20027
20028           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20029            <!-- end of entry -->
20030         
20031                 
20032           <tr class="entry" id="controls_android.sensor.testPatternData">
20033             <td class="entry_name
20034              " rowspan="5">
20035               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
20036             </td>
20037             <td class="entry_type">
20038                 <span class="entry_type_name">int32</span>
20039                 <span class="entry_type_container">x</span>
20040
20041                 <span class="entry_type_array">
20042                   4
20043                 </span>
20044               <span class="entry_type_visibility"> [public]</span>
20045
20046
20047
20048
20049
20050
20051             </td> <!-- entry_type -->
20052
20053             <td class="entry_description">
20054               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
20055 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
20056             </td>
20057
20058             <td class="entry_units">
20059             </td>
20060
20061             <td class="entry_range">
20062             </td>
20063
20064             <td class="entry_hal_version">
20065               <p>3.<wbr/>2</p>
20066             </td>
20067
20068             <td class="entry_tags">
20069             </td>
20070
20071           </tr>
20072           <tr class="entries_header">
20073             <th class="th_details" colspan="6">Details</th>
20074           </tr>
20075           <tr class="entry_cont">
20076             <td class="entry_details" colspan="6">
20077               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
20078 The camera device then uses the most significant X bits
20079 that correspond to how many bits are in its Bayer raw sensor
20080 output.<wbr/></p>
20081 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
20082 10 most significant bits from each color channel.<wbr/></p>
20083             </td>
20084           </tr>
20085
20086           <tr class="entries_header">
20087             <th class="th_details" colspan="6">HAL Implementation Details</th>
20088           </tr>
20089           <tr class="entry_cont">
20090             <td class="entry_details" colspan="6">
20091               
20092             </td>
20093           </tr>
20094
20095           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20096            <!-- end of entry -->
20097         
20098                 
20099           <tr class="entry" id="controls_android.sensor.testPatternMode">
20100             <td class="entry_name
20101              " rowspan="5">
20102               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
20103             </td>
20104             <td class="entry_type">
20105                 <span class="entry_type_name entry_type_name_enum">int32</span>
20106
20107               <span class="entry_type_visibility"> [public]</span>
20108
20109
20110
20111
20112
20113                 <ul class="entry_type_enum">
20114                   <li>
20115                     <span class="entry_type_enum_name">OFF (v3.2)</span>
20116                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
20117 device returns captures from the image sensor.<wbr/></p>
20118 <p>This is the default if the key is not set.<wbr/></p></span>
20119                   </li>
20120                   <li>
20121                     <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
20122                     <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
20123 respective color channel provided in
20124 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
20125 <p>For example:</p>
20126 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20127 </code></pre>
20128 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
20129 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20130 </code></pre>
20131 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
20132 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
20133                   </li>
20134                   <li>
20135                     <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
20136                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
20137 <p>The vertical bars (left-to-right) are as follows:</p>
20138 <ul>
20139 <li>100% white</li>
20140 <li>yellow</li>
20141 <li>cyan</li>
20142 <li>green</li>
20143 <li>magenta</li>
20144 <li>red</li>
20145 <li>blue</li>
20146 <li>black</li>
20147 </ul>
20148 <p>In general the image would look like the following:</p>
20149 <pre><code>W Y C G M R B K
20150 W Y C G M R B K
20151 W Y C G M R B K
20152 W Y C G M R B K
20153 W Y C G M R B K
20154 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20155 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20156 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20157
20158 (B = Blue,<wbr/> K = Black)
20159 </code></pre>
20160 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
20161 When this is not possible,<wbr/> the bar size should be rounded
20162 down to the nearest integer and the pattern can repeat
20163 on the right side.<wbr/></p>
20164 <p>Each bar's height must always take up the full sensor
20165 pixel array height.<wbr/></p>
20166 <p>Each pixel in this test pattern must be set to either
20167 0% intensity or 100% intensity.<wbr/></p></span>
20168                   </li>
20169                   <li>
20170                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
20171                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
20172 each bar should start at its specified color at the top,<wbr/>
20173 and fade to gray at the bottom.<wbr/></p>
20174 <p>Furthermore each bar is further subdivided into a left and
20175 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
20176 and the right half should have a quantized gradient.<wbr/></p>
20177 <p>In particular,<wbr/> the right half's should consist of blocks of the
20178 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
20179 <p>The least significant bits in the quantized gradient should
20180 be copied from the most significant bits of the smooth gradient.<wbr/></p>
20181 <p>The height of each bar should always be a multiple of 128.<wbr/>
20182 When this is not the case,<wbr/> the pattern should repeat at the bottom
20183 of the image.<wbr/></p></span>
20184                   </li>
20185                   <li>
20186                     <span class="entry_type_enum_name">PN9 (v3.2)</span>
20187                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
20188 generated from a PN9 512-bit sequence (typically implemented
20189 in hardware with a linear feedback shift register).<wbr/></p>
20190 <p>The generator should be reset at the beginning of each frame,<wbr/>
20191 and thus each subsequent raw frame with this test pattern should
20192 be exactly the same as the last.<wbr/></p></span>
20193                   </li>
20194                   <li>
20195                     <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
20196                     <span class="entry_type_enum_value">256</span>
20197                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
20198 available only on this camera device are at least this numeric
20199 value.<wbr/></p>
20200 <p>All of the custom test patterns will be static
20201 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
20202                   </li>
20203                 </ul>
20204
20205             </td> <!-- entry_type -->
20206
20207             <td class="entry_description">
20208               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
20209 doing a real exposure from the camera.<wbr/></p>
20210             </td>
20211
20212             <td class="entry_units">
20213             </td>
20214
20215             <td class="entry_range">
20216               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
20217             </td>
20218
20219             <td class="entry_hal_version">
20220               <p>3.<wbr/>2</p>
20221             </td>
20222
20223             <td class="entry_tags">
20224             </td>
20225
20226           </tr>
20227           <tr class="entries_header">
20228             <th class="th_details" colspan="6">Details</th>
20229           </tr>
20230           <tr class="entry_cont">
20231             <td class="entry_details" colspan="6">
20232               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
20233 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
20234 work as normal.<wbr/></p>
20235 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
20236 occur (and that the test pattern remain unmodified,<wbr/> since the flash
20237 would not actually affect it).<wbr/></p>
20238 <p>Defaults to OFF.<wbr/></p>
20239             </td>
20240           </tr>
20241
20242           <tr class="entries_header">
20243             <th class="th_details" colspan="6">HAL Implementation Details</th>
20244           </tr>
20245           <tr class="entry_cont">
20246             <td class="entry_details" colspan="6">
20247               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
20248 <p>The HAL may choose to substitute test patterns from the sensor
20249 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
20250 indistinguishable to the ISP whether the data came from the
20251 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
20252             </td>
20253           </tr>
20254
20255           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20256            <!-- end of entry -->
20257         
20258         
20259
20260       <!-- end of kind -->
20261       </tbody>
20262       <tr><td colspan="7" class="kind">static</td></tr>
20263
20264       <thead class="entries_header">
20265         <tr>
20266           <th class="th_name">Property Name</th>
20267           <th class="th_type">Type</th>
20268           <th class="th_description">Description</th>
20269           <th class="th_units">Units</th>
20270           <th class="th_range">Range</th>
20271           <th class="th_hal_version">Initial HIDL HAL version</th>
20272           <th class="th_tags">Tags</th>
20273         </tr>
20274       </thead>
20275
20276       <tbody>
20277
20278         
20279
20280         
20281
20282         
20283
20284         
20285                 
20286             
20287
20288                 
20289           <tr class="entry" id="static_android.sensor.info.activeArraySize">
20290             <td class="entry_name
20291              " rowspan="5">
20292               android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
20293             </td>
20294             <td class="entry_type">
20295                 <span class="entry_type_name">int32</span>
20296                 <span class="entry_type_container">x</span>
20297
20298                 <span class="entry_type_array">
20299                   4
20300                 </span>
20301               <span class="entry_type_visibility"> [public as rectangle]</span>
20302
20303
20304               <span class="entry_type_hwlevel">[legacy] </span>
20305
20306
20307                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
20308
20309
20310             </td> <!-- entry_type -->
20311
20312             <td class="entry_description">
20313               <p>The area of the image sensor which corresponds to active pixels after any geometric
20314 distortion correction has been applied.<wbr/></p>
20315             </td>
20316
20317             <td class="entry_units">
20318               Pixel coordinates on the image sensor
20319             </td>
20320
20321             <td class="entry_range">
20322             </td>
20323
20324             <td class="entry_hal_version">
20325               <p>3.<wbr/>2</p>
20326             </td>
20327
20328             <td class="entry_tags">
20329               <ul class="entry_tags">
20330                   <li><a href="#tag_RAW">RAW</a></li>
20331               </ul>
20332             </td>
20333
20334           </tr>
20335           <tr class="entries_header">
20336             <th class="th_details" colspan="6">Details</th>
20337           </tr>
20338           <tr class="entry_cont">
20339             <td class="entry_details" colspan="6">
20340               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20341 the region that actually receives light from the scene) after any geometric correction
20342 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
20343 image output formats aside from the raw formats.<wbr/></p>
20344 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20345 the full pixel array,<wbr/> and the size of the full pixel array is given by
20346 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20347 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
20348 <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
20349 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
20350 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
20351 include black calibration pixels or other inactive regions,<wbr/> and geometric correction
20352 resulting in scaling or cropping may have been applied.<wbr/></p>
20353             </td>
20354           </tr>
20355
20356           <tr class="entries_header">
20357             <th class="th_details" colspan="6">HAL Implementation Details</th>
20358           </tr>
20359           <tr class="entry_cont">
20360             <td class="entry_details" colspan="6">
20361               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20362 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
20363 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>
20364             </td>
20365           </tr>
20366
20367           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20368            <!-- end of entry -->
20369         
20370                 
20371           <tr class="entry" id="static_android.sensor.info.sensitivityRange">
20372             <td class="entry_name
20373              " rowspan="3">
20374               android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
20375             </td>
20376             <td class="entry_type">
20377                 <span class="entry_type_name">int32</span>
20378                 <span class="entry_type_container">x</span>
20379
20380                 <span class="entry_type_array">
20381                   2
20382                 </span>
20383               <span class="entry_type_visibility"> [public as rangeInt]</span>
20384
20385
20386               <span class="entry_type_hwlevel">[full] </span>
20387
20388
20389                 <div class="entry_type_notes">Range of supported sensitivities</div>
20390
20391
20392             </td> <!-- entry_type -->
20393
20394             <td class="entry_description">
20395               <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
20396 camera device.<wbr/></p>
20397             </td>
20398
20399             <td class="entry_units">
20400             </td>
20401
20402             <td class="entry_range">
20403               <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
20404             </td>
20405
20406             <td class="entry_hal_version">
20407               <p>3.<wbr/>2</p>
20408             </td>
20409
20410             <td class="entry_tags">
20411               <ul class="entry_tags">
20412                   <li><a href="#tag_BC">BC</a></li>
20413                   <li><a href="#tag_V1">V1</a></li>
20414               </ul>
20415             </td>
20416
20417           </tr>
20418           <tr class="entries_header">
20419             <th class="th_details" colspan="6">Details</th>
20420           </tr>
20421           <tr class="entry_cont">
20422             <td class="entry_details" colspan="6">
20423               <p>The values are the standard ISO sensitivity values,<wbr/>
20424 as defined in ISO 12232:2006.<wbr/></p>
20425             </td>
20426           </tr>
20427
20428
20429           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20430            <!-- end of entry -->
20431         
20432                 
20433           <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
20434             <td class="entry_name
20435              " rowspan="1">
20436               android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
20437             </td>
20438             <td class="entry_type">
20439                 <span class="entry_type_name entry_type_name_enum">byte</span>
20440
20441               <span class="entry_type_visibility"> [public]</span>
20442
20443
20444               <span class="entry_type_hwlevel">[full] </span>
20445
20446
20447
20448                 <ul class="entry_type_enum">
20449                   <li>
20450                     <span class="entry_type_enum_name">RGGB (v3.2)</span>
20451                   </li>
20452                   <li>
20453                     <span class="entry_type_enum_name">GRBG (v3.2)</span>
20454                   </li>
20455                   <li>
20456                     <span class="entry_type_enum_name">GBRG (v3.2)</span>
20457                   </li>
20458                   <li>
20459                     <span class="entry_type_enum_name">BGGR (v3.2)</span>
20460                   </li>
20461                   <li>
20462                     <span class="entry_type_enum_name">RGB (v3.2)</span>
20463                     <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
20464 values for each pixel,<wbr/> instead of just 1 16-bit value
20465 per pixel.<wbr/></p></span>
20466                   </li>
20467                 </ul>
20468
20469             </td> <!-- entry_type -->
20470
20471             <td class="entry_description">
20472               <p>The arrangement of color filters on sensor;
20473 represents the colors in the top-left 2x2 section of
20474 the sensor,<wbr/> in reading order.<wbr/></p>
20475             </td>
20476
20477             <td class="entry_units">
20478             </td>
20479
20480             <td class="entry_range">
20481             </td>
20482
20483             <td class="entry_hal_version">
20484               <p>3.<wbr/>2</p>
20485             </td>
20486
20487             <td class="entry_tags">
20488               <ul class="entry_tags">
20489                   <li><a href="#tag_RAW">RAW</a></li>
20490               </ul>
20491             </td>
20492
20493           </tr>
20494
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.exposureTimeRange">
20501             <td class="entry_name
20502              " rowspan="3">
20503               android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
20504             </td>
20505             <td class="entry_type">
20506                 <span class="entry_type_name">int64</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 rangeLong]</span>
20513
20514
20515               <span class="entry_type_hwlevel">[full] </span>
20516
20517
20518                 <div class="entry_type_notes">nanoseconds</div>
20519
20520
20521             </td> <!-- entry_type -->
20522
20523             <td class="entry_description">
20524               <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
20525 by this camera device.<wbr/></p>
20526             </td>
20527
20528             <td class="entry_units">
20529               Nanoseconds
20530             </td>
20531
20532             <td class="entry_range">
20533               <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
20534 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20535 the maximum exposure time will be greater than 100ms.<wbr/></p>
20536             </td>
20537
20538             <td class="entry_hal_version">
20539               <p>3.<wbr/>2</p>
20540             </td>
20541
20542             <td class="entry_tags">
20543               <ul class="entry_tags">
20544                   <li><a href="#tag_V1">V1</a></li>
20545               </ul>
20546             </td>
20547
20548           </tr>
20549
20550           <tr class="entries_header">
20551             <th class="th_details" colspan="6">HAL Implementation Details</th>
20552           </tr>
20553           <tr class="entry_cont">
20554             <td class="entry_details" colspan="6">
20555               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20556 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
20557 100ms.<wbr/></p>
20558             </td>
20559           </tr>
20560
20561           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20562            <!-- end of entry -->
20563         
20564                 
20565           <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
20566             <td class="entry_name
20567              " rowspan="5">
20568               android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
20569             </td>
20570             <td class="entry_type">
20571                 <span class="entry_type_name">int64</span>
20572
20573               <span class="entry_type_visibility"> [public]</span>
20574
20575
20576               <span class="entry_type_hwlevel">[full] </span>
20577
20578
20579
20580
20581             </td> <!-- entry_type -->
20582
20583             <td class="entry_description">
20584               <p>The maximum possible frame duration (minimum frame rate) for
20585 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
20586             </td>
20587
20588             <td class="entry_units">
20589               Nanoseconds
20590             </td>
20591
20592             <td class="entry_range">
20593               <p>For FULL capability devices
20594 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
20595             </td>
20596
20597             <td class="entry_hal_version">
20598               <p>3.<wbr/>2</p>
20599             </td>
20600
20601             <td class="entry_tags">
20602               <ul class="entry_tags">
20603                   <li><a href="#tag_V1">V1</a></li>
20604               </ul>
20605             </td>
20606
20607           </tr>
20608           <tr class="entries_header">
20609             <th class="th_details" colspan="6">Details</th>
20610           </tr>
20611           <tr class="entry_cont">
20612             <td class="entry_details" colspan="6">
20613               <p>Attempting to use frame durations beyond the maximum will result in the frame
20614 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
20615 durations.<wbr/></p>
20616 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20617 for the minimum frame duration values.<wbr/></p>
20618             </td>
20619           </tr>
20620
20621           <tr class="entries_header">
20622             <th class="th_details" colspan="6">HAL Implementation Details</th>
20623           </tr>
20624           <tr class="entry_cont">
20625             <td class="entry_details" colspan="6">
20626               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20627 The maximum of the range SHOULD be at least
20628 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
20629 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
20630 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
20631 value (since exposure time overrides frame duration).<wbr/></p>
20632 <p>Available minimum frame durations for JPEG must be no greater
20633 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
20634 minimum frame durations (for that respective size).<wbr/></p>
20635 <p>Since JPEG processing is considered offline and can take longer than
20636 a single uncompressed capture,<wbr/> refer to
20637 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
20638 for details about encoding this scenario.<wbr/></p>
20639             </td>
20640           </tr>
20641
20642           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20643            <!-- end of entry -->
20644         
20645                 
20646           <tr class="entry" id="static_android.sensor.info.physicalSize">
20647             <td class="entry_name
20648              " rowspan="5">
20649               android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
20650             </td>
20651             <td class="entry_type">
20652                 <span class="entry_type_name">float</span>
20653                 <span class="entry_type_container">x</span>
20654
20655                 <span class="entry_type_array">
20656                   2
20657                 </span>
20658               <span class="entry_type_visibility"> [public as sizeF]</span>
20659
20660
20661               <span class="entry_type_hwlevel">[legacy] </span>
20662
20663
20664                 <div class="entry_type_notes">width x height</div>
20665
20666
20667             </td> <!-- entry_type -->
20668
20669             <td class="entry_description">
20670               <p>The physical dimensions of the full pixel
20671 array.<wbr/></p>
20672             </td>
20673
20674             <td class="entry_units">
20675               Millimeters
20676             </td>
20677
20678             <td class="entry_range">
20679             </td>
20680
20681             <td class="entry_hal_version">
20682               <p>3.<wbr/>2</p>
20683             </td>
20684
20685             <td class="entry_tags">
20686               <ul class="entry_tags">
20687                   <li><a href="#tag_V1">V1</a></li>
20688                   <li><a href="#tag_BC">BC</a></li>
20689               </ul>
20690             </td>
20691
20692           </tr>
20693           <tr class="entries_header">
20694             <th class="th_details" colspan="6">Details</th>
20695           </tr>
20696           <tr class="entry_cont">
20697             <td class="entry_details" colspan="6">
20698               <p>This is the physical size of the sensor pixel
20699 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20700             </td>
20701           </tr>
20702
20703           <tr class="entries_header">
20704             <th class="th_details" colspan="6">HAL Implementation Details</th>
20705           </tr>
20706           <tr class="entry_cont">
20707             <td class="entry_details" colspan="6">
20708               <p>Needed for FOV calculation for old API</p>
20709             </td>
20710           </tr>
20711
20712           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20713            <!-- end of entry -->
20714         
20715                 
20716           <tr class="entry" id="static_android.sensor.info.pixelArraySize">
20717             <td class="entry_name
20718              " rowspan="3">
20719               android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
20720             </td>
20721             <td class="entry_type">
20722                 <span class="entry_type_name">int32</span>
20723                 <span class="entry_type_container">x</span>
20724
20725                 <span class="entry_type_array">
20726                   2
20727                 </span>
20728               <span class="entry_type_visibility"> [public as size]</span>
20729
20730
20731               <span class="entry_type_hwlevel">[legacy] </span>
20732
20733
20734
20735
20736             </td> <!-- entry_type -->
20737
20738             <td class="entry_description">
20739               <p>Dimensions of the full pixel array,<wbr/> possibly
20740 including black calibration pixels.<wbr/></p>
20741             </td>
20742
20743             <td class="entry_units">
20744               Pixels
20745             </td>
20746
20747             <td class="entry_range">
20748             </td>
20749
20750             <td class="entry_hal_version">
20751               <p>3.<wbr/>2</p>
20752             </td>
20753
20754             <td class="entry_tags">
20755               <ul class="entry_tags">
20756                   <li><a href="#tag_RAW">RAW</a></li>
20757                   <li><a href="#tag_BC">BC</a></li>
20758               </ul>
20759             </td>
20760
20761           </tr>
20762           <tr class="entries_header">
20763             <th class="th_details" colspan="6">Details</th>
20764           </tr>
20765           <tr class="entry_cont">
20766             <td class="entry_details" colspan="6">
20767               <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
20768 <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
20769 the raw buffers produced by this sensor.<wbr/></p>
20770 <p>If a camera device supports raw sensor formats,<wbr/> either this or
20771 <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
20772 output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
20773 (this depends on whether or not the image sensor returns buffers containing pixels that
20774 are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
20775 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
20776 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
20777 defines the rectangle of active pixels that will be included in processed image
20778 formats.<wbr/></p>
20779             </td>
20780           </tr>
20781
20782
20783           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20784            <!-- end of entry -->
20785         
20786                 
20787           <tr class="entry" id="static_android.sensor.info.whiteLevel">
20788             <td class="entry_name
20789              " rowspan="5">
20790               android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
20791             </td>
20792             <td class="entry_type">
20793                 <span class="entry_type_name">int32</span>
20794
20795               <span class="entry_type_visibility"> [public]</span>
20796
20797
20798
20799
20800
20801
20802             </td> <!-- entry_type -->
20803
20804             <td class="entry_description">
20805               <p>Maximum raw value output by sensor.<wbr/></p>
20806             </td>
20807
20808             <td class="entry_units">
20809             </td>
20810
20811             <td class="entry_range">
20812               <p>&gt; 255 (8-bit output)</p>
20813             </td>
20814
20815             <td class="entry_hal_version">
20816               <p>3.<wbr/>2</p>
20817             </td>
20818
20819             <td class="entry_tags">
20820               <ul class="entry_tags">
20821                   <li><a href="#tag_RAW">RAW</a></li>
20822               </ul>
20823             </td>
20824
20825           </tr>
20826           <tr class="entries_header">
20827             <th class="th_details" colspan="6">Details</th>
20828           </tr>
20829           <tr class="entry_cont">
20830             <td class="entry_details" colspan="6">
20831               <p>This specifies the fully-saturated encoding level for the raw
20832 sample values from the sensor.<wbr/>  This is typically caused by the
20833 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
20834 each channel is specified by the offset in the
20835 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
20836 <p>The white level is typically determined either by sensor bit depth
20837 (8-14 bits is expected),<wbr/> or by the point where the sensor response
20838 becomes too non-linear to be useful.<wbr/>  The default value for this is
20839 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
20840 <p>The white level values of captured images may vary for different
20841 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20842 represents a coarse approximation for such case.<wbr/> It is recommended
20843 to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
20844 by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
20845             </td>
20846           </tr>
20847
20848           <tr class="entries_header">
20849             <th class="th_details" colspan="6">HAL Implementation Details</th>
20850           </tr>
20851           <tr class="entry_cont">
20852             <td class="entry_details" colspan="6">
20853               <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
20854 so the value for linear sensors should not be significantly lower
20855 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
20856             </td>
20857           </tr>
20858
20859           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20860            <!-- end of entry -->
20861         
20862                 
20863           <tr class="entry" id="static_android.sensor.info.timestampSource">
20864             <td class="entry_name
20865              " rowspan="5">
20866               android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
20867             </td>
20868             <td class="entry_type">
20869                 <span class="entry_type_name entry_type_name_enum">byte</span>
20870
20871               <span class="entry_type_visibility"> [public]</span>
20872
20873
20874               <span class="entry_type_hwlevel">[legacy] </span>
20875
20876
20877
20878                 <ul class="entry_type_enum">
20879                   <li>
20880                     <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
20881                     <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/>
20882 but can not be compared to timestamps from other subsystems
20883 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
20884 camera devices in the same system.<wbr/> Timestamps between streams and results for
20885 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
20886 and the result metadata generated by a single capture are identical.<wbr/></p></span>
20887                   </li>
20888                   <li>
20889                     <span class="entry_type_enum_name">REALTIME (v3.2)</span>
20890                     <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
20891 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
20892 and they can be compared to other timestamps using that base.<wbr/></p></span>
20893                   </li>
20894                 </ul>
20895
20896             </td> <!-- entry_type -->
20897
20898             <td class="entry_description">
20899               <p>The time base source for sensor capture start timestamps.<wbr/></p>
20900             </td>
20901
20902             <td class="entry_units">
20903             </td>
20904
20905             <td class="entry_range">
20906             </td>
20907
20908             <td class="entry_hal_version">
20909               <p>3.<wbr/>2</p>
20910             </td>
20911
20912             <td class="entry_tags">
20913               <ul class="entry_tags">
20914                   <li><a href="#tag_V1">V1</a></li>
20915               </ul>
20916             </td>
20917
20918           </tr>
20919           <tr class="entries_header">
20920             <th class="th_details" colspan="6">Details</th>
20921           </tr>
20922           <tr class="entry_cont">
20923             <td class="entry_details" colspan="6">
20924               <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
20925 may not based on a time source that can be compared to other system time sources.<wbr/></p>
20926 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
20927 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
20928             </td>
20929           </tr>
20930
20931           <tr class="entries_header">
20932             <th class="th_details" colspan="6">HAL Implementation Details</th>
20933           </tr>
20934           <tr class="entry_cont">
20935             <td class="entry_details" colspan="6">
20936               <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
20937 source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
20938 framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
20939 system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
20940 SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
20941 recording might suffer unexpected behavior.<wbr/></p>
20942 <p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
20943 tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
20944             </td>
20945           </tr>
20946
20947           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20948            <!-- end of entry -->
20949         
20950                 
20951           <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
20952             <td class="entry_name
20953              " rowspan="3">
20954               android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
20955             </td>
20956             <td class="entry_type">
20957                 <span class="entry_type_name entry_type_name_enum">byte</span>
20958
20959               <span class="entry_type_visibility"> [public as boolean]</span>
20960
20961
20962
20963
20964
20965                 <ul class="entry_type_enum">
20966                   <li>
20967                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
20968                   </li>
20969                   <li>
20970                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
20971                   </li>
20972                 </ul>
20973
20974             </td> <!-- entry_type -->
20975
20976             <td class="entry_description">
20977               <p>Whether the RAW images output from this camera device are subject to
20978 lens shading correction.<wbr/></p>
20979             </td>
20980
20981             <td class="entry_units">
20982             </td>
20983
20984             <td class="entry_range">
20985             </td>
20986
20987             <td class="entry_hal_version">
20988               <p>3.<wbr/>2</p>
20989             </td>
20990
20991             <td class="entry_tags">
20992             </td>
20993
20994           </tr>
20995           <tr class="entries_header">
20996             <th class="th_details" colspan="6">Details</th>
20997           </tr>
20998           <tr class="entry_cont">
20999             <td class="entry_details" colspan="6">
21000               <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
21001 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
21002 not be adjusted for lens shading correction.<wbr/>
21003 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>
21004 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
21005 Devices with RAW capability will always report this information in this key.<wbr/></p>
21006             </td>
21007           </tr>
21008
21009
21010           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21011            <!-- end of entry -->
21012         
21013                 
21014           <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
21015             <td class="entry_name
21016              " rowspan="5">
21017               android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
21018             </td>
21019             <td class="entry_type">
21020                 <span class="entry_type_name">int32</span>
21021                 <span class="entry_type_container">x</span>
21022
21023                 <span class="entry_type_array">
21024                   4
21025                 </span>
21026               <span class="entry_type_visibility"> [public as rectangle]</span>
21027
21028
21029               <span class="entry_type_hwlevel">[legacy] </span>
21030
21031
21032                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
21033
21034
21035             </td> <!-- entry_type -->
21036
21037             <td class="entry_description">
21038               <p>The area of the image sensor which corresponds to active pixels prior to the
21039 application of any geometric distortion correction.<wbr/></p>
21040             </td>
21041
21042             <td class="entry_units">
21043               Pixel coordinates on the image sensor
21044             </td>
21045
21046             <td class="entry_range">
21047             </td>
21048
21049             <td class="entry_hal_version">
21050               <p>3.<wbr/>2</p>
21051             </td>
21052
21053             <td class="entry_tags">
21054               <ul class="entry_tags">
21055                   <li><a href="#tag_RAW">RAW</a></li>
21056               </ul>
21057             </td>
21058
21059           </tr>
21060           <tr class="entries_header">
21061             <th class="th_details" colspan="6">Details</th>
21062           </tr>
21063           <tr class="entry_cont">
21064             <td class="entry_details" colspan="6">
21065               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
21066 the region that actually receives light from the scene) before any geometric correction
21067 has been applied,<wbr/> and should be treated as the active region rectangle for any of the
21068 raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
21069 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
21070 the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
21071 <p>The size of this region determines the maximum field of view and the maximum number of
21072 pixels that an image from this sensor can contain,<wbr/> prior to the application of
21073 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
21074 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>
21075 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
21076 can be calculated by applying the geometric distortion correction fields to this
21077 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>
21078 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
21079 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/>
21080 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
21081 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
21082 <ol>
21083 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
21084 <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
21085 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
21086 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
21087 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
21088 buffers is defined relative to the top,<wbr/> left of the
21089 <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>
21090 <li>If the resulting corrected pixel coordinate is within the region given in
21091 <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
21092 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
21093 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
21094 </ol>
21095 <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>
21096 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/>
21097 <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
21098 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
21099 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
21100 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)
21101 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
21102 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21103 <p>The currently supported fields that correct for geometric distortion are:</p>
21104 <ol>
21105 <li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>.<wbr/></li>
21106 </ol>
21107 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
21108 as the post-distortion-corrected rectangle given in
21109 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21110 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
21111 the full pixel array,<wbr/> and the size of the full pixel array is given by
21112 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21113 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
21114 full array may include black calibration pixels or other inactive regions.<wbr/></p>
21115             </td>
21116           </tr>
21117
21118           <tr class="entries_header">
21119             <th class="th_details" colspan="6">HAL Implementation Details</th>
21120           </tr>
21121           <tr class="entry_cont">
21122             <td class="entry_details" colspan="6">
21123               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
21124 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
21125 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>
21126 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
21127 the same as the post-correction active array region given in
21128 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21129             </td>
21130           </tr>
21131
21132           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21133            <!-- end of entry -->
21134         
21135         
21136         
21137
21138                 
21139           <tr class="entry" id="static_android.sensor.referenceIlluminant1">
21140             <td class="entry_name
21141              " rowspan="5">
21142               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
21143             </td>
21144             <td class="entry_type">
21145                 <span class="entry_type_name entry_type_name_enum">byte</span>
21146
21147               <span class="entry_type_visibility"> [public]</span>
21148
21149
21150
21151
21152
21153                 <ul class="entry_type_enum">
21154                   <li>
21155                     <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
21156                     <span class="entry_type_enum_value">1</span>
21157                   </li>
21158                   <li>
21159                     <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
21160                     <span class="entry_type_enum_value">2</span>
21161                   </li>
21162                   <li>
21163                     <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span>
21164                     <span class="entry_type_enum_value">3</span>
21165                     <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
21166                   </li>
21167                   <li>
21168                     <span class="entry_type_enum_name">FLASH (v3.2)</span>
21169                     <span class="entry_type_enum_value">4</span>
21170                   </li>
21171                   <li>
21172                     <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span>
21173                     <span class="entry_type_enum_value">9</span>
21174                   </li>
21175                   <li>
21176                     <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span>
21177                     <span class="entry_type_enum_value">10</span>
21178                   </li>
21179                   <li>
21180                     <span class="entry_type_enum_name">SHADE (v3.2)</span>
21181                     <span class="entry_type_enum_value">11</span>
21182                   </li>
21183                   <li>
21184                     <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span>
21185                     <span class="entry_type_enum_value">12</span>
21186                     <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
21187                   </li>
21188                   <li>
21189                     <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span>
21190                     <span class="entry_type_enum_value">13</span>
21191                     <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
21192                   </li>
21193                   <li>
21194                     <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span>
21195                     <span class="entry_type_enum_value">14</span>
21196                     <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
21197                   </li>
21198                   <li>
21199                     <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span>
21200                     <span class="entry_type_enum_value">15</span>
21201                     <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
21202                   </li>
21203                   <li>
21204                     <span class="entry_type_enum_name">STANDARD_A (v3.2)</span>
21205                     <span class="entry_type_enum_value">17</span>
21206                   </li>
21207                   <li>
21208                     <span class="entry_type_enum_name">STANDARD_B (v3.2)</span>
21209                     <span class="entry_type_enum_value">18</span>
21210                   </li>
21211                   <li>
21212                     <span class="entry_type_enum_name">STANDARD_C (v3.2)</span>
21213                     <span class="entry_type_enum_value">19</span>
21214                   </li>
21215                   <li>
21216                     <span class="entry_type_enum_name">D55 (v3.2)</span>
21217                     <span class="entry_type_enum_value">20</span>
21218                   </li>
21219                   <li>
21220                     <span class="entry_type_enum_name">D65 (v3.2)</span>
21221                     <span class="entry_type_enum_value">21</span>
21222                   </li>
21223                   <li>
21224                     <span class="entry_type_enum_name">D75 (v3.2)</span>
21225                     <span class="entry_type_enum_value">22</span>
21226                   </li>
21227                   <li>
21228                     <span class="entry_type_enum_name">D50 (v3.2)</span>
21229                     <span class="entry_type_enum_value">23</span>
21230                   </li>
21231                   <li>
21232                     <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span>
21233                     <span class="entry_type_enum_value">24</span>
21234                   </li>
21235                 </ul>
21236
21237             </td> <!-- entry_type -->
21238
21239             <td class="entry_description">
21240               <p>The standard reference illuminant used as the scene light source when
21241 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
21242 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
21243 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<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>The values in this key correspond to the values defined for the
21269 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
21270 that are often used calibrating camera devices.<wbr/></p>
21271 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
21272 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
21273 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
21274 <p>Some devices may choose to provide a second set of calibration
21275 information for improved quality,<wbr/> including
21276 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
21277             </td>
21278           </tr>
21279
21280           <tr class="entries_header">
21281             <th class="th_details" colspan="6">HAL Implementation Details</th>
21282           </tr>
21283           <tr class="entry_cont">
21284             <td class="entry_details" colspan="6">
21285               <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21286 and corresponding matrices must be present to support the RAW capability
21287 and DNG output.<wbr/></p>
21288 <p>When producing raw images with a color profile that has only been
21289 calibrated against a single light source,<wbr/> it is valid to omit
21290 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
21291 <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/>
21292 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21293 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
21294 chosen so that it is representative of typical scene lighting.<wbr/>  In
21295 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
21296 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
21297 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
21298 chosen to represent the typical range of scene lighting conditions.<wbr/>
21299 In general,<wbr/> low color temperature illuminant such as Standard-A will
21300 be chosen for the first reference illuminant and a higher color
21301 temperature illuminant such as D65 will be chosen for the second
21302 reference illuminant.<wbr/></p>
21303             </td>
21304           </tr>
21305
21306           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21307            <!-- end of entry -->
21308         
21309                 
21310           <tr class="entry" id="static_android.sensor.referenceIlluminant2">
21311             <td class="entry_name
21312              " rowspan="3">
21313               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
21314             </td>
21315             <td class="entry_type">
21316                 <span class="entry_type_name">byte</span>
21317
21318               <span class="entry_type_visibility"> [public]</span>
21319
21320
21321
21322
21323
21324
21325             </td> <!-- entry_type -->
21326
21327             <td class="entry_description">
21328               <p>The standard reference illuminant used as the scene light source when
21329 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21330 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21331 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21332             </td>
21333
21334             <td class="entry_units">
21335             </td>
21336
21337             <td class="entry_range">
21338               <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
21339             </td>
21340
21341             <td class="entry_hal_version">
21342               <p>3.<wbr/>2</p>
21343             </td>
21344
21345             <td class="entry_tags">
21346               <ul class="entry_tags">
21347                   <li><a href="#tag_RAW">RAW</a></li>
21348               </ul>
21349             </td>
21350
21351           </tr>
21352           <tr class="entries_header">
21353             <th class="th_details" colspan="6">Details</th>
21354           </tr>
21355           <tr class="entry_cont">
21356             <td class="entry_details" colspan="6">
21357               <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
21358 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21359 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21360 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
21361             </td>
21362           </tr>
21363
21364
21365           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21366            <!-- end of entry -->
21367         
21368                 
21369           <tr class="entry" id="static_android.sensor.calibrationTransform1">
21370             <td class="entry_name
21371              " rowspan="3">
21372               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
21373             </td>
21374             <td class="entry_type">
21375                 <span class="entry_type_name">rational</span>
21376                 <span class="entry_type_container">x</span>
21377
21378                 <span class="entry_type_array">
21379                   3 x 3
21380                 </span>
21381               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21382
21383
21384
21385
21386                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21387
21388
21389             </td> <!-- entry_type -->
21390
21391             <td class="entry_description">
21392               <p>A per-device calibration transform matrix that maps from the
21393 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
21394             </td>
21395
21396             <td class="entry_units">
21397             </td>
21398
21399             <td class="entry_range">
21400             </td>
21401
21402             <td class="entry_hal_version">
21403               <p>3.<wbr/>2</p>
21404             </td>
21405
21406             <td class="entry_tags">
21407               <ul class="entry_tags">
21408                   <li><a href="#tag_RAW">RAW</a></li>
21409               </ul>
21410             </td>
21411
21412           </tr>
21413           <tr class="entries_header">
21414             <th class="th_details" colspan="6">Details</th>
21415           </tr>
21416           <tr class="entry_cont">
21417             <td class="entry_details" colspan="6">
21418               <p>This matrix is used to correct for per-device variations in the
21419 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21420 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21421 contains a per-device calibration transform that maps colors
21422 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21423 colorspace) into this camera device's native sensor color
21424 space under the first reference illuminant
21425 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21426             </td>
21427           </tr>
21428
21429
21430           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21431            <!-- end of entry -->
21432         
21433                 
21434           <tr class="entry" id="static_android.sensor.calibrationTransform2">
21435             <td class="entry_name
21436              " rowspan="3">
21437               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
21438             </td>
21439             <td class="entry_type">
21440                 <span class="entry_type_name">rational</span>
21441                 <span class="entry_type_container">x</span>
21442
21443                 <span class="entry_type_array">
21444                   3 x 3
21445                 </span>
21446               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21447
21448
21449
21450
21451                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21452
21453
21454             </td> <!-- entry_type -->
21455
21456             <td class="entry_description">
21457               <p>A per-device calibration transform matrix that maps from the
21458 reference sensor colorspace to the actual device sensor colorspace
21459 (this is the colorspace of the raw buffer data).<wbr/></p>
21460             </td>
21461
21462             <td class="entry_units">
21463             </td>
21464
21465             <td class="entry_range">
21466             </td>
21467
21468             <td class="entry_hal_version">
21469               <p>3.<wbr/>2</p>
21470             </td>
21471
21472             <td class="entry_tags">
21473               <ul class="entry_tags">
21474                   <li><a href="#tag_RAW">RAW</a></li>
21475               </ul>
21476             </td>
21477
21478           </tr>
21479           <tr class="entries_header">
21480             <th class="th_details" colspan="6">Details</th>
21481           </tr>
21482           <tr class="entry_cont">
21483             <td class="entry_details" colspan="6">
21484               <p>This matrix is used to correct for per-device variations in the
21485 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21486 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21487 contains a per-device calibration transform that maps colors
21488 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21489 colorspace) into this camera device's native sensor color
21490 space under the second reference illuminant
21491 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21492 <p>This matrix will only be present if the second reference
21493 illuminant is present.<wbr/></p>
21494             </td>
21495           </tr>
21496
21497
21498           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21499            <!-- end of entry -->
21500         
21501                 
21502           <tr class="entry" id="static_android.sensor.colorTransform1">
21503             <td class="entry_name
21504              " rowspan="3">
21505               android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
21506             </td>
21507             <td class="entry_type">
21508                 <span class="entry_type_name">rational</span>
21509                 <span class="entry_type_container">x</span>
21510
21511                 <span class="entry_type_array">
21512                   3 x 3
21513                 </span>
21514               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21515
21516
21517
21518
21519                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21520
21521
21522             </td> <!-- entry_type -->
21523
21524             <td class="entry_description">
21525               <p>A matrix that transforms color values from CIE XYZ color space to
21526 reference sensor color space.<wbr/></p>
21527             </td>
21528
21529             <td class="entry_units">
21530             </td>
21531
21532             <td class="entry_range">
21533             </td>
21534
21535             <td class="entry_hal_version">
21536               <p>3.<wbr/>2</p>
21537             </td>
21538
21539             <td class="entry_tags">
21540               <ul class="entry_tags">
21541                   <li><a href="#tag_RAW">RAW</a></li>
21542               </ul>
21543             </td>
21544
21545           </tr>
21546           <tr class="entries_header">
21547             <th class="th_details" colspan="6">Details</th>
21548           </tr>
21549           <tr class="entry_cont">
21550             <td class="entry_details" colspan="6">
21551               <p>This matrix is used to convert from the standard CIE XYZ color
21552 space to the reference sensor colorspace,<wbr/> and is used when processing
21553 raw buffer data.<wbr/></p>
21554 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21555 contains a color transform matrix that maps colors from the CIE
21556 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21557 "golden module" colorspace) under the first reference illuminant
21558 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21559 <p>The white points chosen in both the reference sensor color space
21560 and the CIE XYZ colorspace when calculating this transform will
21561 match the standard white point for the first reference illuminant
21562 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21563             </td>
21564           </tr>
21565
21566
21567           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21568            <!-- end of entry -->
21569         
21570                 
21571           <tr class="entry" id="static_android.sensor.colorTransform2">
21572             <td class="entry_name
21573              " rowspan="3">
21574               android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
21575             </td>
21576             <td class="entry_type">
21577                 <span class="entry_type_name">rational</span>
21578                 <span class="entry_type_container">x</span>
21579
21580                 <span class="entry_type_array">
21581                   3 x 3
21582                 </span>
21583               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21584
21585
21586
21587
21588                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21589
21590
21591             </td> <!-- entry_type -->
21592
21593             <td class="entry_description">
21594               <p>A matrix that transforms color values from CIE XYZ color space to
21595 reference sensor color space.<wbr/></p>
21596             </td>
21597
21598             <td class="entry_units">
21599             </td>
21600
21601             <td class="entry_range">
21602             </td>
21603
21604             <td class="entry_hal_version">
21605               <p>3.<wbr/>2</p>
21606             </td>
21607
21608             <td class="entry_tags">
21609               <ul class="entry_tags">
21610                   <li><a href="#tag_RAW">RAW</a></li>
21611               </ul>
21612             </td>
21613
21614           </tr>
21615           <tr class="entries_header">
21616             <th class="th_details" colspan="6">Details</th>
21617           </tr>
21618           <tr class="entry_cont">
21619             <td class="entry_details" colspan="6">
21620               <p>This matrix is used to convert from the standard CIE XYZ color
21621 space to the reference sensor colorspace,<wbr/> and is used when processing
21622 raw buffer data.<wbr/></p>
21623 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21624 contains a color transform matrix that maps colors from the CIE
21625 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21626 "golden module" colorspace) under the second reference illuminant
21627 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21628 <p>The white points chosen in both the reference sensor color space
21629 and the CIE XYZ colorspace when calculating this transform will
21630 match the standard white point for the second reference illuminant
21631 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21632 <p>This matrix will only be present if the second reference
21633 illuminant is present.<wbr/></p>
21634             </td>
21635           </tr>
21636
21637
21638           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21639            <!-- end of entry -->
21640         
21641                 
21642           <tr class="entry" id="static_android.sensor.forwardMatrix1">
21643             <td class="entry_name
21644              " rowspan="3">
21645               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
21646             </td>
21647             <td class="entry_type">
21648                 <span class="entry_type_name">rational</span>
21649                 <span class="entry_type_container">x</span>
21650
21651                 <span class="entry_type_array">
21652                   3 x 3
21653                 </span>
21654               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21655
21656
21657
21658
21659                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21660
21661
21662             </td> <!-- entry_type -->
21663
21664             <td class="entry_description">
21665               <p>A matrix that transforms white balanced camera colors from the reference
21666 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21667             </td>
21668
21669             <td class="entry_units">
21670             </td>
21671
21672             <td class="entry_range">
21673             </td>
21674
21675             <td class="entry_hal_version">
21676               <p>3.<wbr/>2</p>
21677             </td>
21678
21679             <td class="entry_tags">
21680               <ul class="entry_tags">
21681                   <li><a href="#tag_RAW">RAW</a></li>
21682               </ul>
21683             </td>
21684
21685           </tr>
21686           <tr class="entries_header">
21687             <th class="th_details" colspan="6">Details</th>
21688           </tr>
21689           <tr class="entry_cont">
21690             <td class="entry_details" colspan="6">
21691               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21692 is used when processing raw buffer data.<wbr/></p>
21693 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21694 a color transform matrix that maps white balanced colors from the
21695 reference sensor color space to the CIE XYZ color space with a D50 white
21696 point.<wbr/></p>
21697 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21698 this matrix is chosen so that the standard white point for this reference
21699 illuminant in the reference sensor colorspace is mapped to D50 in the
21700 CIE XYZ colorspace.<wbr/></p>
21701             </td>
21702           </tr>
21703
21704
21705           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21706            <!-- end of entry -->
21707         
21708                 
21709           <tr class="entry" id="static_android.sensor.forwardMatrix2">
21710             <td class="entry_name
21711              " rowspan="3">
21712               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
21713             </td>
21714             <td class="entry_type">
21715                 <span class="entry_type_name">rational</span>
21716                 <span class="entry_type_container">x</span>
21717
21718                 <span class="entry_type_array">
21719                   3 x 3
21720                 </span>
21721               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21722
21723
21724
21725
21726                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21727
21728
21729             </td> <!-- entry_type -->
21730
21731             <td class="entry_description">
21732               <p>A matrix that transforms white balanced camera colors from the reference
21733 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21734             </td>
21735
21736             <td class="entry_units">
21737             </td>
21738
21739             <td class="entry_range">
21740             </td>
21741
21742             <td class="entry_hal_version">
21743               <p>3.<wbr/>2</p>
21744             </td>
21745
21746             <td class="entry_tags">
21747               <ul class="entry_tags">
21748                   <li><a href="#tag_RAW">RAW</a></li>
21749               </ul>
21750             </td>
21751
21752           </tr>
21753           <tr class="entries_header">
21754             <th class="th_details" colspan="6">Details</th>
21755           </tr>
21756           <tr class="entry_cont">
21757             <td class="entry_details" colspan="6">
21758               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21759 is used when processing raw buffer data.<wbr/></p>
21760 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21761 a color transform matrix that maps white balanced colors from the
21762 reference sensor color space to the CIE XYZ color space with a D50 white
21763 point.<wbr/></p>
21764 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
21765 this matrix is chosen so that the standard white point for this reference
21766 illuminant in the reference sensor colorspace is mapped to D50 in the
21767 CIE XYZ colorspace.<wbr/></p>
21768 <p>This matrix will only be present if the second reference
21769 illuminant is present.<wbr/></p>
21770             </td>
21771           </tr>
21772
21773
21774           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21775            <!-- end of entry -->
21776         
21777                 
21778           <tr class="entry" id="static_android.sensor.baseGainFactor">
21779             <td class="entry_name
21780              " rowspan="1">
21781               android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
21782             </td>
21783             <td class="entry_type">
21784                 <span class="entry_type_name">rational</span>
21785
21786               <span class="entry_type_visibility"> [system]</span>
21787
21788
21789
21790
21791
21792
21793             </td> <!-- entry_type -->
21794
21795             <td class="entry_description">
21796               <p>Gain factor from electrons to raw units when
21797 ISO=100</p>
21798             </td>
21799
21800             <td class="entry_units">
21801             </td>
21802
21803             <td class="entry_range">
21804             </td>
21805
21806             <td class="entry_hal_version">
21807               <p>3.<wbr/>2</p>
21808             </td>
21809
21810             <td class="entry_tags">
21811               <ul class="entry_tags">
21812                   <li><a href="#tag_FUTURE">FUTURE</a></li>
21813               </ul>
21814             </td>
21815
21816           </tr>
21817
21818
21819           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21820            <!-- end of entry -->
21821         
21822                 
21823           <tr class="entry" id="static_android.sensor.blackLevelPattern">
21824             <td class="entry_name
21825              " rowspan="5">
21826               android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
21827             </td>
21828             <td class="entry_type">
21829                 <span class="entry_type_name">int32</span>
21830                 <span class="entry_type_container">x</span>
21831
21832                 <span class="entry_type_array">
21833                   4
21834                 </span>
21835               <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
21836
21837
21838
21839
21840                 <div class="entry_type_notes">2x2 raw count block</div>
21841
21842
21843             </td> <!-- entry_type -->
21844
21845             <td class="entry_description">
21846               <p>A fixed black level offset for each of the color filter arrangement
21847 (CFA) mosaic channels.<wbr/></p>
21848             </td>
21849
21850             <td class="entry_units">
21851             </td>
21852
21853             <td class="entry_range">
21854               <p>&gt;= 0 for each.<wbr/></p>
21855             </td>
21856
21857             <td class="entry_hal_version">
21858               <p>3.<wbr/>2</p>
21859             </td>
21860
21861             <td class="entry_tags">
21862               <ul class="entry_tags">
21863                   <li><a href="#tag_RAW">RAW</a></li>
21864               </ul>
21865             </td>
21866
21867           </tr>
21868           <tr class="entries_header">
21869             <th class="th_details" colspan="6">Details</th>
21870           </tr>
21871           <tr class="entry_cont">
21872             <td class="entry_details" colspan="6">
21873               <p>This key specifies the zero light value for each of the CFA mosaic
21874 channels in the camera sensor.<wbr/>  The maximal value output by the
21875 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>
21876 <p>The values are given in the same order as channels listed for the CFA
21877 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
21878 nth value given corresponds to the black level offset for the nth
21879 color channel listed in the CFA.<wbr/></p>
21880 <p>The black level values of captured images may vary for different
21881 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
21882 represents a coarse approximation for such case.<wbr/> It is recommended to
21883 use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
21884 <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
21885 supported by the camera device,<wbr/> which provides more accurate black
21886 level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
21887 pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
21888 level values for each frame.<wbr/></p>
21889             </td>
21890           </tr>
21891
21892           <tr class="entries_header">
21893             <th class="th_details" colspan="6">HAL Implementation Details</th>
21894           </tr>
21895           <tr class="entry_cont">
21896             <td class="entry_details" colspan="6">
21897               <p>The values are given in row-column scan order,<wbr/> with the first value
21898 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21899             </td>
21900           </tr>
21901
21902           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21903            <!-- end of entry -->
21904         
21905                 
21906           <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
21907             <td class="entry_name
21908              " rowspan="3">
21909               android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
21910             </td>
21911             <td class="entry_type">
21912                 <span class="entry_type_name">int32</span>
21913
21914               <span class="entry_type_visibility"> [public]</span>
21915
21916
21917               <span class="entry_type_hwlevel">[full] </span>
21918
21919
21920
21921
21922             </td> <!-- entry_type -->
21923
21924             <td class="entry_description">
21925               <p>Maximum sensitivity that is implemented
21926 purely through analog gain.<wbr/></p>
21927             </td>
21928
21929             <td class="entry_units">
21930             </td>
21931
21932             <td class="entry_range">
21933             </td>
21934
21935             <td class="entry_hal_version">
21936               <p>3.<wbr/>2</p>
21937             </td>
21938
21939             <td class="entry_tags">
21940               <ul class="entry_tags">
21941                   <li><a href="#tag_V1">V1</a></li>
21942                   <li><a href="#tag_FULL">FULL</a></li>
21943               </ul>
21944             </td>
21945
21946           </tr>
21947           <tr class="entries_header">
21948             <th class="th_details" colspan="6">Details</th>
21949           </tr>
21950           <tr class="entry_cont">
21951             <td class="entry_details" colspan="6">
21952               <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
21953 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
21954 values above this,<wbr/> the gain applied can be a mix of analog and
21955 digital.<wbr/></p>
21956             </td>
21957           </tr>
21958
21959
21960           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21961            <!-- end of entry -->
21962         
21963                 
21964           <tr class="entry" id="static_android.sensor.orientation">
21965             <td class="entry_name
21966              " rowspan="3">
21967               android.<wbr/>sensor.<wbr/>orientation
21968             </td>
21969             <td class="entry_type">
21970                 <span class="entry_type_name">int32</span>
21971
21972               <span class="entry_type_visibility"> [public]</span>
21973
21974
21975               <span class="entry_type_hwlevel">[legacy] </span>
21976
21977
21978
21979
21980             </td> <!-- entry_type -->
21981
21982             <td class="entry_description">
21983               <p>Clockwise angle through which the output image needs to be rotated to be
21984 upright on the device screen in its native orientation.<wbr/></p>
21985             </td>
21986
21987             <td class="entry_units">
21988               Degrees of clockwise rotation; always a multiple of
21989           90
21990             </td>
21991
21992             <td class="entry_range">
21993               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
21994             </td>
21995
21996             <td class="entry_hal_version">
21997               <p>3.<wbr/>2</p>
21998             </td>
21999
22000             <td class="entry_tags">
22001               <ul class="entry_tags">
22002                   <li><a href="#tag_BC">BC</a></li>
22003               </ul>
22004             </td>
22005
22006           </tr>
22007           <tr class="entries_header">
22008             <th class="th_details" colspan="6">Details</th>
22009           </tr>
22010           <tr class="entry_cont">
22011             <td class="entry_details" colspan="6">
22012               <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
22013 the sensor's coordinate system.<wbr/></p>
22014             </td>
22015           </tr>
22016
22017
22018           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22019            <!-- end of entry -->
22020         
22021                 
22022           <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
22023             <td class="entry_name
22024              " rowspan="3">
22025               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
22026             </td>
22027             <td class="entry_type">
22028                 <span class="entry_type_name">int32</span>
22029                 <span class="entry_type_container">x</span>
22030
22031                 <span class="entry_type_array">
22032                   3
22033                 </span>
22034               <span class="entry_type_visibility"> [system]</span>
22035
22036
22037
22038
22039                 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
22040
22041
22042             </td> <!-- entry_type -->
22043
22044             <td class="entry_description">
22045               <p>The number of input samples for each dimension of
22046 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
22047             </td>
22048
22049             <td class="entry_units">
22050             </td>
22051
22052             <td class="entry_range">
22053               <p>Hue &gt;= 1,<wbr/>
22054 Saturation &gt;= 2,<wbr/>
22055 Value &gt;= 1</p>
22056             </td>
22057
22058             <td class="entry_hal_version">
22059               <p>3.<wbr/>2</p>
22060             </td>
22061
22062             <td class="entry_tags">
22063               <ul class="entry_tags">
22064                   <li><a href="#tag_RAW">RAW</a></li>
22065               </ul>
22066             </td>
22067
22068           </tr>
22069           <tr class="entries_header">
22070             <th class="th_details" colspan="6">Details</th>
22071           </tr>
22072           <tr class="entry_cont">
22073             <td class="entry_details" colspan="6">
22074               <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
22075 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
22076 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
22077 element.<wbr/></p>
22078             </td>
22079           </tr>
22080
22081
22082           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22083            <!-- end of entry -->
22084         
22085                 
22086           <tr class="entry" id="static_android.sensor.availableTestPatternModes">
22087             <td class="entry_name
22088              " rowspan="5">
22089               android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
22090             </td>
22091             <td class="entry_type">
22092                 <span class="entry_type_name">int32</span>
22093                 <span class="entry_type_container">x</span>
22094
22095                 <span class="entry_type_array">
22096                   n
22097                 </span>
22098               <span class="entry_type_visibility"> [public]</span>
22099
22100
22101
22102
22103                 <div class="entry_type_notes">list of enums</div>
22104
22105
22106             </td> <!-- entry_type -->
22107
22108             <td class="entry_description">
22109               <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
22110 supported by this camera device.<wbr/></p>
22111             </td>
22112
22113             <td class="entry_units">
22114             </td>
22115
22116             <td class="entry_range">
22117               <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
22118             </td>
22119
22120             <td class="entry_hal_version">
22121               <p>3.<wbr/>2</p>
22122             </td>
22123
22124             <td class="entry_tags">
22125             </td>
22126
22127           </tr>
22128           <tr class="entries_header">
22129             <th class="th_details" colspan="6">Details</th>
22130           </tr>
22131           <tr class="entry_cont">
22132             <td class="entry_details" colspan="6">
22133               <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
22134             </td>
22135           </tr>
22136
22137           <tr class="entries_header">
22138             <th class="th_details" colspan="6">HAL Implementation Details</th>
22139           </tr>
22140           <tr class="entry_cont">
22141             <td class="entry_details" colspan="6">
22142               <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
22143             </td>
22144           </tr>
22145
22146           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22147            <!-- end of entry -->
22148         
22149                 
22150           <tr class="entry" id="static_android.sensor.opticalBlackRegions">
22151             <td class="entry_name
22152              " rowspan="5">
22153               android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
22154             </td>
22155             <td class="entry_type">
22156                 <span class="entry_type_name">int32</span>
22157                 <span class="entry_type_container">x</span>
22158
22159                 <span class="entry_type_array">
22160                   4 x num_regions
22161                 </span>
22162               <span class="entry_type_visibility"> [public as rectangle]</span>
22163
22164
22165
22166
22167
22168
22169             </td> <!-- entry_type -->
22170
22171             <td class="entry_description">
22172               <p>List of disjoint rectangles indicating the sensor
22173 optically shielded black pixel regions.<wbr/></p>
22174             </td>
22175
22176             <td class="entry_units">
22177             </td>
22178
22179             <td class="entry_range">
22180             </td>
22181
22182             <td class="entry_hal_version">
22183               <p>3.<wbr/>2</p>
22184             </td>
22185
22186             <td class="entry_tags">
22187             </td>
22188
22189           </tr>
22190           <tr class="entries_header">
22191             <th class="th_details" colspan="6">Details</th>
22192           </tr>
22193           <tr class="entry_cont">
22194             <td class="entry_details" colspan="6">
22195               <p>In most camera sensors,<wbr/> the active array is surrounded by some
22196 optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
22197 provides a reliable black reference for black level compensation
22198 in active array region.<wbr/></p>
22199 <p>This key provides a list of disjoint rectangles specifying the
22200 regions of optically shielded (with metal shield) black pixel
22201 regions if the camera device is capable of reading out these black
22202 pixels in the output raw images.<wbr/> In comparison to the fixed black
22203 level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
22204 may provide a more accurate way for the application to calculate
22205 black level of each captured raw images.<wbr/></p>
22206 <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
22207 <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
22208             </td>
22209           </tr>
22210
22211           <tr class="entries_header">
22212             <th class="th_details" colspan="6">HAL Implementation Details</th>
22213           </tr>
22214           <tr class="entry_cont">
22215             <td class="entry_details" colspan="6">
22216               <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
22217 must be &gt;= (0,<wbr/>0) and &lt;=
22218 <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
22219 &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
22220 outside the region reported by
22221 <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>
22222 <p>The HAL must report minimal number of disjoint regions for the
22223 optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
22224 be covered by one rectangle,<wbr/> the HAL must not split this region into
22225 multiple rectangles.<wbr/></p>
22226             </td>
22227           </tr>
22228
22229           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22230            <!-- end of entry -->
22231         
22232                 
22233           <tr class="entry" id="static_android.sensor.opaqueRawSize">
22234             <td class="entry_name
22235              " rowspan="5">
22236               android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
22237             </td>
22238             <td class="entry_type">
22239                 <span class="entry_type_name">int32</span>
22240                 <span class="entry_type_container">x</span>
22241
22242                 <span class="entry_type_array">
22243                   n x 3
22244                 </span>
22245               <span class="entry_type_visibility"> [system]</span>
22246
22247
22248
22249
22250
22251
22252             </td> <!-- entry_type -->
22253
22254             <td class="entry_description">
22255               <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
22256             </td>
22257
22258             <td class="entry_units">
22259             </td>
22260
22261             <td class="entry_range">
22262               <p>Must be large enough to fit the opaque RAW of corresponding size produced by
22263 the camera</p>
22264             </td>
22265
22266             <td class="entry_hal_version">
22267               <p>3.<wbr/>2</p>
22268             </td>
22269
22270             <td class="entry_tags">
22271             </td>
22272
22273           </tr>
22274           <tr class="entries_header">
22275             <th class="th_details" colspan="6">Details</th>
22276           </tr>
22277           <tr class="entry_cont">
22278             <td class="entry_details" colspan="6">
22279               <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
22280 This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
22281 All RAW_<wbr/>OPAQUE output stream configuration listed in
22282 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
22283 this key.<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>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
22293 <p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
22294 key.<wbr/>  For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
22295 framework will derive this key by assuming each pixel takes two bytes and no padding bytes
22296 between rows.<wbr/></p>
22297             </td>
22298           </tr>
22299
22300           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22301            <!-- end of entry -->
22302         
22303         
22304
22305       <!-- end of kind -->
22306       </tbody>
22307       <tr><td colspan="7" class="kind">dynamic</td></tr>
22308
22309       <thead class="entries_header">
22310         <tr>
22311           <th class="th_name">Property Name</th>
22312           <th class="th_type">Type</th>
22313           <th class="th_description">Description</th>
22314           <th class="th_units">Units</th>
22315           <th class="th_range">Range</th>
22316           <th class="th_hal_version">Initial HIDL HAL version</th>
22317           <th class="th_tags">Tags</th>
22318         </tr>
22319       </thead>
22320
22321       <tbody>
22322
22323         
22324
22325         
22326
22327         
22328
22329         
22330
22331                 
22332           <tr class="entry" id="dynamic_android.sensor.exposureTime">
22333             <td class="entry_name
22334              " rowspan="3">
22335               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
22336             </td>
22337             <td class="entry_type">
22338                 <span class="entry_type_name">int64</span>
22339
22340               <span class="entry_type_visibility"> [public]</span>
22341
22342
22343               <span class="entry_type_hwlevel">[full] </span>
22344
22345
22346
22347
22348             </td> <!-- entry_type -->
22349
22350             <td class="entry_description">
22351               <p>Duration each pixel is exposed to
22352 light.<wbr/></p>
22353             </td>
22354
22355             <td class="entry_units">
22356               Nanoseconds
22357             </td>
22358
22359             <td class="entry_range">
22360               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
22361             </td>
22362
22363             <td class="entry_hal_version">
22364               <p>3.<wbr/>2</p>
22365             </td>
22366
22367             <td class="entry_tags">
22368               <ul class="entry_tags">
22369                   <li><a href="#tag_V1">V1</a></li>
22370               </ul>
22371             </td>
22372
22373           </tr>
22374           <tr class="entries_header">
22375             <th class="th_details" colspan="6">Details</th>
22376           </tr>
22377           <tr class="entry_cont">
22378             <td class="entry_details" colspan="6">
22379               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
22380 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
22381 The final exposure time used will be available in the output capture result.<wbr/></p>
22382 <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
22383 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22384             </td>
22385           </tr>
22386
22387
22388           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22389            <!-- end of entry -->
22390         
22391                 
22392           <tr class="entry" id="dynamic_android.sensor.frameDuration">
22393             <td class="entry_name
22394              " rowspan="5">
22395               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
22396             </td>
22397             <td class="entry_type">
22398                 <span class="entry_type_name">int64</span>
22399
22400               <span class="entry_type_visibility"> [public]</span>
22401
22402
22403               <span class="entry_type_hwlevel">[full] </span>
22404
22405
22406
22407
22408             </td> <!-- entry_type -->
22409
22410             <td class="entry_description">
22411               <p>Duration from start of frame exposure to
22412 start of next frame exposure.<wbr/></p>
22413             </td>
22414
22415             <td class="entry_units">
22416               Nanoseconds
22417             </td>
22418
22419             <td class="entry_range">
22420               <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/>
22421 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
22422             </td>
22423
22424             <td class="entry_hal_version">
22425               <p>3.<wbr/>2</p>
22426             </td>
22427
22428             <td class="entry_tags">
22429               <ul class="entry_tags">
22430                   <li><a href="#tag_V1">V1</a></li>
22431               </ul>
22432             </td>
22433
22434           </tr>
22435           <tr class="entries_header">
22436             <th class="th_details" colspan="6">Details</th>
22437           </tr>
22438           <tr class="entry_cont">
22439             <td class="entry_details" colspan="6">
22440               <p>The maximum frame rate that can be supported by a camera subsystem is
22441 a function of many factors:</p>
22442 <ul>
22443 <li>Requested resolutions of output image streams</li>
22444 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
22445 <li>The bandwidth of the imager interface</li>
22446 <li>The bandwidth of the various ISP processing blocks</li>
22447 </ul>
22448 <p>Since these factors can vary greatly between different ISPs and
22449 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
22450 restrictions with as simple a model as possible.<wbr/></p>
22451 <p>The model presented has the following characteristics:</p>
22452 <ul>
22453 <li>The image sensor is always configured to output the smallest
22454 resolution possible given the application's requested output stream
22455 sizes.<wbr/>  The smallest resolution is defined as being at least as large
22456 as the largest requested output stream size; the camera pipeline must
22457 never digitally upsample sensor data when the crop region covers the
22458 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
22459 resolutions are configured,<wbr/> the sensor can provide a higher frame
22460 rate.<wbr/></li>
22461 <li>Since any request may use any or all the currently configured
22462 output streams,<wbr/> the sensor and ISP must be configured to support
22463 scaling a single capture to all the streams at the same time.<wbr/>  This
22464 means the camera pipeline must be ready to produce the largest
22465 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
22466 frame rate of a given configured stream set is governed only by the
22467 largest requested stream resolution.<wbr/></li>
22468 <li>Using more than one output stream in a request does not affect the
22469 frame duration.<wbr/></li>
22470 <li>Certain format-streams may need to do additional background processing
22471 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
22472 can run concurrently to the rest of the camera pipeline,<wbr/> but
22473 cannot process more than 1 capture at a time.<wbr/></li>
22474 </ul>
22475 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
22476 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
22477 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
22478 possible for a given stream configuration.<wbr/></p>
22479 <p>Specifically,<wbr/> the application can use the following rules to
22480 determine the minimum frame duration it can request from the camera
22481 device:</p>
22482 <ol>
22483 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
22484 <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>
22485 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
22486 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
22487 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>
22488 </ol>
22489 <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>
22490 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
22491 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
22492 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
22493 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
22494 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
22495 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
22496 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
22497 <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>
22498 <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
22499 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22500             </td>
22501           </tr>
22502
22503           <tr class="entries_header">
22504             <th class="th_details" colspan="6">HAL Implementation Details</th>
22505           </tr>
22506           <tr class="entry_cont">
22507             <td class="entry_details" colspan="6">
22508               <p>For more details about stalling,<wbr/> see
22509 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
22510             </td>
22511           </tr>
22512
22513           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22514            <!-- end of entry -->
22515         
22516                 
22517           <tr class="entry" id="dynamic_android.sensor.sensitivity">
22518             <td class="entry_name
22519              " rowspan="5">
22520               android.<wbr/>sensor.<wbr/>sensitivity
22521             </td>
22522             <td class="entry_type">
22523                 <span class="entry_type_name">int32</span>
22524
22525               <span class="entry_type_visibility"> [public]</span>
22526
22527
22528               <span class="entry_type_hwlevel">[full] </span>
22529
22530
22531
22532
22533             </td> <!-- entry_type -->
22534
22535             <td class="entry_description">
22536               <p>The amount of gain applied to sensor data
22537 before processing.<wbr/></p>
22538             </td>
22539
22540             <td class="entry_units">
22541               ISO arithmetic units
22542             </td>
22543
22544             <td class="entry_range">
22545               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
22546             </td>
22547
22548             <td class="entry_hal_version">
22549               <p>3.<wbr/>2</p>
22550             </td>
22551
22552             <td class="entry_tags">
22553               <ul class="entry_tags">
22554                   <li><a href="#tag_V1">V1</a></li>
22555               </ul>
22556             </td>
22557
22558           </tr>
22559           <tr class="entries_header">
22560             <th class="th_details" colspan="6">Details</th>
22561           </tr>
22562           <tr class="entry_cont">
22563             <td class="entry_details" colspan="6">
22564               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
22565 as defined in ISO 12232:2006.<wbr/></p>
22566 <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
22567 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
22568 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
22569 <p>If the camera device cannot apply the exact sensitivity
22570 requested,<wbr/> it will reduce the gain to the nearest supported
22571 value.<wbr/> The final sensitivity used will be available in the
22572 output capture result.<wbr/></p>
22573 <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
22574 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22575             </td>
22576           </tr>
22577
22578           <tr class="entries_header">
22579             <th class="th_details" colspan="6">HAL Implementation Details</th>
22580           </tr>
22581           <tr class="entry_cont">
22582             <td class="entry_details" colspan="6">
22583               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
22584             </td>
22585           </tr>
22586
22587           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22588            <!-- end of entry -->
22589         
22590                 
22591           <tr class="entry" id="dynamic_android.sensor.timestamp">
22592             <td class="entry_name
22593              " rowspan="5">
22594               android.<wbr/>sensor.<wbr/>timestamp
22595             </td>
22596             <td class="entry_type">
22597                 <span class="entry_type_name">int64</span>
22598
22599               <span class="entry_type_visibility"> [public]</span>
22600
22601
22602               <span class="entry_type_hwlevel">[legacy] </span>
22603
22604
22605
22606
22607             </td> <!-- entry_type -->
22608
22609             <td class="entry_description">
22610               <p>Time at start of exposure of first
22611 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
22612             </td>
22613
22614             <td class="entry_units">
22615               Nanoseconds
22616             </td>
22617
22618             <td class="entry_range">
22619               <p>&gt; 0</p>
22620             </td>
22621
22622             <td class="entry_hal_version">
22623               <p>3.<wbr/>2</p>
22624             </td>
22625
22626             <td class="entry_tags">
22627               <ul class="entry_tags">
22628                   <li><a href="#tag_BC">BC</a></li>
22629               </ul>
22630             </td>
22631
22632           </tr>
22633           <tr class="entries_header">
22634             <th class="th_details" colspan="6">Details</th>
22635           </tr>
22636           <tr class="entry_cont">
22637             <td class="entry_details" colspan="6">
22638               <p>The timestamps are also included in all image
22639 buffers produced for the same capture,<wbr/> and will be identical
22640 on all the outputs.<wbr/></p>
22641 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
22642 the timestamps measure time since an unspecified starting point,<wbr/>
22643 and are monotonically increasing.<wbr/> They can be compared with the
22644 timestamps for other captures from the same camera device,<wbr/> but are
22645 not guaranteed to be comparable to any other time source.<wbr/></p>
22646 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
22647 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
22648 be compared to other timestamps from other subsystems that
22649 are using that base.<wbr/></p>
22650 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
22651 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
22652 timestamp</a> in the TotalCaptureResult that was used to create the
22653 reprocess capture request.<wbr/></p>
22654             </td>
22655           </tr>
22656
22657           <tr class="entries_header">
22658             <th class="th_details" colspan="6">HAL Implementation Details</th>
22659           </tr>
22660           <tr class="entry_cont">
22661             <td class="entry_details" colspan="6">
22662               <p>All timestamps must be in reference to the kernel's
22663 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
22664 time spent asleep.<wbr/> This allows for synchronization with
22665 sensors that continue to operate while the system is
22666 otherwise asleep.<wbr/></p>
22667 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
22668 The timestamp must be synchronized with the timestamps from other
22669 sensor subsystems that are using the same timebase.<wbr/></p>
22670 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
22671 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
22672 capture request.<wbr/></p>
22673             </td>
22674           </tr>
22675
22676           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22677            <!-- end of entry -->
22678         
22679                 
22680           <tr class="entry" id="dynamic_android.sensor.temperature">
22681             <td class="entry_name
22682              " rowspan="1">
22683               android.<wbr/>sensor.<wbr/>temperature
22684             </td>
22685             <td class="entry_type">
22686                 <span class="entry_type_name">float</span>
22687
22688               <span class="entry_type_visibility"> [system]</span>
22689
22690
22691
22692
22693
22694
22695             </td> <!-- entry_type -->
22696
22697             <td class="entry_description">
22698               <p>The temperature of the sensor,<wbr/> sampled at the time
22699 exposure began for this frame.<wbr/></p>
22700 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
22701 somewhere close to it.<wbr/></p>
22702             </td>
22703
22704             <td class="entry_units">
22705               Celsius
22706             </td>
22707
22708             <td class="entry_range">
22709               <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
22710             </td>
22711
22712             <td class="entry_hal_version">
22713               <p>3.<wbr/>2</p>
22714             </td>
22715
22716             <td class="entry_tags">
22717               <ul class="entry_tags">
22718                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22719               </ul>
22720             </td>
22721
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.neutralColorPoint">
22730             <td class="entry_name
22731              " rowspan="3">
22732               android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
22733             </td>
22734             <td class="entry_type">
22735                 <span class="entry_type_name">rational</span>
22736                 <span class="entry_type_container">x</span>
22737
22738                 <span class="entry_type_array">
22739                   3
22740                 </span>
22741               <span class="entry_type_visibility"> [public]</span>
22742
22743
22744
22745
22746
22747
22748             </td> <!-- entry_type -->
22749
22750             <td class="entry_description">
22751               <p>The estimated camera neutral color in the native sensor colorspace at
22752 the time of capture.<wbr/></p>
22753             </td>
22754
22755             <td class="entry_units">
22756             </td>
22757
22758             <td class="entry_range">
22759             </td>
22760
22761             <td class="entry_hal_version">
22762               <p>3.<wbr/>2</p>
22763             </td>
22764
22765             <td class="entry_tags">
22766               <ul class="entry_tags">
22767                   <li><a href="#tag_RAW">RAW</a></li>
22768               </ul>
22769             </td>
22770
22771           </tr>
22772           <tr class="entries_header">
22773             <th class="th_details" colspan="6">Details</th>
22774           </tr>
22775           <tr class="entry_cont">
22776             <td class="entry_details" colspan="6">
22777               <p>This value gives the neutral color point encoded as an RGB value in the
22778 native sensor color space.<wbr/>  The neutral color point indicates the
22779 currently estimated white point of the scene illumination.<wbr/>  It can be
22780 used to interpolate between the provided color transforms when
22781 processing raw sensor data.<wbr/></p>
22782 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
22783             </td>
22784           </tr>
22785
22786
22787           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22788            <!-- end of entry -->
22789         
22790                 
22791           <tr class="entry" id="dynamic_android.sensor.noiseProfile">
22792             <td class="entry_name
22793              " rowspan="5">
22794               android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
22795             </td>
22796             <td class="entry_type">
22797                 <span class="entry_type_name">double</span>
22798                 <span class="entry_type_container">x</span>
22799
22800                 <span class="entry_type_array">
22801                   2 x CFA Channels
22802                 </span>
22803               <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
22804
22805
22806
22807
22808                 <div class="entry_type_notes">Pairs of noise model coefficients</div>
22809
22810
22811             </td> <!-- entry_type -->
22812
22813             <td class="entry_description">
22814               <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
22815             </td>
22816
22817             <td class="entry_units">
22818             </td>
22819
22820             <td class="entry_range">
22821             </td>
22822
22823             <td class="entry_hal_version">
22824               <p>3.<wbr/>2</p>
22825             </td>
22826
22827             <td class="entry_tags">
22828               <ul class="entry_tags">
22829                   <li><a href="#tag_RAW">RAW</a></li>
22830               </ul>
22831             </td>
22832
22833           </tr>
22834           <tr class="entries_header">
22835             <th class="th_details" colspan="6">Details</th>
22836           </tr>
22837           <tr class="entry_cont">
22838             <td class="entry_details" colspan="6">
22839               <p>This key contains two noise model coefficients for each CFA channel
22840 corresponding to the sensor amplification (S) and sensor readout
22841 noise (O).<wbr/>  These are given as pairs of coefficients for each channel
22842 in the same order as channels listed for the CFA layout key
22843 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
22844 represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
22845 the first member of the Pair at index n is the S coefficient and the
22846 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
22847 <p>These coefficients are used in a two parameter noise model to describe
22848 the amount of noise present in the image for each CFA channel.<wbr/>  The
22849 noise model used here is:</p>
22850 <p>N(x) = sqrt(Sx + O)</p>
22851 <p>Where x represents the recorded signal of a CFA channel normalized to
22852 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
22853 that channel.<wbr/></p>
22854 <p>A more detailed description of the noise model can be found in the
22855 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
22856             </td>
22857           </tr>
22858
22859           <tr class="entries_header">
22860             <th class="th_details" colspan="6">HAL Implementation Details</th>
22861           </tr>
22862           <tr class="entry_cont">
22863             <td class="entry_details" colspan="6">
22864               <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
22865 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
22866 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
22867 channel,<wbr/> etc.<wbr/></p>
22868             </td>
22869           </tr>
22870
22871           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22872            <!-- end of entry -->
22873         
22874                 
22875           <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
22876             <td class="entry_name
22877              " rowspan="3">
22878               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
22879             </td>
22880             <td class="entry_type">
22881                 <span class="entry_type_name">float</span>
22882                 <span class="entry_type_container">x</span>
22883
22884                 <span class="entry_type_array">
22885                   hue_samples x saturation_samples x value_samples x 3
22886                 </span>
22887               <span class="entry_type_visibility"> [system]</span>
22888
22889
22890
22891
22892                 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
22893
22894
22895             </td> <!-- entry_type -->
22896
22897             <td class="entry_description">
22898               <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
22899 for each pixel.<wbr/></p>
22900             </td>
22901
22902             <td class="entry_units">
22903               
22904           The hue shift is given in degrees; saturation and value scale factors are
22905           unitless and are between 0 and 1 inclusive
22906           
22907             </td>
22908
22909             <td class="entry_range">
22910             </td>
22911
22912             <td class="entry_hal_version">
22913               <p>3.<wbr/>2</p>
22914             </td>
22915
22916             <td class="entry_tags">
22917               <ul class="entry_tags">
22918                   <li><a href="#tag_RAW">RAW</a></li>
22919               </ul>
22920             </td>
22921
22922           </tr>
22923           <tr class="entries_header">
22924             <th class="th_details" colspan="6">Details</th>
22925           </tr>
22926           <tr class="entry_cont">
22927             <td class="entry_details" colspan="6">
22928               <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
22929 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
22930 <p>Each entry of this map contains three floats corresponding to the
22931 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
22932 hue shift has the lowest index.<wbr/> The map entries are stored in the key
22933 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
22934 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
22935 inner loop.<wbr/> All zero input saturation entries are required to have a
22936 value scale factor of 1.<wbr/>0.<wbr/></p>
22937             </td>
22938           </tr>
22939
22940
22941           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22942            <!-- end of entry -->
22943         
22944                 
22945           <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
22946             <td class="entry_name
22947              " rowspan="3">
22948               android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
22949             </td>
22950             <td class="entry_type">
22951                 <span class="entry_type_name">float</span>
22952                 <span class="entry_type_container">x</span>
22953
22954                 <span class="entry_type_array">
22955                   samples x 2
22956                 </span>
22957               <span class="entry_type_visibility"> [system]</span>
22958
22959
22960
22961
22962                 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
22963
22964
22965             </td> <!-- entry_type -->
22966
22967             <td class="entry_description">
22968               <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
22969             </td>
22970
22971             <td class="entry_units">
22972             </td>
22973
22974             <td class="entry_range">
22975               <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
22976 <code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
22977 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
22978             </td>
22979
22980             <td class="entry_hal_version">
22981               <p>3.<wbr/>2</p>
22982             </td>
22983
22984             <td class="entry_tags">
22985               <ul class="entry_tags">
22986                   <li><a href="#tag_RAW">RAW</a></li>
22987               </ul>
22988             </td>
22989
22990           </tr>
22991           <tr class="entries_header">
22992             <th class="th_details" colspan="6">Details</th>
22993           </tr>
22994           <tr class="entry_cont">
22995             <td class="entry_details" colspan="6">
22996               <p>This key contains a default tone curve that can be applied while
22997 processing the image as a starting point for user adjustments.<wbr/>
22998 The curve is specified as a list of value pairs in linear gamma.<wbr/>
22999 The curve is interpolated using a cubic spline.<wbr/></p>
23000             </td>
23001           </tr>
23002
23003
23004           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23005            <!-- end of entry -->
23006         
23007                 
23008           <tr class="entry" id="dynamic_android.sensor.greenSplit">
23009             <td class="entry_name
23010              " rowspan="5">
23011               android.<wbr/>sensor.<wbr/>green<wbr/>Split
23012             </td>
23013             <td class="entry_type">
23014                 <span class="entry_type_name">float</span>
23015
23016               <span class="entry_type_visibility"> [public]</span>
23017
23018
23019
23020
23021
23022
23023             </td> <!-- entry_type -->
23024
23025             <td class="entry_description">
23026               <p>The worst-case divergence between Bayer green channels.<wbr/></p>
23027             </td>
23028
23029             <td class="entry_units">
23030             </td>
23031
23032             <td class="entry_range">
23033               <p>&gt;= 0</p>
23034             </td>
23035
23036             <td class="entry_hal_version">
23037               <p>3.<wbr/>2</p>
23038             </td>
23039
23040             <td class="entry_tags">
23041               <ul class="entry_tags">
23042                   <li><a href="#tag_RAW">RAW</a></li>
23043               </ul>
23044             </td>
23045
23046           </tr>
23047           <tr class="entries_header">
23048             <th class="th_details" colspan="6">Details</th>
23049           </tr>
23050           <tr class="entry_cont">
23051             <td class="entry_details" colspan="6">
23052               <p>This value is an estimate of the worst case split between the
23053 Bayer green channels in the red and blue rows in the sensor color
23054 filter array.<wbr/></p>
23055 <p>The green split is calculated as follows:</p>
23056 <ol>
23057 <li>A 5x5 pixel (or larger) window W within the active sensor array is
23058 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
23059 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
23060 chosen is implementation defined,<wbr/> and should be chosen to provide a
23061 green split estimate that is both representative of the entire image
23062 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
23063 <li>The arithmetic mean of the green channels from the red
23064 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
23065 <li>The arithmetic mean of the green channels from the blue
23066 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
23067 <li>The maximum ratio R of the two means is computed as follows:
23068 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
23069 </ol>
23070 <p>The ratio R is the green split divergence reported for this property,<wbr/>
23071 which represents how much the green channels differ in the mosaic
23072 pattern.<wbr/>  This value is typically used to determine the treatment of
23073 the green mosaic channels when demosaicing.<wbr/></p>
23074 <p>The green split value can be roughly interpreted as follows:</p>
23075 <ul>
23076 <li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
23077 <li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
23078 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
23079 <li>R &gt; 1.<wbr/>20 will require strong software correction to produce
23080 a usuable image (&gt;20% divergence).<wbr/></li>
23081 </ul>
23082             </td>
23083           </tr>
23084
23085           <tr class="entries_header">
23086             <th class="th_details" colspan="6">HAL Implementation Details</th>
23087           </tr>
23088           <tr class="entry_cont">
23089             <td class="entry_details" colspan="6">
23090               <p>The green split given may be a static value based on prior
23091 characterization of the camera sensor using the green split
23092 calculation method given here over a large,<wbr/> representative,<wbr/> sample
23093 set of images.<wbr/>  Other methods of calculation that produce equivalent
23094 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
23095             </td>
23096           </tr>
23097
23098           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23099            <!-- end of entry -->
23100         
23101                 
23102           <tr class="entry" id="dynamic_android.sensor.testPatternData">
23103             <td class="entry_name
23104              " rowspan="5">
23105               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
23106             </td>
23107             <td class="entry_type">
23108                 <span class="entry_type_name">int32</span>
23109                 <span class="entry_type_container">x</span>
23110
23111                 <span class="entry_type_array">
23112                   4
23113                 </span>
23114               <span class="entry_type_visibility"> [public]</span>
23115
23116
23117
23118
23119
23120
23121             </td> <!-- entry_type -->
23122
23123             <td class="entry_description">
23124               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
23125 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
23126             </td>
23127
23128             <td class="entry_units">
23129             </td>
23130
23131             <td class="entry_range">
23132             </td>
23133
23134             <td class="entry_hal_version">
23135               <p>3.<wbr/>2</p>
23136             </td>
23137
23138             <td class="entry_tags">
23139             </td>
23140
23141           </tr>
23142           <tr class="entries_header">
23143             <th class="th_details" colspan="6">Details</th>
23144           </tr>
23145           <tr class="entry_cont">
23146             <td class="entry_details" colspan="6">
23147               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
23148 The camera device then uses the most significant X bits
23149 that correspond to how many bits are in its Bayer raw sensor
23150 output.<wbr/></p>
23151 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
23152 10 most significant bits from each color channel.<wbr/></p>
23153             </td>
23154           </tr>
23155
23156           <tr class="entries_header">
23157             <th class="th_details" colspan="6">HAL Implementation Details</th>
23158           </tr>
23159           <tr class="entry_cont">
23160             <td class="entry_details" colspan="6">
23161               
23162             </td>
23163           </tr>
23164
23165           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23166            <!-- end of entry -->
23167         
23168                 
23169           <tr class="entry" id="dynamic_android.sensor.testPatternMode">
23170             <td class="entry_name
23171              " rowspan="5">
23172               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
23173             </td>
23174             <td class="entry_type">
23175                 <span class="entry_type_name entry_type_name_enum">int32</span>
23176
23177               <span class="entry_type_visibility"> [public]</span>
23178
23179
23180
23181
23182
23183                 <ul class="entry_type_enum">
23184                   <li>
23185                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23186                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
23187 device returns captures from the image sensor.<wbr/></p>
23188 <p>This is the default if the key is not set.<wbr/></p></span>
23189                   </li>
23190                   <li>
23191                     <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
23192                     <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
23193 respective color channel provided in
23194 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
23195 <p>For example:</p>
23196 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
23197 </code></pre>
23198 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
23199 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
23200 </code></pre>
23201 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
23202 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
23203                   </li>
23204                   <li>
23205                     <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
23206                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
23207 <p>The vertical bars (left-to-right) are as follows:</p>
23208 <ul>
23209 <li>100% white</li>
23210 <li>yellow</li>
23211 <li>cyan</li>
23212 <li>green</li>
23213 <li>magenta</li>
23214 <li>red</li>
23215 <li>blue</li>
23216 <li>black</li>
23217 </ul>
23218 <p>In general the image would look like the following:</p>
23219 <pre><code>W Y C G M R B K
23220 W Y C G M R B K
23221 W Y C G M R B K
23222 W Y C G M R B K
23223 W Y C G M R B K
23224 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23225 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23226 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
23227
23228 (B = Blue,<wbr/> K = Black)
23229 </code></pre>
23230 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
23231 When this is not possible,<wbr/> the bar size should be rounded
23232 down to the nearest integer and the pattern can repeat
23233 on the right side.<wbr/></p>
23234 <p>Each bar's height must always take up the full sensor
23235 pixel array height.<wbr/></p>
23236 <p>Each pixel in this test pattern must be set to either
23237 0% intensity or 100% intensity.<wbr/></p></span>
23238                   </li>
23239                   <li>
23240                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
23241                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
23242 each bar should start at its specified color at the top,<wbr/>
23243 and fade to gray at the bottom.<wbr/></p>
23244 <p>Furthermore each bar is further subdivided into a left and
23245 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
23246 and the right half should have a quantized gradient.<wbr/></p>
23247 <p>In particular,<wbr/> the right half's should consist of blocks of the
23248 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
23249 <p>The least significant bits in the quantized gradient should
23250 be copied from the most significant bits of the smooth gradient.<wbr/></p>
23251 <p>The height of each bar should always be a multiple of 128.<wbr/>
23252 When this is not the case,<wbr/> the pattern should repeat at the bottom
23253 of the image.<wbr/></p></span>
23254                   </li>
23255                   <li>
23256                     <span class="entry_type_enum_name">PN9 (v3.2)</span>
23257                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
23258 generated from a PN9 512-bit sequence (typically implemented
23259 in hardware with a linear feedback shift register).<wbr/></p>
23260 <p>The generator should be reset at the beginning of each frame,<wbr/>
23261 and thus each subsequent raw frame with this test pattern should
23262 be exactly the same as the last.<wbr/></p></span>
23263                   </li>
23264                   <li>
23265                     <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
23266                     <span class="entry_type_enum_value">256</span>
23267                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
23268 available only on this camera device are at least this numeric
23269 value.<wbr/></p>
23270 <p>All of the custom test patterns will be static
23271 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
23272                   </li>
23273                 </ul>
23274
23275             </td> <!-- entry_type -->
23276
23277             <td class="entry_description">
23278               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
23279 doing a real exposure from the camera.<wbr/></p>
23280             </td>
23281
23282             <td class="entry_units">
23283             </td>
23284
23285             <td class="entry_range">
23286               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
23287             </td>
23288
23289             <td class="entry_hal_version">
23290               <p>3.<wbr/>2</p>
23291             </td>
23292
23293             <td class="entry_tags">
23294             </td>
23295
23296           </tr>
23297           <tr class="entries_header">
23298             <th class="th_details" colspan="6">Details</th>
23299           </tr>
23300           <tr class="entry_cont">
23301             <td class="entry_details" colspan="6">
23302               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
23303 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
23304 work as normal.<wbr/></p>
23305 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
23306 occur (and that the test pattern remain unmodified,<wbr/> since the flash
23307 would not actually affect it).<wbr/></p>
23308 <p>Defaults to OFF.<wbr/></p>
23309             </td>
23310           </tr>
23311
23312           <tr class="entries_header">
23313             <th class="th_details" colspan="6">HAL Implementation Details</th>
23314           </tr>
23315           <tr class="entry_cont">
23316             <td class="entry_details" colspan="6">
23317               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
23318 <p>The HAL may choose to substitute test patterns from the sensor
23319 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
23320 indistinguishable to the ISP whether the data came from the
23321 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
23322             </td>
23323           </tr>
23324
23325           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23326            <!-- end of entry -->
23327         
23328                 
23329           <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
23330             <td class="entry_name
23331              " rowspan="5">
23332               android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
23333             </td>
23334             <td class="entry_type">
23335                 <span class="entry_type_name">int64</span>
23336
23337               <span class="entry_type_visibility"> [public]</span>
23338
23339
23340               <span class="entry_type_hwlevel">[limited] </span>
23341
23342
23343
23344
23345             </td> <!-- entry_type -->
23346
23347             <td class="entry_description">
23348               <p>Duration between the start of first row exposure
23349 and the start of last row exposure.<wbr/></p>
23350             </td>
23351
23352             <td class="entry_units">
23353               Nanoseconds
23354             </td>
23355
23356             <td class="entry_range">
23357               <p>&gt;= 0 and &lt;
23358 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
23359             </td>
23360
23361             <td class="entry_hal_version">
23362               <p>3.<wbr/>2</p>
23363             </td>
23364
23365             <td class="entry_tags">
23366               <ul class="entry_tags">
23367                   <li><a href="#tag_V1">V1</a></li>
23368               </ul>
23369             </td>
23370
23371           </tr>
23372           <tr class="entries_header">
23373             <th class="th_details" colspan="6">Details</th>
23374           </tr>
23375           <tr class="entry_cont">
23376             <td class="entry_details" colspan="6">
23377               <p>This is the exposure time skew between the first and last
23378 row exposure start times.<wbr/> The first row and the last row are
23379 the first and last rows inside of the
23380 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23381 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
23382 to the frame readout time.<wbr/></p>
23383             </td>
23384           </tr>
23385
23386           <tr class="entries_header">
23387             <th class="th_details" colspan="6">HAL Implementation Details</th>
23388           </tr>
23389           <tr class="entry_cont">
23390             <td class="entry_details" colspan="6">
23391               <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
23392 exposure at the same time.<wbr/></p>
23393             </td>
23394           </tr>
23395
23396           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23397            <!-- end of entry -->
23398         
23399                 
23400           <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
23401             <td class="entry_name
23402              " rowspan="5">
23403               android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
23404             </td>
23405             <td class="entry_type">
23406                 <span class="entry_type_name">float</span>
23407                 <span class="entry_type_container">x</span>
23408
23409                 <span class="entry_type_array">
23410                   4
23411                 </span>
23412               <span class="entry_type_visibility"> [public]</span>
23413
23414
23415
23416
23417                 <div class="entry_type_notes">2x2 raw count block</div>
23418
23419
23420             </td> <!-- entry_type -->
23421
23422             <td class="entry_description">
23423               <p>A per-frame dynamic black level offset for each of the color filter
23424 arrangement (CFA) mosaic channels.<wbr/></p>
23425             </td>
23426
23427             <td class="entry_units">
23428             </td>
23429
23430             <td class="entry_range">
23431               <p>&gt;= 0 for each.<wbr/></p>
23432             </td>
23433
23434             <td class="entry_hal_version">
23435               <p>3.<wbr/>2</p>
23436             </td>
23437
23438             <td class="entry_tags">
23439               <ul class="entry_tags">
23440                   <li><a href="#tag_RAW">RAW</a></li>
23441               </ul>
23442             </td>
23443
23444           </tr>
23445           <tr class="entries_header">
23446             <th class="th_details" colspan="6">Details</th>
23447           </tr>
23448           <tr class="entry_cont">
23449             <td class="entry_details" colspan="6">
23450               <p>Camera sensor black levels may vary dramatically for different
23451 capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
23452 level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
23453 inaccurate to represent the actual value on a per-frame basis.<wbr/> The
23454 camera device internal pipeline relies on reliable black level values
23455 to process the raw images appropriately.<wbr/> To get the best image
23456 quality,<wbr/> the camera device may choose to estimate the per frame black
23457 level values either based on optically shielded black regions
23458 (<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
23459 <p>This key reports the camera device estimated per-frame zero light
23460 value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
23461 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
23462 approximation of the actual black level values.<wbr/> This value is the
23463 black level used in camera device internal image processing pipeline
23464 and generally more accurate than the fixed black level values.<wbr/>
23465 However,<wbr/> since they are estimated values by the camera device,<wbr/> they
23466 may not be as accurate as the black level values calculated from the
23467 optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
23468 <p>The values are given in the same order as channels listed for the CFA
23469 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
23470 nth value given corresponds to the black level offset for the nth
23471 color channel listed in the CFA.<wbr/></p>
23472 <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
23473 camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
23474             </td>
23475           </tr>
23476
23477           <tr class="entries_header">
23478             <th class="th_details" colspan="6">HAL Implementation Details</th>
23479           </tr>
23480           <tr class="entry_cont">
23481             <td class="entry_details" colspan="6">
23482               <p>The values are given in row-column scan order,<wbr/> with the first value
23483 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
23484             </td>
23485           </tr>
23486
23487           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23488            <!-- end of entry -->
23489         
23490                 
23491           <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
23492             <td class="entry_name
23493              " rowspan="5">
23494               android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
23495             </td>
23496             <td class="entry_type">
23497                 <span class="entry_type_name">int32</span>
23498
23499               <span class="entry_type_visibility"> [public]</span>
23500
23501
23502
23503
23504
23505
23506             </td> <!-- entry_type -->
23507
23508             <td class="entry_description">
23509               <p>Maximum raw value output by sensor for this frame.<wbr/></p>
23510             </td>
23511
23512             <td class="entry_units">
23513             </td>
23514
23515             <td class="entry_range">
23516               <p>&gt;= 0</p>
23517             </td>
23518
23519             <td class="entry_hal_version">
23520               <p>3.<wbr/>2</p>
23521             </td>
23522
23523             <td class="entry_tags">
23524               <ul class="entry_tags">
23525                   <li><a href="#tag_RAW">RAW</a></li>
23526               </ul>
23527             </td>
23528
23529           </tr>
23530           <tr class="entries_header">
23531             <th class="th_details" colspan="6">Details</th>
23532           </tr>
23533           <tr class="entry_cont">
23534             <td class="entry_details" colspan="6">
23535               <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
23536 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
23537 level will change accordingly.<wbr/> This key is similar to
23538 <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
23539 estimated white level for each frame.<wbr/></p>
23540 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
23541 available or the camera device advertises this key via
23542 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
23543             </td>
23544           </tr>
23545
23546           <tr class="entries_header">
23547             <th class="th_details" colspan="6">HAL Implementation Details</th>
23548           </tr>
23549           <tr class="entry_cont">
23550             <td class="entry_details" colspan="6">
23551               <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
23552 so the value for linear sensors should not be significantly lower
23553 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
23554             </td>
23555           </tr>
23556
23557           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23558            <!-- end of entry -->
23559         
23560         
23561
23562       <!-- end of kind -->
23563       </tbody>
23564
23565   <!-- end of section -->
23566   <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
23567
23568
23569       <tr><td colspan="7" class="kind">controls</td></tr>
23570
23571       <thead class="entries_header">
23572         <tr>
23573           <th class="th_name">Property Name</th>
23574           <th class="th_type">Type</th>
23575           <th class="th_description">Description</th>
23576           <th class="th_units">Units</th>
23577           <th class="th_range">Range</th>
23578           <th class="th_hal_version">Initial HIDL HAL version</th>
23579           <th class="th_tags">Tags</th>
23580         </tr>
23581       </thead>
23582
23583       <tbody>
23584
23585         
23586
23587         
23588
23589         
23590
23591         
23592
23593                 
23594           <tr class="entry" id="controls_android.shading.mode">
23595             <td class="entry_name
23596              " rowspan="3">
23597               android.<wbr/>shading.<wbr/>mode
23598             </td>
23599             <td class="entry_type">
23600                 <span class="entry_type_name entry_type_name_enum">byte</span>
23601
23602               <span class="entry_type_visibility"> [public]</span>
23603
23604
23605               <span class="entry_type_hwlevel">[full] </span>
23606
23607
23608
23609                 <ul class="entry_type_enum">
23610                   <li>
23611                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23612                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23613                   </li>
23614                   <li>
23615                     <span class="entry_type_enum_name">FAST (v3.2)</span>
23616                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23617 frame rate relative to sensor raw output</p></span>
23618                   </li>
23619                   <li>
23620                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23621                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23622 cost of possibly reduced frame rate.<wbr/></p></span>
23623                   </li>
23624                 </ul>
23625
23626             </td> <!-- entry_type -->
23627
23628             <td class="entry_description">
23629               <p>Quality of lens shading correction applied
23630 to the image data.<wbr/></p>
23631             </td>
23632
23633             <td class="entry_units">
23634             </td>
23635
23636             <td class="entry_range">
23637               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23638             </td>
23639
23640             <td class="entry_hal_version">
23641               <p>3.<wbr/>2</p>
23642             </td>
23643
23644             <td class="entry_tags">
23645             </td>
23646
23647           </tr>
23648           <tr class="entries_header">
23649             <th class="th_details" colspan="6">Details</th>
23650           </tr>
23651           <tr class="entry_cont">
23652             <td class="entry_details" colspan="6">
23653               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23654 camera device,<wbr/> and an identity lens shading map data will be provided
23655 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
23656 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23657 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
23658 map shown below:</p>
23659 <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/>
23660  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/>
23661  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/>
23662  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/>
23663  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/>
23664  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 ]
23665 </code></pre>
23666 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23667 device.<wbr/> Applications can request lens shading map data by setting
23668 <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
23669 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
23670 data will be the one applied by the camera device for this capture request.<wbr/></p>
23671 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23672 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23673 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>
23674 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23675 to be converged before using the returned shading map data.<wbr/></p>
23676             </td>
23677           </tr>
23678
23679
23680           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23681            <!-- end of entry -->
23682         
23683                 
23684           <tr class="entry" id="controls_android.shading.strength">
23685             <td class="entry_name
23686              " rowspan="1">
23687               android.<wbr/>shading.<wbr/>strength
23688             </td>
23689             <td class="entry_type">
23690                 <span class="entry_type_name">byte</span>
23691
23692               <span class="entry_type_visibility"> [system]</span>
23693
23694
23695
23696
23697
23698
23699             </td> <!-- entry_type -->
23700
23701             <td class="entry_description">
23702               <p>Control the amount of shading correction
23703 applied to the images</p>
23704             </td>
23705
23706             <td class="entry_units">
23707               unitless: 1-10; 10 is full shading
23708           compensation
23709             </td>
23710
23711             <td class="entry_range">
23712             </td>
23713
23714             <td class="entry_hal_version">
23715               <p>3.<wbr/>2</p>
23716             </td>
23717
23718             <td class="entry_tags">
23719               <ul class="entry_tags">
23720                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23721               </ul>
23722             </td>
23723
23724           </tr>
23725
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       <tr><td colspan="7" class="kind">dynamic</td></tr>
23735
23736       <thead class="entries_header">
23737         <tr>
23738           <th class="th_name">Property Name</th>
23739           <th class="th_type">Type</th>
23740           <th class="th_description">Description</th>
23741           <th class="th_units">Units</th>
23742           <th class="th_range">Range</th>
23743           <th class="th_hal_version">Initial HIDL HAL version</th>
23744           <th class="th_tags">Tags</th>
23745         </tr>
23746       </thead>
23747
23748       <tbody>
23749
23750         
23751
23752         
23753
23754         
23755
23756         
23757
23758                 
23759           <tr class="entry" id="dynamic_android.shading.mode">
23760             <td class="entry_name
23761              " rowspan="3">
23762               android.<wbr/>shading.<wbr/>mode
23763             </td>
23764             <td class="entry_type">
23765                 <span class="entry_type_name entry_type_name_enum">byte</span>
23766
23767               <span class="entry_type_visibility"> [public]</span>
23768
23769
23770               <span class="entry_type_hwlevel">[full] </span>
23771
23772
23773
23774                 <ul class="entry_type_enum">
23775                   <li>
23776                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23777                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23778                   </li>
23779                   <li>
23780                     <span class="entry_type_enum_name">FAST (v3.2)</span>
23781                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23782 frame rate relative to sensor raw output</p></span>
23783                   </li>
23784                   <li>
23785                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23786                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23787 cost of possibly reduced frame rate.<wbr/></p></span>
23788                   </li>
23789                 </ul>
23790
23791             </td> <!-- entry_type -->
23792
23793             <td class="entry_description">
23794               <p>Quality of lens shading correction applied
23795 to the image data.<wbr/></p>
23796             </td>
23797
23798             <td class="entry_units">
23799             </td>
23800
23801             <td class="entry_range">
23802               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23803             </td>
23804
23805             <td class="entry_hal_version">
23806               <p>3.<wbr/>2</p>
23807             </td>
23808
23809             <td class="entry_tags">
23810             </td>
23811
23812           </tr>
23813           <tr class="entries_header">
23814             <th class="th_details" colspan="6">Details</th>
23815           </tr>
23816           <tr class="entry_cont">
23817             <td class="entry_details" colspan="6">
23818               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23819 camera device,<wbr/> and an identity lens shading map data will be provided
23820 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
23821 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23822 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
23823 map shown below:</p>
23824 <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/>
23825  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/>
23826  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/>
23827  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/>
23828  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/>
23829  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 ]
23830 </code></pre>
23831 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23832 device.<wbr/> Applications can request lens shading map data by setting
23833 <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
23834 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
23835 data will be the one applied by the camera device for this capture request.<wbr/></p>
23836 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23837 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23838 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>
23839 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23840 to be converged before using the returned shading map data.<wbr/></p>
23841             </td>
23842           </tr>
23843
23844
23845           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23846            <!-- end of entry -->
23847         
23848         
23849
23850       <!-- end of kind -->
23851       </tbody>
23852       <tr><td colspan="7" class="kind">static</td></tr>
23853
23854       <thead class="entries_header">
23855         <tr>
23856           <th class="th_name">Property Name</th>
23857           <th class="th_type">Type</th>
23858           <th class="th_description">Description</th>
23859           <th class="th_units">Units</th>
23860           <th class="th_range">Range</th>
23861           <th class="th_hal_version">Initial HIDL HAL version</th>
23862           <th class="th_tags">Tags</th>
23863         </tr>
23864       </thead>
23865
23866       <tbody>
23867
23868         
23869
23870         
23871
23872         
23873
23874         
23875
23876                 
23877           <tr class="entry" id="static_android.shading.availableModes">
23878             <td class="entry_name
23879              " rowspan="5">
23880               android.<wbr/>shading.<wbr/>available<wbr/>Modes
23881             </td>
23882             <td class="entry_type">
23883                 <span class="entry_type_name">byte</span>
23884                 <span class="entry_type_container">x</span>
23885
23886                 <span class="entry_type_array">
23887                   n
23888                 </span>
23889               <span class="entry_type_visibility"> [public as enumList]</span>
23890
23891
23892               <span class="entry_type_hwlevel">[legacy] </span>
23893
23894
23895                 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
23896
23897
23898             </td> <!-- entry_type -->
23899
23900             <td class="entry_description">
23901               <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>
23902             </td>
23903
23904             <td class="entry_units">
23905             </td>
23906
23907             <td class="entry_range">
23908               <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
23909             </td>
23910
23911             <td class="entry_hal_version">
23912               <p>3.<wbr/>2</p>
23913             </td>
23914
23915             <td class="entry_tags">
23916             </td>
23917
23918           </tr>
23919           <tr class="entries_header">
23920             <th class="th_details" colspan="6">Details</th>
23921           </tr>
23922           <tr class="entry_cont">
23923             <td class="entry_details" colspan="6">
23924               <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
23925 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
23926 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
23927 LEGACY devices will always only support FAST mode.<wbr/></p>
23928             </td>
23929           </tr>
23930
23931           <tr class="entries_header">
23932             <th class="th_details" colspan="6">HAL Implementation Details</th>
23933           </tr>
23934           <tr class="entry_cont">
23935             <td class="entry_details" colspan="6">
23936               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
23937 available on the camera device,<wbr/> but the underlying implementation can be the same for
23938 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
23939 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
23940             </td>
23941           </tr>
23942
23943           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23944            <!-- end of entry -->
23945         
23946         
23947
23948       <!-- end of kind -->
23949       </tbody>
23950
23951   <!-- end of section -->
23952   <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
23953
23954
23955       <tr><td colspan="7" class="kind">controls</td></tr>
23956
23957       <thead class="entries_header">
23958         <tr>
23959           <th class="th_name">Property Name</th>
23960           <th class="th_type">Type</th>
23961           <th class="th_description">Description</th>
23962           <th class="th_units">Units</th>
23963           <th class="th_range">Range</th>
23964           <th class="th_hal_version">Initial HIDL HAL version</th>
23965           <th class="th_tags">Tags</th>
23966         </tr>
23967       </thead>
23968
23969       <tbody>
23970
23971         
23972
23973         
23974
23975         
23976
23977         
23978
23979                 
23980           <tr class="entry" id="controls_android.statistics.faceDetectMode">
23981             <td class="entry_name
23982              " rowspan="5">
23983               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
23984             </td>
23985             <td class="entry_type">
23986                 <span class="entry_type_name entry_type_name_enum">byte</span>
23987
23988               <span class="entry_type_visibility"> [public]</span>
23989
23990
23991               <span class="entry_type_hwlevel">[legacy] </span>
23992
23993
23994
23995                 <ul class="entry_type_enum">
23996                   <li>
23997                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23998                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
23999 results.<wbr/></p></span>
24000                   </li>
24001                   <li>
24002                     <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24003                     <span class="entry_type_enum_optional">[optional]</span>
24004                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24005                   </li>
24006                   <li>
24007                     <span class="entry_type_enum_name">FULL (v3.2)</span>
24008                     <span class="entry_type_enum_optional">[optional]</span>
24009                     <span class="entry_type_enum_notes"><p>Return all face
24010 metadata.<wbr/></p>
24011 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24012                   </li>
24013                 </ul>
24014
24015             </td> <!-- entry_type -->
24016
24017             <td class="entry_description">
24018               <p>Operating mode for the face detector
24019 unit.<wbr/></p>
24020             </td>
24021
24022             <td class="entry_units">
24023             </td>
24024
24025             <td class="entry_range">
24026               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24027             </td>
24028
24029             <td class="entry_hal_version">
24030               <p>3.<wbr/>2</p>
24031             </td>
24032
24033             <td class="entry_tags">
24034               <ul class="entry_tags">
24035                   <li><a href="#tag_BC">BC</a></li>
24036               </ul>
24037             </td>
24038
24039           </tr>
24040           <tr class="entries_header">
24041             <th class="th_details" colspan="6">Details</th>
24042           </tr>
24043           <tr class="entry_cont">
24044             <td class="entry_details" colspan="6">
24045               <p>Whether face detection is enabled,<wbr/> and whether it
24046 should output just the basic fields or the full set of
24047 fields.<wbr/></p>
24048             </td>
24049           </tr>
24050
24051           <tr class="entries_header">
24052             <th class="th_details" colspan="6">HAL Implementation Details</th>
24053           </tr>
24054           <tr class="entry_cont">
24055             <td class="entry_details" colspan="6">
24056               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
24057 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
24058 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
24059 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
24060             </td>
24061           </tr>
24062
24063           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24064            <!-- end of entry -->
24065         
24066                 
24067           <tr class="entry" id="controls_android.statistics.histogramMode">
24068             <td class="entry_name
24069              " rowspan="1">
24070               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
24071             </td>
24072             <td class="entry_type">
24073                 <span class="entry_type_name entry_type_name_enum">byte</span>
24074
24075               <span class="entry_type_visibility"> [system as boolean]</span>
24076
24077
24078
24079
24080
24081                 <ul class="entry_type_enum">
24082                   <li>
24083                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24084                   </li>
24085                   <li>
24086                     <span class="entry_type_enum_name">ON (v3.2)</span>
24087                   </li>
24088                 </ul>
24089
24090             </td> <!-- entry_type -->
24091
24092             <td class="entry_description">
24093               <p>Operating mode for histogram
24094 generation</p>
24095             </td>
24096
24097             <td class="entry_units">
24098             </td>
24099
24100             <td class="entry_range">
24101             </td>
24102
24103             <td class="entry_hal_version">
24104               <p>3.<wbr/>2</p>
24105             </td>
24106
24107             <td class="entry_tags">
24108               <ul class="entry_tags">
24109                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24110               </ul>
24111             </td>
24112
24113           </tr>
24114
24115
24116           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24117            <!-- end of entry -->
24118         
24119                 
24120           <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
24121             <td class="entry_name
24122              " rowspan="1">
24123               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
24124             </td>
24125             <td class="entry_type">
24126                 <span class="entry_type_name entry_type_name_enum">byte</span>
24127
24128               <span class="entry_type_visibility"> [system as boolean]</span>
24129
24130
24131
24132
24133
24134                 <ul class="entry_type_enum">
24135                   <li>
24136                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24137                   </li>
24138                   <li>
24139                     <span class="entry_type_enum_name">ON (v3.2)</span>
24140                   </li>
24141                 </ul>
24142
24143             </td> <!-- entry_type -->
24144
24145             <td class="entry_description">
24146               <p>Operating mode for sharpness map
24147 generation</p>
24148             </td>
24149
24150             <td class="entry_units">
24151             </td>
24152
24153             <td class="entry_range">
24154             </td>
24155
24156             <td class="entry_hal_version">
24157               <p>3.<wbr/>2</p>
24158             </td>
24159
24160             <td class="entry_tags">
24161               <ul class="entry_tags">
24162                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24163               </ul>
24164             </td>
24165
24166           </tr>
24167
24168
24169           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24170            <!-- end of entry -->
24171         
24172                 
24173           <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
24174             <td class="entry_name
24175              " rowspan="3">
24176               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
24177             </td>
24178             <td class="entry_type">
24179                 <span class="entry_type_name entry_type_name_enum">byte</span>
24180
24181               <span class="entry_type_visibility"> [public as boolean]</span>
24182
24183
24184
24185
24186
24187                 <ul class="entry_type_enum">
24188                   <li>
24189                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24190                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
24191                   </li>
24192                   <li>
24193                     <span class="entry_type_enum_name">ON (v3.2)</span>
24194                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
24195                   </li>
24196                 </ul>
24197
24198             </td> <!-- entry_type -->
24199
24200             <td class="entry_description">
24201               <p>Operating mode for hot pixel map generation.<wbr/></p>
24202             </td>
24203
24204             <td class="entry_units">
24205             </td>
24206
24207             <td class="entry_range">
24208               <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>
24209             </td>
24210
24211             <td class="entry_hal_version">
24212               <p>3.<wbr/>2</p>
24213             </td>
24214
24215             <td class="entry_tags">
24216               <ul class="entry_tags">
24217                   <li><a href="#tag_V1">V1</a></li>
24218                   <li><a href="#tag_RAW">RAW</a></li>
24219               </ul>
24220             </td>
24221
24222           </tr>
24223           <tr class="entries_header">
24224             <th class="th_details" colspan="6">Details</th>
24225           </tr>
24226           <tr class="entry_cont">
24227             <td class="entry_details" colspan="6">
24228               <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/>
24229 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
24230             </td>
24231           </tr>
24232
24233
24234           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24235            <!-- end of entry -->
24236         
24237                 
24238           <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
24239             <td class="entry_name
24240              " rowspan="3">
24241               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
24242             </td>
24243             <td class="entry_type">
24244                 <span class="entry_type_name entry_type_name_enum">byte</span>
24245
24246               <span class="entry_type_visibility"> [public]</span>
24247
24248
24249               <span class="entry_type_hwlevel">[full] </span>
24250
24251
24252
24253                 <ul class="entry_type_enum">
24254                   <li>
24255                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24256                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
24257                   </li>
24258                   <li>
24259                     <span class="entry_type_enum_name">ON (v3.2)</span>
24260                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
24261                   </li>
24262                 </ul>
24263
24264             </td> <!-- entry_type -->
24265
24266             <td class="entry_description">
24267               <p>Whether the camera device will output the lens
24268 shading map in output result metadata.<wbr/></p>
24269             </td>
24270
24271             <td class="entry_units">
24272             </td>
24273
24274             <td class="entry_range">
24275               <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>
24276             </td>
24277
24278             <td class="entry_hal_version">
24279               <p>3.<wbr/>2</p>
24280             </td>
24281
24282             <td class="entry_tags">
24283               <ul class="entry_tags">
24284                   <li><a href="#tag_RAW">RAW</a></li>
24285               </ul>
24286             </td>
24287
24288           </tr>
24289           <tr class="entries_header">
24290             <th class="th_details" colspan="6">Details</th>
24291           </tr>
24292           <tr class="entry_cont">
24293             <td class="entry_details" colspan="6">
24294               <p>When set to ON,<wbr/>
24295 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
24296 the output result metadata.<wbr/></p>
24297 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24298             </td>
24299           </tr>
24300
24301
24302           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24303            <!-- end of entry -->
24304         
24305                 
24306           <tr class="entry" id="controls_android.statistics.oisDataMode">
24307             <td class="entry_name
24308              " rowspan="1">
24309               android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
24310             </td>
24311             <td class="entry_type">
24312                 <span class="entry_type_name entry_type_name_enum">byte</span>
24313
24314               <span class="entry_type_visibility"> [public]</span>
24315
24316
24317
24318
24319
24320                 <ul class="entry_type_enum">
24321                   <li>
24322                     <span class="entry_type_enum_name">OFF (v3.3)</span>
24323                     <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
24324                   </li>
24325                   <li>
24326                     <span class="entry_type_enum_name">ON (v3.3)</span>
24327                     <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
24328                   </li>
24329                 </ul>
24330
24331             </td> <!-- entry_type -->
24332
24333             <td class="entry_description">
24334               <p>A control for selecting whether OIS position information is included in output
24335 result metadata.<wbr/></p>
24336             </td>
24337
24338             <td class="entry_units">
24339             </td>
24340
24341             <td class="entry_range">
24342               <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
24343             </td>
24344
24345             <td class="entry_hal_version">
24346               <p>3.<wbr/>3</p>
24347             </td>
24348
24349             <td class="entry_tags">
24350             </td>
24351
24352           </tr>
24353
24354
24355           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24356            <!-- end of entry -->
24357         
24358         
24359
24360       <!-- end of kind -->
24361       </tbody>
24362       <tr><td colspan="7" class="kind">static</td></tr>
24363
24364       <thead class="entries_header">
24365         <tr>
24366           <th class="th_name">Property Name</th>
24367           <th class="th_type">Type</th>
24368           <th class="th_description">Description</th>
24369           <th class="th_units">Units</th>
24370           <th class="th_range">Range</th>
24371           <th class="th_hal_version">Initial HIDL HAL version</th>
24372           <th class="th_tags">Tags</th>
24373         </tr>
24374       </thead>
24375
24376       <tbody>
24377
24378         
24379
24380         
24381
24382         
24383
24384         
24385                 
24386             
24387
24388                 
24389           <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
24390             <td class="entry_name
24391              " rowspan="3">
24392               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
24393             </td>
24394             <td class="entry_type">
24395                 <span class="entry_type_name">byte</span>
24396                 <span class="entry_type_container">x</span>
24397
24398                 <span class="entry_type_array">
24399                   n
24400                 </span>
24401               <span class="entry_type_visibility"> [public as enumList]</span>
24402
24403
24404               <span class="entry_type_hwlevel">[legacy] </span>
24405
24406
24407                 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
24408
24409
24410             </td> <!-- entry_type -->
24411
24412             <td class="entry_description">
24413               <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
24414 supported by this camera device.<wbr/></p>
24415             </td>
24416
24417             <td class="entry_units">
24418             </td>
24419
24420             <td class="entry_range">
24421               <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
24422             </td>
24423
24424             <td class="entry_hal_version">
24425               <p>3.<wbr/>2</p>
24426             </td>
24427
24428             <td class="entry_tags">
24429             </td>
24430
24431           </tr>
24432           <tr class="entries_header">
24433             <th class="th_details" colspan="6">Details</th>
24434           </tr>
24435           <tr class="entry_cont">
24436             <td class="entry_details" colspan="6">
24437               <p>OFF is always supported.<wbr/></p>
24438             </td>
24439           </tr>
24440
24441
24442           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24443            <!-- end of entry -->
24444         
24445                 
24446           <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
24447             <td class="entry_name
24448              " rowspan="1">
24449               android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
24450             </td>
24451             <td class="entry_type">
24452                 <span class="entry_type_name">int32</span>
24453
24454               <span class="entry_type_visibility"> [system]</span>
24455
24456
24457
24458
24459
24460
24461             </td> <!-- entry_type -->
24462
24463             <td class="entry_description">
24464               <p>Number of histogram buckets
24465 supported</p>
24466             </td>
24467
24468             <td class="entry_units">
24469             </td>
24470
24471             <td class="entry_range">
24472               <p>&gt;= 64</p>
24473             </td>
24474
24475             <td class="entry_hal_version">
24476               <p>3.<wbr/>2</p>
24477             </td>
24478
24479             <td class="entry_tags">
24480               <ul class="entry_tags">
24481                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24482               </ul>
24483             </td>
24484
24485           </tr>
24486
24487
24488           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24489            <!-- end of entry -->
24490         
24491                 
24492           <tr class="entry" id="static_android.statistics.info.maxFaceCount">
24493             <td class="entry_name
24494              " rowspan="1">
24495               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
24496             </td>
24497             <td class="entry_type">
24498                 <span class="entry_type_name">int32</span>
24499
24500               <span class="entry_type_visibility"> [public]</span>
24501
24502
24503               <span class="entry_type_hwlevel">[legacy] </span>
24504
24505
24506
24507
24508             </td> <!-- entry_type -->
24509
24510             <td class="entry_description">
24511               <p>The maximum number of simultaneously detectable
24512 faces.<wbr/></p>
24513             </td>
24514
24515             <td class="entry_units">
24516             </td>
24517
24518             <td class="entry_range">
24519               <p>0 for cameras without available face detection; otherwise:
24520 <code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
24521 <code>&gt;0</code> for LEGACY devices.<wbr/></p>
24522             </td>
24523
24524             <td class="entry_hal_version">
24525               <p>3.<wbr/>2</p>
24526             </td>
24527
24528             <td class="entry_tags">
24529               <ul class="entry_tags">
24530                   <li><a href="#tag_BC">BC</a></li>
24531               </ul>
24532             </td>
24533
24534           </tr>
24535
24536
24537           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24538            <!-- end of entry -->
24539         
24540                 
24541           <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
24542             <td class="entry_name
24543              " rowspan="1">
24544               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
24545             </td>
24546             <td class="entry_type">
24547                 <span class="entry_type_name">int32</span>
24548
24549               <span class="entry_type_visibility"> [system]</span>
24550
24551
24552
24553
24554
24555
24556             </td> <!-- entry_type -->
24557
24558             <td class="entry_description">
24559               <p>Maximum value possible for a histogram
24560 bucket</p>
24561             </td>
24562
24563             <td class="entry_units">
24564             </td>
24565
24566             <td class="entry_range">
24567             </td>
24568
24569             <td class="entry_hal_version">
24570               <p>3.<wbr/>2</p>
24571             </td>
24572
24573             <td class="entry_tags">
24574               <ul class="entry_tags">
24575                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24576               </ul>
24577             </td>
24578
24579           </tr>
24580
24581
24582           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24583            <!-- end of entry -->
24584         
24585                 
24586           <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
24587             <td class="entry_name
24588              " rowspan="1">
24589               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
24590             </td>
24591             <td class="entry_type">
24592                 <span class="entry_type_name">int32</span>
24593
24594               <span class="entry_type_visibility"> [system]</span>
24595
24596
24597
24598
24599
24600
24601             </td> <!-- entry_type -->
24602
24603             <td class="entry_description">
24604               <p>Maximum value possible for a sharpness map
24605 region.<wbr/></p>
24606             </td>
24607
24608             <td class="entry_units">
24609             </td>
24610
24611             <td class="entry_range">
24612             </td>
24613
24614             <td class="entry_hal_version">
24615               <p>3.<wbr/>2</p>
24616             </td>
24617
24618             <td class="entry_tags">
24619               <ul class="entry_tags">
24620                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24621               </ul>
24622             </td>
24623
24624           </tr>
24625
24626
24627           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24628            <!-- end of entry -->
24629         
24630                 
24631           <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
24632             <td class="entry_name
24633              " rowspan="1">
24634               android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
24635             </td>
24636             <td class="entry_type">
24637                 <span class="entry_type_name">int32</span>
24638                 <span class="entry_type_container">x</span>
24639
24640                 <span class="entry_type_array">
24641                   2
24642                 </span>
24643               <span class="entry_type_visibility"> [system as size]</span>
24644
24645
24646
24647
24648                 <div class="entry_type_notes">width x height</div>
24649
24650
24651             </td> <!-- entry_type -->
24652
24653             <td class="entry_description">
24654               <p>Dimensions of the sharpness
24655 map</p>
24656             </td>
24657
24658             <td class="entry_units">
24659             </td>
24660
24661             <td class="entry_range">
24662               <p>Must be at least 32 x 32</p>
24663             </td>
24664
24665             <td class="entry_hal_version">
24666               <p>3.<wbr/>2</p>
24667             </td>
24668
24669             <td class="entry_tags">
24670               <ul class="entry_tags">
24671                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24672               </ul>
24673             </td>
24674
24675           </tr>
24676
24677
24678           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24679            <!-- end of entry -->
24680         
24681                 
24682           <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
24683             <td class="entry_name
24684              " rowspan="3">
24685               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
24686             </td>
24687             <td class="entry_type">
24688                 <span class="entry_type_name">byte</span>
24689                 <span class="entry_type_container">x</span>
24690
24691                 <span class="entry_type_array">
24692                   n
24693                 </span>
24694               <span class="entry_type_visibility"> [public as boolean]</span>
24695
24696
24697
24698
24699                 <div class="entry_type_notes">list of enums</div>
24700
24701
24702             </td> <!-- entry_type -->
24703
24704             <td class="entry_description">
24705               <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
24706 supported by this camera device.<wbr/></p>
24707             </td>
24708
24709             <td class="entry_units">
24710             </td>
24711
24712             <td class="entry_range">
24713               <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
24714             </td>
24715
24716             <td class="entry_hal_version">
24717               <p>3.<wbr/>2</p>
24718             </td>
24719
24720             <td class="entry_tags">
24721               <ul class="entry_tags">
24722                   <li><a href="#tag_V1">V1</a></li>
24723                   <li><a href="#tag_RAW">RAW</a></li>
24724               </ul>
24725             </td>
24726
24727           </tr>
24728           <tr class="entries_header">
24729             <th class="th_details" colspan="6">Details</th>
24730           </tr>
24731           <tr class="entry_cont">
24732             <td class="entry_details" colspan="6">
24733               <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
24734 <code>false</code>.<wbr/></p>
24735 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24736             </td>
24737           </tr>
24738
24739
24740           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24741            <!-- end of entry -->
24742         
24743                 
24744           <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
24745             <td class="entry_name
24746              " rowspan="3">
24747               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
24748             </td>
24749             <td class="entry_type">
24750                 <span class="entry_type_name">byte</span>
24751                 <span class="entry_type_container">x</span>
24752
24753                 <span class="entry_type_array">
24754                   n
24755                 </span>
24756               <span class="entry_type_visibility"> [public as enumList]</span>
24757
24758
24759
24760
24761                 <div class="entry_type_notes">list of enums</div>
24762
24763
24764             </td> <!-- entry_type -->
24765
24766             <td class="entry_description">
24767               <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
24768 are supported by this camera device.<wbr/></p>
24769             </td>
24770
24771             <td class="entry_units">
24772             </td>
24773
24774             <td class="entry_range">
24775               <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
24776             </td>
24777
24778             <td class="entry_hal_version">
24779               <p>3.<wbr/>2</p>
24780             </td>
24781
24782             <td class="entry_tags">
24783             </td>
24784
24785           </tr>
24786           <tr class="entries_header">
24787             <th class="th_details" colspan="6">Details</th>
24788           </tr>
24789           <tr class="entry_cont">
24790             <td class="entry_details" colspan="6">
24791               <p>If no lens shading map output is available for this camera device,<wbr/> this key will
24792 contain only OFF.<wbr/></p>
24793 <p>ON is always supported on devices with the RAW capability.<wbr/>
24794 LEGACY mode devices will always only support OFF.<wbr/></p>
24795             </td>
24796           </tr>
24797
24798
24799           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24800            <!-- end of entry -->
24801         
24802                 
24803           <tr class="entry" id="static_android.statistics.info.availableOisDataModes">
24804             <td class="entry_name
24805              " rowspan="3">
24806               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes
24807             </td>
24808             <td class="entry_type">
24809                 <span class="entry_type_name">byte</span>
24810                 <span class="entry_type_container">x</span>
24811
24812                 <span class="entry_type_array">
24813                   n
24814                 </span>
24815               <span class="entry_type_visibility"> [public as enumList]</span>
24816
24817
24818
24819
24820                 <div class="entry_type_notes">list of enums</div>
24821
24822
24823             </td> <!-- entry_type -->
24824
24825             <td class="entry_description">
24826               <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
24827 are supported by this camera device.<wbr/></p>
24828             </td>
24829
24830             <td class="entry_units">
24831             </td>
24832
24833             <td class="entry_range">
24834               <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p>
24835             </td>
24836
24837             <td class="entry_hal_version">
24838               <p>3.<wbr/>3</p>
24839             </td>
24840
24841             <td class="entry_tags">
24842             </td>
24843
24844           </tr>
24845           <tr class="entries_header">
24846             <th class="th_details" colspan="6">Details</th>
24847           </tr>
24848           <tr class="entry_cont">
24849             <td class="entry_details" colspan="6">
24850               <p>If no OIS data output is available for this camera device,<wbr/> this key will
24851 contain only OFF.<wbr/></p>
24852             </td>
24853           </tr>
24854
24855
24856           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24857            <!-- end of entry -->
24858         
24859         
24860         
24861
24862         
24863
24864       <!-- end of kind -->
24865       </tbody>
24866       <tr><td colspan="7" class="kind">dynamic</td></tr>
24867
24868       <thead class="entries_header">
24869         <tr>
24870           <th class="th_name">Property Name</th>
24871           <th class="th_type">Type</th>
24872           <th class="th_description">Description</th>
24873           <th class="th_units">Units</th>
24874           <th class="th_range">Range</th>
24875           <th class="th_hal_version">Initial HIDL HAL version</th>
24876           <th class="th_tags">Tags</th>
24877         </tr>
24878       </thead>
24879
24880       <tbody>
24881
24882         
24883
24884         
24885
24886         
24887
24888         
24889
24890                 
24891           <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
24892             <td class="entry_name
24893              " rowspan="5">
24894               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24895             </td>
24896             <td class="entry_type">
24897                 <span class="entry_type_name entry_type_name_enum">byte</span>
24898
24899               <span class="entry_type_visibility"> [public]</span>
24900
24901
24902               <span class="entry_type_hwlevel">[legacy] </span>
24903
24904
24905
24906                 <ul class="entry_type_enum">
24907                   <li>
24908                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24909                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24910 results.<wbr/></p></span>
24911                   </li>
24912                   <li>
24913                     <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24914                     <span class="entry_type_enum_optional">[optional]</span>
24915                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24916                   </li>
24917                   <li>
24918                     <span class="entry_type_enum_name">FULL (v3.2)</span>
24919                     <span class="entry_type_enum_optional">[optional]</span>
24920                     <span class="entry_type_enum_notes"><p>Return all face
24921 metadata.<wbr/></p>
24922 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24923                   </li>
24924                 </ul>
24925
24926             </td> <!-- entry_type -->
24927
24928             <td class="entry_description">
24929               <p>Operating mode for the face detector
24930 unit.<wbr/></p>
24931             </td>
24932
24933             <td class="entry_units">
24934             </td>
24935
24936             <td class="entry_range">
24937               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24938             </td>
24939
24940             <td class="entry_hal_version">
24941               <p>3.<wbr/>2</p>
24942             </td>
24943
24944             <td class="entry_tags">
24945               <ul class="entry_tags">
24946                   <li><a href="#tag_BC">BC</a></li>
24947               </ul>
24948             </td>
24949
24950           </tr>
24951           <tr class="entries_header">
24952             <th class="th_details" colspan="6">Details</th>
24953           </tr>
24954           <tr class="entry_cont">
24955             <td class="entry_details" colspan="6">
24956               <p>Whether face detection is enabled,<wbr/> and whether it
24957 should output just the basic fields or the full set of
24958 fields.<wbr/></p>
24959             </td>
24960           </tr>
24961
24962           <tr class="entries_header">
24963             <th class="th_details" colspan="6">HAL Implementation Details</th>
24964           </tr>
24965           <tr class="entry_cont">
24966             <td class="entry_details" colspan="6">
24967               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
24968 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
24969 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
24970 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
24971             </td>
24972           </tr>
24973
24974           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24975            <!-- end of entry -->
24976         
24977                 
24978           <tr class="entry" id="dynamic_android.statistics.faceIds">
24979             <td class="entry_name
24980              " rowspan="3">
24981               android.<wbr/>statistics.<wbr/>face<wbr/>Ids
24982             </td>
24983             <td class="entry_type">
24984                 <span class="entry_type_name">int32</span>
24985                 <span class="entry_type_container">x</span>
24986
24987                 <span class="entry_type_array">
24988                   n
24989                 </span>
24990               <span class="entry_type_visibility"> [ndk_public]</span>
24991
24992
24993               <span class="entry_type_hwlevel">[legacy] </span>
24994
24995
24996
24997
24998             </td> <!-- entry_type -->
24999
25000             <td class="entry_description">
25001               <p>List of unique IDs for detected faces.<wbr/></p>
25002             </td>
25003
25004             <td class="entry_units">
25005             </td>
25006
25007             <td class="entry_range">
25008             </td>
25009
25010             <td class="entry_hal_version">
25011               <p>3.<wbr/>2</p>
25012             </td>
25013
25014             <td class="entry_tags">
25015               <ul class="entry_tags">
25016                   <li><a href="#tag_BC">BC</a></li>
25017               </ul>
25018             </td>
25019
25020           </tr>
25021           <tr class="entries_header">
25022             <th class="th_details" colspan="6">Details</th>
25023           </tr>
25024           <tr class="entry_cont">
25025             <td class="entry_details" colspan="6">
25026               <p>Each detected face is given a unique ID that is valid for as long as the face is visible
25027 to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
25028 assigned a new ID.<wbr/></p>
25029 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
25030             </td>
25031           </tr>
25032
25033
25034           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25035            <!-- end of entry -->
25036         
25037                 
25038           <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
25039             <td class="entry_name
25040              " rowspan="3">
25041               android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
25042             </td>
25043             <td class="entry_type">
25044                 <span class="entry_type_name">int32</span>
25045                 <span class="entry_type_container">x</span>
25046
25047                 <span class="entry_type_array">
25048                   n x 6
25049                 </span>
25050               <span class="entry_type_visibility"> [ndk_public]</span>
25051
25052
25053               <span class="entry_type_hwlevel">[legacy] </span>
25054
25055
25056                 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
25057
25058
25059             </td> <!-- entry_type -->
25060
25061             <td class="entry_description">
25062               <p>List of landmarks for detected
25063 faces.<wbr/></p>
25064             </td>
25065
25066             <td class="entry_units">
25067             </td>
25068
25069             <td class="entry_range">
25070             </td>
25071
25072             <td class="entry_hal_version">
25073               <p>3.<wbr/>2</p>
25074             </td>
25075
25076             <td class="entry_tags">
25077               <ul class="entry_tags">
25078                   <li><a href="#tag_BC">BC</a></li>
25079               </ul>
25080             </td>
25081
25082           </tr>
25083           <tr class="entries_header">
25084             <th class="th_details" colspan="6">Details</th>
25085           </tr>
25086           <tr class="entry_cont">
25087             <td class="entry_details" colspan="6">
25088               <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
25089 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
25090 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
25091             </td>
25092           </tr>
25093
25094
25095           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25096            <!-- end of entry -->
25097         
25098                 
25099           <tr class="entry" id="dynamic_android.statistics.faceRectangles">
25100             <td class="entry_name
25101              " rowspan="3">
25102               android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
25103             </td>
25104             <td class="entry_type">
25105                 <span class="entry_type_name">int32</span>
25106                 <span class="entry_type_container">x</span>
25107
25108                 <span class="entry_type_array">
25109                   n x 4
25110                 </span>
25111               <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
25112
25113
25114               <span class="entry_type_hwlevel">[legacy] </span>
25115
25116
25117                 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
25118
25119
25120             </td> <!-- entry_type -->
25121
25122             <td class="entry_description">
25123               <p>List of the bounding rectangles for detected
25124 faces.<wbr/></p>
25125             </td>
25126
25127             <td class="entry_units">
25128             </td>
25129
25130             <td class="entry_range">
25131             </td>
25132
25133             <td class="entry_hal_version">
25134               <p>3.<wbr/>2</p>
25135             </td>
25136
25137             <td class="entry_tags">
25138               <ul class="entry_tags">
25139                   <li><a href="#tag_BC">BC</a></li>
25140               </ul>
25141             </td>
25142
25143           </tr>
25144           <tr class="entries_header">
25145             <th class="th_details" colspan="6">Details</th>
25146           </tr>
25147           <tr class="entry_cont">
25148             <td class="entry_details" colspan="6">
25149               <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
25150 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
25151 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
25152             </td>
25153           </tr>
25154
25155
25156           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25157            <!-- end of entry -->
25158         
25159                 
25160           <tr class="entry" id="dynamic_android.statistics.faceScores">
25161             <td class="entry_name
25162              " rowspan="5">
25163               android.<wbr/>statistics.<wbr/>face<wbr/>Scores
25164             </td>
25165             <td class="entry_type">
25166                 <span class="entry_type_name">byte</span>
25167                 <span class="entry_type_container">x</span>
25168
25169                 <span class="entry_type_array">
25170                   n
25171                 </span>
25172               <span class="entry_type_visibility"> [ndk_public]</span>
25173
25174
25175               <span class="entry_type_hwlevel">[legacy] </span>
25176
25177
25178
25179
25180             </td> <!-- entry_type -->
25181
25182             <td class="entry_description">
25183               <p>List of the face confidence scores for
25184 detected faces</p>
25185             </td>
25186
25187             <td class="entry_units">
25188             </td>
25189
25190             <td class="entry_range">
25191               <p>1-100</p>
25192             </td>
25193
25194             <td class="entry_hal_version">
25195               <p>3.<wbr/>2</p>
25196             </td>
25197
25198             <td class="entry_tags">
25199               <ul class="entry_tags">
25200                   <li><a href="#tag_BC">BC</a></li>
25201               </ul>
25202             </td>
25203
25204           </tr>
25205           <tr class="entries_header">
25206             <th class="th_details" colspan="6">Details</th>
25207           </tr>
25208           <tr class="entry_cont">
25209             <td class="entry_details" colspan="6">
25210               <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
25211             </td>
25212           </tr>
25213
25214           <tr class="entries_header">
25215             <th class="th_details" colspan="6">HAL Implementation Details</th>
25216           </tr>
25217           <tr class="entry_cont">
25218             <td class="entry_details" colspan="6">
25219               <p>The value should be meaningful (for example,<wbr/> setting 100 at
25220 all times is illegal).<wbr/></p>
25221             </td>
25222           </tr>
25223
25224           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25225            <!-- end of entry -->
25226         
25227                 
25228           <tr class="entry" id="dynamic_android.statistics.faces">
25229             <td class="entry_name
25230              " rowspan="3">
25231               android.<wbr/>statistics.<wbr/>faces
25232             </td>
25233             <td class="entry_type">
25234                 <span class="entry_type_name">int32</span>
25235                 <span class="entry_type_container">x</span>
25236
25237                 <span class="entry_type_array">
25238                   n
25239                 </span>
25240               <span class="entry_type_visibility"> [java_public as face]</span>
25241
25242               <span class="entry_type_synthetic">[synthetic] </span>
25243
25244               <span class="entry_type_hwlevel">[legacy] </span>
25245
25246
25247
25248
25249             </td> <!-- entry_type -->
25250
25251             <td class="entry_description">
25252               <p>List of the faces detected through camera face detection
25253 in this capture.<wbr/></p>
25254             </td>
25255
25256             <td class="entry_units">
25257             </td>
25258
25259             <td class="entry_range">
25260             </td>
25261
25262             <td class="entry_hal_version">
25263               <p>3.<wbr/>2</p>
25264             </td>
25265
25266             <td class="entry_tags">
25267             </td>
25268
25269           </tr>
25270           <tr class="entries_header">
25271             <th class="th_details" colspan="6">Details</th>
25272           </tr>
25273           <tr class="entry_cont">
25274             <td class="entry_details" colspan="6">
25275               <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>
25276             </td>
25277           </tr>
25278
25279
25280           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25281            <!-- end of entry -->
25282         
25283                 
25284           <tr class="entry" id="dynamic_android.statistics.histogram">
25285             <td class="entry_name
25286              " rowspan="3">
25287               android.<wbr/>statistics.<wbr/>histogram
25288             </td>
25289             <td class="entry_type">
25290                 <span class="entry_type_name">int32</span>
25291                 <span class="entry_type_container">x</span>
25292
25293                 <span class="entry_type_array">
25294                   n x 3
25295                 </span>
25296               <span class="entry_type_visibility"> [system]</span>
25297
25298
25299
25300
25301                 <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>
25302
25303
25304             </td> <!-- entry_type -->
25305
25306             <td class="entry_description">
25307               <p>A 3-channel histogram based on the raw
25308 sensor data</p>
25309             </td>
25310
25311             <td class="entry_units">
25312             </td>
25313
25314             <td class="entry_range">
25315             </td>
25316
25317             <td class="entry_hal_version">
25318               <p>3.<wbr/>2</p>
25319             </td>
25320
25321             <td class="entry_tags">
25322               <ul class="entry_tags">
25323                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25324               </ul>
25325             </td>
25326
25327           </tr>
25328           <tr class="entries_header">
25329             <th class="th_details" colspan="6">Details</th>
25330           </tr>
25331           <tr class="entry_cont">
25332             <td class="entry_details" colspan="6">
25333               <p>The k'th bucket (0-based) covers the input range
25334 (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/>
25335 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
25336 supported,<wbr/> all channels should have the same data</p>
25337             </td>
25338           </tr>
25339
25340
25341           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25342            <!-- end of entry -->
25343         
25344                 
25345           <tr class="entry" id="dynamic_android.statistics.histogramMode">
25346             <td class="entry_name
25347              " rowspan="1">
25348               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
25349             </td>
25350             <td class="entry_type">
25351                 <span class="entry_type_name entry_type_name_enum">byte</span>
25352
25353               <span class="entry_type_visibility"> [system as boolean]</span>
25354
25355
25356
25357
25358
25359                 <ul class="entry_type_enum">
25360                   <li>
25361                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25362                   </li>
25363                   <li>
25364                     <span class="entry_type_enum_name">ON (v3.2)</span>
25365                   </li>
25366                 </ul>
25367
25368             </td> <!-- entry_type -->
25369
25370             <td class="entry_description">
25371               <p>Operating mode for histogram
25372 generation</p>
25373             </td>
25374
25375             <td class="entry_units">
25376             </td>
25377
25378             <td class="entry_range">
25379             </td>
25380
25381             <td class="entry_hal_version">
25382               <p>3.<wbr/>2</p>
25383             </td>
25384
25385             <td class="entry_tags">
25386               <ul class="entry_tags">
25387                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25388               </ul>
25389             </td>
25390
25391           </tr>
25392
25393
25394           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25395            <!-- end of entry -->
25396         
25397                 
25398           <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
25399             <td class="entry_name
25400              " rowspan="3">
25401               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
25402             </td>
25403             <td class="entry_type">
25404                 <span class="entry_type_name">int32</span>
25405                 <span class="entry_type_container">x</span>
25406
25407                 <span class="entry_type_array">
25408                   n x m x 3
25409                 </span>
25410               <span class="entry_type_visibility"> [system]</span>
25411
25412
25413
25414
25415                 <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>
25416
25417
25418             </td> <!-- entry_type -->
25419
25420             <td class="entry_description">
25421               <p>A 3-channel sharpness map,<wbr/> based on the raw
25422 sensor data</p>
25423             </td>
25424
25425             <td class="entry_units">
25426             </td>
25427
25428             <td class="entry_range">
25429             </td>
25430
25431             <td class="entry_hal_version">
25432               <p>3.<wbr/>2</p>
25433             </td>
25434
25435             <td class="entry_tags">
25436               <ul class="entry_tags">
25437                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25438               </ul>
25439             </td>
25440
25441           </tr>
25442           <tr class="entries_header">
25443             <th class="th_details" colspan="6">Details</th>
25444           </tr>
25445           <tr class="entry_cont">
25446             <td class="entry_details" colspan="6">
25447               <p>If only a monochrome sharpness map is supported,<wbr/>
25448 all channels should have the same data</p>
25449             </td>
25450           </tr>
25451
25452
25453           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25454            <!-- end of entry -->
25455         
25456                 
25457           <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
25458             <td class="entry_name
25459              " rowspan="1">
25460               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
25461             </td>
25462             <td class="entry_type">
25463                 <span class="entry_type_name entry_type_name_enum">byte</span>
25464
25465               <span class="entry_type_visibility"> [system as boolean]</span>
25466
25467
25468
25469
25470
25471                 <ul class="entry_type_enum">
25472                   <li>
25473                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25474                   </li>
25475                   <li>
25476                     <span class="entry_type_enum_name">ON (v3.2)</span>
25477                   </li>
25478                 </ul>
25479
25480             </td> <!-- entry_type -->
25481
25482             <td class="entry_description">
25483               <p>Operating mode for sharpness map
25484 generation</p>
25485             </td>
25486
25487             <td class="entry_units">
25488             </td>
25489
25490             <td class="entry_range">
25491             </td>
25492
25493             <td class="entry_hal_version">
25494               <p>3.<wbr/>2</p>
25495             </td>
25496
25497             <td class="entry_tags">
25498               <ul class="entry_tags">
25499                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25500               </ul>
25501             </td>
25502
25503           </tr>
25504
25505
25506           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25507            <!-- end of entry -->
25508         
25509                 
25510           <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
25511             <td class="entry_name
25512              " rowspan="3">
25513               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
25514             </td>
25515             <td class="entry_type">
25516                 <span class="entry_type_name">byte</span>
25517
25518               <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
25519
25520
25521               <span class="entry_type_hwlevel">[full] </span>
25522
25523
25524
25525
25526             </td> <!-- entry_type -->
25527
25528             <td class="entry_description">
25529               <p>The shading map is a low-resolution floating-point map
25530 that lists the coefficients used to correct for vignetting,<wbr/> for each
25531 Bayer color channel.<wbr/></p>
25532             </td>
25533
25534             <td class="entry_units">
25535             </td>
25536
25537             <td class="entry_range">
25538               <p>Each gain factor is &gt;= 1</p>
25539             </td>
25540
25541             <td class="entry_hal_version">
25542               <p>3.<wbr/>2</p>
25543             </td>
25544
25545             <td class="entry_tags">
25546             </td>
25547
25548           </tr>
25549           <tr class="entries_header">
25550             <th class="th_details" colspan="6">Details</th>
25551           </tr>
25552           <tr class="entry_cont">
25553             <td class="entry_details" colspan="6">
25554               <p>The map provided here is the same map that is used by the camera device to
25555 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25556 <p>When there is no lens shading correction applied to RAW
25557 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25558 false),<wbr/> this map is the complete lens shading correction
25559 map; when there is some lens shading correction applied to
25560 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
25561 correction map that needs to be applied to get shading
25562 corrected images that match the camera device's output for
25563 non-RAW formats.<wbr/></p>
25564 <p>For a complete shading correction map,<wbr/> the least shaded
25565 section of the image will have a gain factor of 1; all
25566 other sections will have gains above 1.<wbr/></p>
25567 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25568 will take into account the colorCorrection settings.<wbr/></p>
25569 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25570 affected by the crop region specified in the request.<wbr/> Each shading map
25571 entry is the value of the shading compensation map over a specific
25572 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
25573 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25574 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25575 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25576 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25577 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25578 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25579 The shading map is stored in a fully interleaved format.<wbr/></p>
25580 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25581 and will be smaller than 64x64.<wbr/></p>
25582 <p>As an example,<wbr/> given a very small map defined as:</p>
25583 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
25584 values =
25585 [ 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/>
25586     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/>
25587   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/>
25588     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/>
25589   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/>
25590     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 ]
25591 </code></pre>
25592 <p>The low-resolution scaling map images for each channel are
25593 (displayed using nearest-neighbor interpolation):</p>
25594 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25595 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25596 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25597 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25598 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25599 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
25600 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25601             </td>
25602           </tr>
25603
25604
25605           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25606            <!-- end of entry -->
25607         
25608                 
25609           <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
25610             <td class="entry_name
25611              " rowspan="5">
25612               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
25613             </td>
25614             <td class="entry_type">
25615                 <span class="entry_type_name">float</span>
25616                 <span class="entry_type_container">x</span>
25617
25618                 <span class="entry_type_array">
25619                   4 x n x m
25620                 </span>
25621               <span class="entry_type_visibility"> [ndk_public]</span>
25622
25623
25624               <span class="entry_type_hwlevel">[full] </span>
25625
25626
25627                 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
25628
25629
25630             </td> <!-- entry_type -->
25631
25632             <td class="entry_description">
25633               <p>The shading map is a low-resolution floating-point map
25634 that lists the coefficients used to correct for vignetting and color shading,<wbr/>
25635 for each Bayer color channel of RAW image data.<wbr/></p>
25636             </td>
25637
25638             <td class="entry_units">
25639             </td>
25640
25641             <td class="entry_range">
25642               <p>Each gain factor is &gt;= 1</p>
25643             </td>
25644
25645             <td class="entry_hal_version">
25646               <p>3.<wbr/>2</p>
25647             </td>
25648
25649             <td class="entry_tags">
25650             </td>
25651
25652           </tr>
25653           <tr class="entries_header">
25654             <th class="th_details" colspan="6">Details</th>
25655           </tr>
25656           <tr class="entry_cont">
25657             <td class="entry_details" colspan="6">
25658               <p>The map provided here is the same map that is used by the camera device to
25659 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25660 <p>When there is no lens shading correction applied to RAW
25661 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25662 false),<wbr/> this map is the complete lens shading correction
25663 map; when there is some lens shading correction applied to
25664 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
25665 correction map that needs to be applied to get shading
25666 corrected images that match the camera device's output for
25667 non-RAW formats.<wbr/></p>
25668 <p>For a complete shading correction map,<wbr/> the least shaded
25669 section of the image will have a gain factor of 1; all
25670 other sections will have gains above 1.<wbr/></p>
25671 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25672 will take into account the colorCorrection settings.<wbr/></p>
25673 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25674 affected by the crop region specified in the request.<wbr/> Each shading map
25675 entry is the value of the shading compensation map over a specific
25676 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
25677 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25678 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25679 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25680 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25681 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25682 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25683 The shading map is stored in a fully interleaved format,<wbr/> and its size
25684 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>
25685 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25686 and will be smaller than 64x64.<wbr/></p>
25687 <p>As an example,<wbr/> given a very small map defined as:</p>
25688 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
25689 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
25690 [ 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/>
25691     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/>
25692   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/>
25693     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/>
25694   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/>
25695     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 ]
25696 </code></pre>
25697 <p>The low-resolution scaling map images for each channel are
25698 (displayed using nearest-neighbor interpolation):</p>
25699 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25700 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25701 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25702 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25703 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25704 image of a gray wall (using bicubic interpolation for visual quality)
25705 as captured by the sensor gives:</p>
25706 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25707 <p>Note that the RAW image data might be subject to lens shading
25708 correction not reported on this map.<wbr/> Query
25709 <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
25710 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>
25711 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
25712 correction.<wbr/> In the case full lens shading correction is applied to RAW
25713 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
25714 In other words,<wbr/> the map reported in this key is the remaining lens shading
25715 that needs to be applied on the RAW image to get images without lens shading
25716 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
25717 formats.<wbr/></p>
25718             </td>
25719           </tr>
25720
25721           <tr class="entries_header">
25722             <th class="th_details" colspan="6">HAL Implementation Details</th>
25723           </tr>
25724           <tr class="entry_cont">
25725             <td class="entry_details" colspan="6">
25726               <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
25727 When AE and AWB are in AUTO modes
25728 (<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
25729 may have all the information it need to generate most accurate lens shading map.<wbr/> When
25730 AE or AWB are in manual mode
25731 (<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
25732 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
25733 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
25734 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
25735             </td>
25736           </tr>
25737
25738           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25739            <!-- end of entry -->
25740         
25741                 
25742           <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
25743             <td class="entry_name
25744                 entry_name_deprecated
25745              " rowspan="3">
25746               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
25747             </td>
25748             <td class="entry_type">
25749                 <span class="entry_type_name">float</span>
25750                 <span class="entry_type_container">x</span>
25751
25752                 <span class="entry_type_array">
25753                   4
25754                 </span>
25755               <span class="entry_type_visibility"> [hidden]</span>
25756
25757
25758
25759               <span class="entry_type_deprecated">[deprecated] </span>
25760
25761                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
25762
25763
25764             </td> <!-- entry_type -->
25765
25766             <td class="entry_description">
25767               <p>The best-fit color channel gains calculated
25768 by the camera device's statistics units for the current output frame.<wbr/></p>
25769             </td>
25770
25771             <td class="entry_units">
25772             </td>
25773
25774             <td class="entry_range">
25775               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25776             </td>
25777
25778             <td class="entry_hal_version">
25779               <p>3.<wbr/>2</p>
25780             </td>
25781
25782             <td class="entry_tags">
25783             </td>
25784
25785           </tr>
25786           <tr class="entries_header">
25787             <th class="th_details" colspan="6">Details</th>
25788           </tr>
25789           <tr class="entry_cont">
25790             <td class="entry_details" colspan="6">
25791               <p>This may be different than the gains used for this frame,<wbr/>
25792 since statistics processing on data from a new frame
25793 typically completes after the transform has already been
25794 applied to that frame.<wbr/></p>
25795 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
25796 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
25797 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25798 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25799             </td>
25800           </tr>
25801
25802
25803           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25804            <!-- end of entry -->
25805         
25806                 
25807           <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
25808             <td class="entry_name
25809                 entry_name_deprecated
25810              " rowspan="3">
25811               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
25812             </td>
25813             <td class="entry_type">
25814                 <span class="entry_type_name">rational</span>
25815                 <span class="entry_type_container">x</span>
25816
25817                 <span class="entry_type_array">
25818                   3 x 3
25819                 </span>
25820               <span class="entry_type_visibility"> [hidden]</span>
25821
25822
25823
25824               <span class="entry_type_deprecated">[deprecated] </span>
25825
25826                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
25827
25828
25829             </td> <!-- entry_type -->
25830
25831             <td class="entry_description">
25832               <p>The best-fit color transform matrix estimate
25833 calculated by the camera device's statistics units for the current
25834 output frame.<wbr/></p>
25835             </td>
25836
25837             <td class="entry_units">
25838             </td>
25839
25840             <td class="entry_range">
25841               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25842             </td>
25843
25844             <td class="entry_hal_version">
25845               <p>3.<wbr/>2</p>
25846             </td>
25847
25848             <td class="entry_tags">
25849             </td>
25850
25851           </tr>
25852           <tr class="entries_header">
25853             <th class="th_details" colspan="6">Details</th>
25854           </tr>
25855           <tr class="entry_cont">
25856             <td class="entry_details" colspan="6">
25857               <p>The camera device will provide the estimate from its
25858 statistics unit on the white balance transforms to use
25859 for the next frame.<wbr/> These are the values the camera device believes
25860 are the best fit for the current output frame.<wbr/> This may
25861 be different than the transform used for this frame,<wbr/> since
25862 statistics processing on data from a new frame typically
25863 completes after the transform has already been applied to
25864 that frame.<wbr/></p>
25865 <p>These estimates must be provided for all frames,<wbr/> even if
25866 capture settings and color transforms are set by the application.<wbr/></p>
25867 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25868 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25869             </td>
25870           </tr>
25871
25872
25873           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25874            <!-- end of entry -->
25875         
25876                 
25877           <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
25878             <td class="entry_name
25879              " rowspan="3">
25880               android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
25881             </td>
25882             <td class="entry_type">
25883                 <span class="entry_type_name entry_type_name_enum">byte</span>
25884
25885               <span class="entry_type_visibility"> [public]</span>
25886
25887
25888               <span class="entry_type_hwlevel">[full] </span>
25889
25890
25891
25892                 <ul class="entry_type_enum">
25893                   <li>
25894                     <span class="entry_type_enum_name">NONE (v3.2)</span>
25895                     <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
25896 in the current scene.<wbr/></p></span>
25897                   </li>
25898                   <li>
25899                     <span class="entry_type_enum_name">50HZ (v3.2)</span>
25900                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
25901 in the current scene.<wbr/></p></span>
25902                   </li>
25903                   <li>
25904                     <span class="entry_type_enum_name">60HZ (v3.2)</span>
25905                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
25906 in the current scene.<wbr/></p></span>
25907                   </li>
25908                 </ul>
25909
25910             </td> <!-- entry_type -->
25911
25912             <td class="entry_description">
25913               <p>The camera device estimated scene illumination lighting
25914 frequency.<wbr/></p>
25915             </td>
25916
25917             <td class="entry_units">
25918             </td>
25919
25920             <td class="entry_range">
25921             </td>
25922
25923             <td class="entry_hal_version">
25924               <p>3.<wbr/>2</p>
25925             </td>
25926
25927             <td class="entry_tags">
25928             </td>
25929
25930           </tr>
25931           <tr class="entries_header">
25932             <th class="th_details" colspan="6">Details</th>
25933           </tr>
25934           <tr class="entry_cont">
25935             <td class="entry_details" colspan="6">
25936               <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
25937 that depends on the local utility power standards.<wbr/> This flicker must be
25938 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
25939 The camera device uses this entry to tell the application what the scene
25940 illuminant frequency is.<wbr/></p>
25941 <p>When manual exposure control is enabled
25942 (<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> ==
25943 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
25944 antibanding,<wbr/> and the application can ensure it selects
25945 exposure times that do not cause banding issues by looking
25946 into this metadata field.<wbr/> See
25947 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
25948 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
25949             </td>
25950           </tr>
25951
25952
25953           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25954            <!-- end of entry -->
25955         
25956                 
25957           <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
25958             <td class="entry_name
25959              " rowspan="3">
25960               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
25961             </td>
25962             <td class="entry_type">
25963                 <span class="entry_type_name entry_type_name_enum">byte</span>
25964
25965               <span class="entry_type_visibility"> [public as boolean]</span>
25966
25967
25968
25969
25970
25971                 <ul class="entry_type_enum">
25972                   <li>
25973                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25974                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
25975                   </li>
25976                   <li>
25977                     <span class="entry_type_enum_name">ON (v3.2)</span>
25978                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
25979                   </li>
25980                 </ul>
25981
25982             </td> <!-- entry_type -->
25983
25984             <td class="entry_description">
25985               <p>Operating mode for hot pixel map generation.<wbr/></p>
25986             </td>
25987
25988             <td class="entry_units">
25989             </td>
25990
25991             <td class="entry_range">
25992               <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>
25993             </td>
25994
25995             <td class="entry_hal_version">
25996               <p>3.<wbr/>2</p>
25997             </td>
25998
25999             <td class="entry_tags">
26000               <ul class="entry_tags">
26001                   <li><a href="#tag_V1">V1</a></li>
26002                   <li><a href="#tag_RAW">RAW</a></li>
26003               </ul>
26004             </td>
26005
26006           </tr>
26007           <tr class="entries_header">
26008             <th class="th_details" colspan="6">Details</th>
26009           </tr>
26010           <tr class="entry_cont">
26011             <td class="entry_details" colspan="6">
26012               <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/>
26013 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
26014             </td>
26015           </tr>
26016
26017
26018           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26019            <!-- end of entry -->
26020         
26021                 
26022           <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
26023             <td class="entry_name
26024              " rowspan="5">
26025               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
26026             </td>
26027             <td class="entry_type">
26028                 <span class="entry_type_name">int32</span>
26029                 <span class="entry_type_container">x</span>
26030
26031                 <span class="entry_type_array">
26032                   2 x n
26033                 </span>
26034               <span class="entry_type_visibility"> [public as point]</span>
26035
26036
26037
26038
26039                 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
26040
26041
26042             </td> <!-- entry_type -->
26043
26044             <td class="entry_description">
26045               <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
26046             </td>
26047
26048             <td class="entry_units">
26049             </td>
26050
26051             <td class="entry_range">
26052               <p>n &lt;= number of pixels on the sensor.<wbr/>
26053 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
26054 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
26055             </td>
26056
26057             <td class="entry_hal_version">
26058               <p>3.<wbr/>2</p>
26059             </td>
26060
26061             <td class="entry_tags">
26062               <ul class="entry_tags">
26063                   <li><a href="#tag_V1">V1</a></li>
26064                   <li><a href="#tag_RAW">RAW</a></li>
26065               </ul>
26066             </td>
26067
26068           </tr>
26069           <tr class="entries_header">
26070             <th class="th_details" colspan="6">Details</th>
26071           </tr>
26072           <tr class="entry_cont">
26073             <td class="entry_details" colspan="6">
26074               <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
26075 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
26076 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
26077 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/>
26078 This may include hot pixels that lie outside of the active array
26079 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
26080             </td>
26081           </tr>
26082
26083           <tr class="entries_header">
26084             <th class="th_details" colspan="6">HAL Implementation Details</th>
26085           </tr>
26086           <tr class="entry_cont">
26087             <td class="entry_details" colspan="6">
26088               <p>A hotpixel map contains the coordinates of pixels on the camera
26089 sensor that do report valid values (usually due to defects in
26090 the camera sensor).<wbr/> This includes pixels that are stuck at certain
26091 values,<wbr/> or have a response that does not accuractly encode the
26092 incoming light from the scene.<wbr/></p>
26093 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
26094 pixels than actual pixels on the camera sensor.<wbr/></p>
26095             </td>
26096           </tr>
26097
26098           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26099            <!-- end of entry -->
26100         
26101                 
26102           <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
26103             <td class="entry_name
26104              " rowspan="3">
26105               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
26106             </td>
26107             <td class="entry_type">
26108                 <span class="entry_type_name entry_type_name_enum">byte</span>
26109
26110               <span class="entry_type_visibility"> [public]</span>
26111
26112
26113               <span class="entry_type_hwlevel">[full] </span>
26114
26115
26116
26117                 <ul class="entry_type_enum">
26118                   <li>
26119                     <span class="entry_type_enum_name">OFF (v3.2)</span>
26120                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
26121                   </li>
26122                   <li>
26123                     <span class="entry_type_enum_name">ON (v3.2)</span>
26124                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
26125                   </li>
26126                 </ul>
26127
26128             </td> <!-- entry_type -->
26129
26130             <td class="entry_description">
26131               <p>Whether the camera device will output the lens
26132 shading map in output result metadata.<wbr/></p>
26133             </td>
26134
26135             <td class="entry_units">
26136             </td>
26137
26138             <td class="entry_range">
26139               <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>
26140             </td>
26141
26142             <td class="entry_hal_version">
26143               <p>3.<wbr/>2</p>
26144             </td>
26145
26146             <td class="entry_tags">
26147               <ul class="entry_tags">
26148                   <li><a href="#tag_RAW">RAW</a></li>
26149               </ul>
26150             </td>
26151
26152           </tr>
26153           <tr class="entries_header">
26154             <th class="th_details" colspan="6">Details</th>
26155           </tr>
26156           <tr class="entry_cont">
26157             <td class="entry_details" colspan="6">
26158               <p>When set to ON,<wbr/>
26159 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
26160 the output result metadata.<wbr/></p>
26161 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
26162             </td>
26163           </tr>
26164
26165
26166           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26167            <!-- end of entry -->
26168         
26169                 
26170           <tr class="entry" id="dynamic_android.statistics.oisDataMode">
26171             <td class="entry_name
26172              " rowspan="1">
26173               android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
26174             </td>
26175             <td class="entry_type">
26176                 <span class="entry_type_name entry_type_name_enum">byte</span>
26177
26178               <span class="entry_type_visibility"> [public]</span>
26179
26180
26181
26182
26183
26184                 <ul class="entry_type_enum">
26185                   <li>
26186                     <span class="entry_type_enum_name">OFF (v3.3)</span>
26187                     <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
26188                   </li>
26189                   <li>
26190                     <span class="entry_type_enum_name">ON (v3.3)</span>
26191                     <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
26192                   </li>
26193                 </ul>
26194
26195             </td> <!-- entry_type -->
26196
26197             <td class="entry_description">
26198               <p>A control for selecting whether OIS position information is included in output
26199 result metadata.<wbr/></p>
26200             </td>
26201
26202             <td class="entry_units">
26203             </td>
26204
26205             <td class="entry_range">
26206               <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
26207             </td>
26208
26209             <td class="entry_hal_version">
26210               <p>3.<wbr/>3</p>
26211             </td>
26212
26213             <td class="entry_tags">
26214             </td>
26215
26216           </tr>
26217
26218
26219           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26220            <!-- end of entry -->
26221         
26222                 
26223           <tr class="entry" id="dynamic_android.statistics.oisTimestamps">
26224             <td class="entry_name
26225              " rowspan="3">
26226               android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps
26227             </td>
26228             <td class="entry_type">
26229                 <span class="entry_type_name">int64</span>
26230                 <span class="entry_type_container">x</span>
26231
26232                 <span class="entry_type_array">
26233                   n
26234                 </span>
26235               <span class="entry_type_visibility"> [ndk_public]</span>
26236
26237
26238
26239
26240
26241
26242             </td> <!-- entry_type -->
26243
26244             <td class="entry_description">
26245               <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p>
26246             </td>
26247
26248             <td class="entry_units">
26249               nanoseconds
26250             </td>
26251
26252             <td class="entry_range">
26253             </td>
26254
26255             <td class="entry_hal_version">
26256               <p>3.<wbr/>3</p>
26257             </td>
26258
26259             <td class="entry_tags">
26260             </td>
26261
26262           </tr>
26263           <tr class="entries_header">
26264             <th class="th_details" colspan="6">Details</th>
26265           </tr>
26266           <tr class="entry_cont">
26267             <td class="entry_details" colspan="6">
26268               <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same
26269 timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p>
26270             </td>
26271           </tr>
26272
26273
26274           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26275            <!-- end of entry -->
26276         
26277                 
26278           <tr class="entry" id="dynamic_android.statistics.oisXShifts">
26279             <td class="entry_name
26280              " rowspan="3">
26281               android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts
26282             </td>
26283             <td class="entry_type">
26284                 <span class="entry_type_name">float</span>
26285                 <span class="entry_type_container">x</span>
26286
26287                 <span class="entry_type_array">
26288                   n
26289                 </span>
26290               <span class="entry_type_visibility"> [ndk_public]</span>
26291
26292
26293
26294
26295
26296
26297             </td> <!-- entry_type -->
26298
26299             <td class="entry_description">
26300               <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p>
26301             </td>
26302
26303             <td class="entry_units">
26304               Pixels in active array.<wbr/>
26305             </td>
26306
26307             <td class="entry_range">
26308             </td>
26309
26310             <td class="entry_hal_version">
26311               <p>3.<wbr/>3</p>
26312             </td>
26313
26314             <td class="entry_tags">
26315             </td>
26316
26317           </tr>
26318           <tr class="entries_header">
26319             <th class="th_details" colspan="6">Details</th>
26320           </tr>
26321           <tr class="entry_cont">
26322             <td class="entry_details" colspan="6">
26323               <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26324 A positive value is a shift from left to right in active array coordinate system.<wbr/> For
26325 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of
26326 (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
26327 <p>The number of shifts must match the number of timestamps in
26328 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26329             </td>
26330           </tr>
26331
26332
26333           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26334            <!-- end of entry -->
26335         
26336                 
26337           <tr class="entry" id="dynamic_android.statistics.oisYShifts">
26338             <td class="entry_name
26339              " rowspan="3">
26340               android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts
26341             </td>
26342             <td class="entry_type">
26343                 <span class="entry_type_name">float</span>
26344                 <span class="entry_type_container">x</span>
26345
26346                 <span class="entry_type_array">
26347                   n
26348                 </span>
26349               <span class="entry_type_visibility"> [ndk_public]</span>
26350
26351
26352
26353
26354
26355
26356             </td> <!-- entry_type -->
26357
26358             <td class="entry_description">
26359               <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p>
26360             </td>
26361
26362             <td class="entry_units">
26363               Pixels in active array.<wbr/>
26364             </td>
26365
26366             <td class="entry_range">
26367             </td>
26368
26369             <td class="entry_hal_version">
26370               <p>3.<wbr/>3</p>
26371             </td>
26372
26373             <td class="entry_tags">
26374             </td>
26375
26376           </tr>
26377           <tr class="entries_header">
26378             <th class="th_details" colspan="6">Details</th>
26379           </tr>
26380           <tr class="entry_cont">
26381             <td class="entry_details" colspan="6">
26382               <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26383 A positive value is a shift from top to bottom in active array coordinate system.<wbr/> For
26384 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of
26385 (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
26386 <p>The number of shifts must match the number of timestamps in
26387 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26388             </td>
26389           </tr>
26390
26391
26392           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26393            <!-- end of entry -->
26394         
26395                 
26396           <tr class="entry" id="dynamic_android.statistics.oisSamples">
26397             <td class="entry_name
26398              " rowspan="3">
26399               android.<wbr/>statistics.<wbr/>ois<wbr/>Samples
26400             </td>
26401             <td class="entry_type">
26402                 <span class="entry_type_name">float</span>
26403                 <span class="entry_type_container">x</span>
26404
26405                 <span class="entry_type_array">
26406                   n
26407                 </span>
26408               <span class="entry_type_visibility"> [java_public as oisSample]</span>
26409
26410               <span class="entry_type_synthetic">[synthetic] </span>
26411
26412
26413
26414
26415
26416             </td> <!-- entry_type -->
26417
26418             <td class="entry_description">
26419               <p>An array of OIS samples.<wbr/></p>
26420             </td>
26421
26422             <td class="entry_units">
26423             </td>
26424
26425             <td class="entry_range">
26426             </td>
26427
26428             <td class="entry_hal_version">
26429               <p>3.<wbr/>3</p>
26430             </td>
26431
26432             <td class="entry_tags">
26433             </td>
26434
26435           </tr>
26436           <tr class="entries_header">
26437             <th class="th_details" colspan="6">Details</th>
26438           </tr>
26439           <tr class="entry_cont">
26440             <td class="entry_details" colspan="6">
26441               <p>Each OIS sample contains the timestamp and the amount of shifts in x and y direction,<wbr/>
26442 in pixels,<wbr/> of the OIS sample.<wbr/></p>
26443 <p>A positive value for a shift in x direction is a shift from left to right in active array
26444 coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array
26445 coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
26446 <p>A positive value for a shift in y direction is a shift from top to bottom in active array
26447 coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array
26448 coordinates,<wbr/> a shift of (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
26449             </td>
26450           </tr>
26451
26452
26453           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26454            <!-- end of entry -->
26455         
26456         
26457
26458       <!-- end of kind -->
26459       </tbody>
26460
26461   <!-- end of section -->
26462   <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
26463
26464
26465       <tr><td colspan="7" class="kind">controls</td></tr>
26466
26467       <thead class="entries_header">
26468         <tr>
26469           <th class="th_name">Property Name</th>
26470           <th class="th_type">Type</th>
26471           <th class="th_description">Description</th>
26472           <th class="th_units">Units</th>
26473           <th class="th_range">Range</th>
26474           <th class="th_hal_version">Initial HIDL HAL version</th>
26475           <th class="th_tags">Tags</th>
26476         </tr>
26477       </thead>
26478
26479       <tbody>
26480
26481         
26482
26483         
26484
26485         
26486
26487         
26488
26489                 
26490           <tr class="entry" id="controls_android.tonemap.curveBlue">
26491             <td class="entry_name
26492              " rowspan="3">
26493               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26494             </td>
26495             <td class="entry_type">
26496                 <span class="entry_type_name">float</span>
26497                 <span class="entry_type_container">x</span>
26498
26499                 <span class="entry_type_array">
26500                   n x 2
26501                 </span>
26502               <span class="entry_type_visibility"> [ndk_public]</span>
26503
26504
26505               <span class="entry_type_hwlevel">[full] </span>
26506
26507
26508                 <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>
26509
26510
26511             </td> <!-- entry_type -->
26512
26513             <td class="entry_description">
26514               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
26515 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26516 CONTRAST_<wbr/>CURVE.<wbr/></p>
26517             </td>
26518
26519             <td class="entry_units">
26520             </td>
26521
26522             <td class="entry_range">
26523             </td>
26524
26525             <td class="entry_hal_version">
26526               <p>3.<wbr/>2</p>
26527             </td>
26528
26529             <td class="entry_tags">
26530             </td>
26531
26532           </tr>
26533           <tr class="entries_header">
26534             <th class="th_details" colspan="6">Details</th>
26535           </tr>
26536           <tr class="entry_cont">
26537             <td class="entry_details" colspan="6">
26538               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26539             </td>
26540           </tr>
26541
26542
26543           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26544            <!-- end of entry -->
26545         
26546                 
26547           <tr class="entry" id="controls_android.tonemap.curveGreen">
26548             <td class="entry_name
26549              " rowspan="3">
26550               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
26551             </td>
26552             <td class="entry_type">
26553                 <span class="entry_type_name">float</span>
26554                 <span class="entry_type_container">x</span>
26555
26556                 <span class="entry_type_array">
26557                   n x 2
26558                 </span>
26559               <span class="entry_type_visibility"> [ndk_public]</span>
26560
26561
26562               <span class="entry_type_hwlevel">[full] </span>
26563
26564
26565                 <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>
26566
26567
26568             </td> <!-- entry_type -->
26569
26570             <td class="entry_description">
26571               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
26572 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26573 CONTRAST_<wbr/>CURVE.<wbr/></p>
26574             </td>
26575
26576             <td class="entry_units">
26577             </td>
26578
26579             <td class="entry_range">
26580             </td>
26581
26582             <td class="entry_hal_version">
26583               <p>3.<wbr/>2</p>
26584             </td>
26585
26586             <td class="entry_tags">
26587             </td>
26588
26589           </tr>
26590           <tr class="entries_header">
26591             <th class="th_details" colspan="6">Details</th>
26592           </tr>
26593           <tr class="entry_cont">
26594             <td class="entry_details" colspan="6">
26595               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26596             </td>
26597           </tr>
26598
26599
26600           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26601            <!-- end of entry -->
26602         
26603                 
26604           <tr class="entry" id="controls_android.tonemap.curveRed">
26605             <td class="entry_name
26606              " rowspan="5">
26607               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
26608             </td>
26609             <td class="entry_type">
26610                 <span class="entry_type_name">float</span>
26611                 <span class="entry_type_container">x</span>
26612
26613                 <span class="entry_type_array">
26614                   n x 2
26615                 </span>
26616               <span class="entry_type_visibility"> [ndk_public]</span>
26617
26618
26619               <span class="entry_type_hwlevel">[full] </span>
26620
26621
26622                 <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>
26623
26624
26625             </td> <!-- entry_type -->
26626
26627             <td class="entry_description">
26628               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
26629 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26630 CONTRAST_<wbr/>CURVE.<wbr/></p>
26631             </td>
26632
26633             <td class="entry_units">
26634             </td>
26635
26636             <td class="entry_range">
26637               <p>0-1 on both input and output coordinates,<wbr/> normalized
26638 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
26639             </td>
26640
26641             <td class="entry_hal_version">
26642               <p>3.<wbr/>2</p>
26643             </td>
26644
26645             <td class="entry_tags">
26646             </td>
26647
26648           </tr>
26649           <tr class="entries_header">
26650             <th class="th_details" colspan="6">Details</th>
26651           </tr>
26652           <tr class="entry_cont">
26653             <td class="entry_details" colspan="6">
26654               <p>Each channel's curve is defined by an array of control points:</p>
26655 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
26656   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
26657 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26658 <p>These are sorted in order of increasing <code>Pin</code>; it is
26659 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26660 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26661 the camera device must linearly interpolate between the control
26662 points.<wbr/></p>
26663 <p>Each curve can have an independent number of points,<wbr/> and the number
26664 of points can be less than max (that is,<wbr/> the request doesn't have to
26665 always provide a curve with number of points equivalent to
26666 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26667 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26668 only specify the red channel and the precision is limited to 4
26669 digits,<wbr/> for conciseness.<wbr/></p>
26670 <p>Linear mapping:</p>
26671 <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 ]
26672 </code></pre>
26673 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26674 <p>Invert mapping:</p>
26675 <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 ]
26676 </code></pre>
26677 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26678 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26679 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26680   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/>
26681   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/>
26682   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/>
26683   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 ]
26684 </code></pre>
26685 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26686 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26687 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26688   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/>
26689   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/>
26690   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/>
26691   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 ]
26692 </code></pre>
26693 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26694             </td>
26695           </tr>
26696
26697           <tr class="entries_header">
26698             <th class="th_details" colspan="6">HAL Implementation Details</th>
26699           </tr>
26700           <tr class="entry_cont">
26701             <td class="entry_details" colspan="6">
26702               <p>For good quality of mapping,<wbr/> at least 128 control points are
26703 preferred.<wbr/></p>
26704 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
26705 control points used as are available.<wbr/></p>
26706             </td>
26707           </tr>
26708
26709           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26710            <!-- end of entry -->
26711         
26712                 
26713           <tr class="entry" id="controls_android.tonemap.curve">
26714             <td class="entry_name
26715              " rowspan="5">
26716               android.<wbr/>tonemap.<wbr/>curve
26717             </td>
26718             <td class="entry_type">
26719                 <span class="entry_type_name">float</span>
26720
26721               <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
26722
26723               <span class="entry_type_synthetic">[synthetic] </span>
26724
26725               <span class="entry_type_hwlevel">[full] </span>
26726
26727
26728
26729
26730             </td> <!-- entry_type -->
26731
26732             <td class="entry_description">
26733               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
26734 is CONTRAST_<wbr/>CURVE.<wbr/></p>
26735             </td>
26736
26737             <td class="entry_units">
26738             </td>
26739
26740             <td class="entry_range">
26741             </td>
26742
26743             <td class="entry_hal_version">
26744               <p>3.<wbr/>2</p>
26745             </td>
26746
26747             <td class="entry_tags">
26748             </td>
26749
26750           </tr>
26751           <tr class="entries_header">
26752             <th class="th_details" colspan="6">Details</th>
26753           </tr>
26754           <tr class="entry_cont">
26755             <td class="entry_details" colspan="6">
26756               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
26757 channels respectively.<wbr/> The following example uses the red channel as an
26758 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
26759 Each channel's curve is defined by an array of control points:</p>
26760 <pre><code>curveRed =
26761   [ 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) ]
26762 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26763 <p>These are sorted in order of increasing <code>Pin</code>; it is always
26764 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26765 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26766 the camera device must linearly interpolate between the control
26767 points.<wbr/></p>
26768 <p>Each curve can have an independent number of points,<wbr/> and the number
26769 of points can be less than max (that is,<wbr/> the request doesn't have to
26770 always provide a curve with number of points equivalent to
26771 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26772 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26773 only specify the red channel and the precision is limited to 4
26774 digits,<wbr/> for conciseness.<wbr/></p>
26775 <p>Linear mapping:</p>
26776 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
26777 </code></pre>
26778 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26779 <p>Invert mapping:</p>
26780 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
26781 </code></pre>
26782 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26783 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26784 <pre><code>curveRed = [
26785   (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/>
26786   (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/>
26787   (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/>
26788   (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) ]
26789 </code></pre>
26790 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26791 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26792 <pre><code>curveRed = [
26793   (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/>
26794   (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/>
26795   (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/>
26796   (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) ]
26797 </code></pre>
26798 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26799             </td>
26800           </tr>
26801
26802           <tr class="entries_header">
26803             <th class="th_details" colspan="6">HAL Implementation Details</th>
26804           </tr>
26805           <tr class="entry_cont">
26806             <td class="entry_details" colspan="6">
26807               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
26808 curveBlue entries.<wbr/></p>
26809             </td>
26810           </tr>
26811
26812           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26813            <!-- end of entry -->
26814         
26815                 
26816           <tr class="entry" id="controls_android.tonemap.mode">
26817             <td class="entry_name
26818              " rowspan="3">
26819               android.<wbr/>tonemap.<wbr/>mode
26820             </td>
26821             <td class="entry_type">
26822                 <span class="entry_type_name entry_type_name_enum">byte</span>
26823
26824               <span class="entry_type_visibility"> [public]</span>
26825
26826
26827               <span class="entry_type_hwlevel">[full] </span>
26828
26829
26830
26831                 <ul class="entry_type_enum">
26832                   <li>
26833                     <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
26834                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
26835 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
26836 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26837 for applying the tonemapping curve specified by
26838 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26839 <p>Must not slow down frame rate relative to raw
26840 sensor output.<wbr/></p></span>
26841                   </li>
26842                   <li>
26843                     <span class="entry_type_enum_name">FAST (v3.2)</span>
26844                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
26845 reducing frame rate compared to raw sensor output.<wbr/></p></span>
26846                   </li>
26847                   <li>
26848                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
26849                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
26850 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
26851                   </li>
26852                   <li>
26853                     <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
26854                     <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
26855 tonemapping.<wbr/></p>
26856 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26857 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
26858 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26859                   </li>
26860                   <li>
26861                     <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
26862                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
26863 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
26864 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26865 for applying the tonemapping curve specified by
26866 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
26867 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26868                   </li>
26869                 </ul>
26870
26871             </td> <!-- entry_type -->
26872
26873             <td class="entry_description">
26874               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
26875             </td>
26876
26877             <td class="entry_units">
26878             </td>
26879
26880             <td class="entry_range">
26881               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
26882             </td>
26883
26884             <td class="entry_hal_version">
26885               <p>3.<wbr/>2</p>
26886             </td>
26887
26888             <td class="entry_tags">
26889             </td>
26890
26891           </tr>
26892           <tr class="entries_header">
26893             <th class="th_details" colspan="6">Details</th>
26894           </tr>
26895           <tr class="entry_cont">
26896             <td class="entry_details" colspan="6">
26897               <p>When switching to an application-defined contrast curve by setting
26898 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
26899 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
26900 mapping from input high-bit-depth pixel value to the output
26901 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
26902 and output may change depending on the camera pipeline,<wbr/> the values
26903 are specified by normalized floating-point numbers.<wbr/></p>
26904 <p>More-complex color mapping operations such as 3D color look-up
26905 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
26906 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26907 CONTRAST_<wbr/>CURVE.<wbr/></p>
26908 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
26909 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
26910 These values are always available,<wbr/> and as close as possible to the
26911 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
26912 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
26913 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
26914 roughly the same.<wbr/></p>
26915             </td>
26916           </tr>
26917
26918
26919           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26920            <!-- end of entry -->
26921         
26922                 
26923           <tr class="entry" id="controls_android.tonemap.gamma">
26924             <td class="entry_name
26925              " rowspan="3">
26926               android.<wbr/>tonemap.<wbr/>gamma
26927             </td>
26928             <td class="entry_type">
26929                 <span class="entry_type_name">float</span>
26930
26931               <span class="entry_type_visibility"> [public]</span>
26932
26933
26934
26935
26936
26937
26938             </td> <!-- entry_type -->
26939
26940             <td class="entry_description">
26941               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26942 GAMMA_<wbr/>VALUE</p>
26943             </td>
26944
26945             <td class="entry_units">
26946             </td>
26947
26948             <td class="entry_range">
26949             </td>
26950
26951             <td class="entry_hal_version">
26952               <p>3.<wbr/>2</p>
26953             </td>
26954
26955             <td class="entry_tags">
26956             </td>
26957
26958           </tr>
26959           <tr class="entries_header">
26960             <th class="th_details" colspan="6">Details</th>
26961           </tr>
26962           <tr class="entry_cont">
26963             <td class="entry_details" colspan="6">
26964               <p>The tonemap curve will be defined the following formula:
26965 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
26966 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
26967 pow is the power function and gamma is the gamma value specified by this
26968 key.<wbr/></p>
26969 <p>The same curve will be applied to all color channels.<wbr/> The camera device
26970 may clip the input gamma value to its supported range.<wbr/> The actual applied
26971 value will be returned in capture result.<wbr/></p>
26972 <p>The valid range of gamma value varies on different devices,<wbr/> but values
26973 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
26974             </td>
26975           </tr>
26976
26977
26978           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26979            <!-- end of entry -->
26980         
26981                 
26982           <tr class="entry" id="controls_android.tonemap.presetCurve">
26983             <td class="entry_name
26984              " rowspan="3">
26985               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
26986             </td>
26987             <td class="entry_type">
26988                 <span class="entry_type_name entry_type_name_enum">byte</span>
26989
26990               <span class="entry_type_visibility"> [public]</span>
26991
26992
26993
26994
26995
26996                 <ul class="entry_type_enum">
26997                   <li>
26998                     <span class="entry_type_enum_name">SRGB (v3.2)</span>
26999                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
27000                   </li>
27001                   <li>
27002                     <span class="entry_type_enum_name">REC709 (v3.2)</span>
27003                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
27004                   </li>
27005                 </ul>
27006
27007             </td> <!-- entry_type -->
27008
27009             <td class="entry_description">
27010               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27011 PRESET_<wbr/>CURVE</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>The tonemap curve will be defined by specified standard.<wbr/></p>
27034 <p>sRGB (approximated by 16 control points):</p>
27035 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27036 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
27037 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
27038 <p>Note that above figures show a 16 control points approximation of preset
27039 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
27040             </td>
27041           </tr>
27042
27043
27044           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27045            <!-- end of entry -->
27046         
27047         
27048
27049       <!-- end of kind -->
27050       </tbody>
27051       <tr><td colspan="7" class="kind">static</td></tr>
27052
27053       <thead class="entries_header">
27054         <tr>
27055           <th class="th_name">Property Name</th>
27056           <th class="th_type">Type</th>
27057           <th class="th_description">Description</th>
27058           <th class="th_units">Units</th>
27059           <th class="th_range">Range</th>
27060           <th class="th_hal_version">Initial HIDL HAL version</th>
27061           <th class="th_tags">Tags</th>
27062         </tr>
27063       </thead>
27064
27065       <tbody>
27066
27067         
27068
27069         
27070
27071         
27072
27073         
27074
27075                 
27076           <tr class="entry" id="static_android.tonemap.maxCurvePoints">
27077             <td class="entry_name
27078              " rowspan="5">
27079               android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
27080             </td>
27081             <td class="entry_type">
27082                 <span class="entry_type_name">int32</span>
27083
27084               <span class="entry_type_visibility"> [public]</span>
27085
27086
27087               <span class="entry_type_hwlevel">[full] </span>
27088
27089
27090
27091
27092             </td> <!-- entry_type -->
27093
27094             <td class="entry_description">
27095               <p>Maximum number of supported points in the
27096 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
27097             </td>
27098
27099             <td class="entry_units">
27100             </td>
27101
27102             <td class="entry_range">
27103             </td>
27104
27105             <td class="entry_hal_version">
27106               <p>3.<wbr/>2</p>
27107             </td>
27108
27109             <td class="entry_tags">
27110             </td>
27111
27112           </tr>
27113           <tr class="entries_header">
27114             <th class="th_details" colspan="6">Details</th>
27115           </tr>
27116           <tr class="entry_cont">
27117             <td class="entry_details" colspan="6">
27118               <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
27119 less than this maximum,<wbr/> the camera device will resample the curve to its internal
27120 representation,<wbr/> using linear interpolation.<wbr/></p>
27121 <p>The output curves in the result metadata may have a different number
27122 of points than the input curves,<wbr/> and will represent the actual
27123 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
27124             </td>
27125           </tr>
27126
27127           <tr class="entries_header">
27128             <th class="th_details" colspan="6">HAL Implementation Details</th>
27129           </tr>
27130           <tr class="entry_cont">
27131             <td class="entry_details" colspan="6">
27132               <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
27133             </td>
27134           </tr>
27135
27136           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27137            <!-- end of entry -->
27138         
27139                 
27140           <tr class="entry" id="static_android.tonemap.availableToneMapModes">
27141             <td class="entry_name
27142              " rowspan="5">
27143               android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
27144             </td>
27145             <td class="entry_type">
27146                 <span class="entry_type_name">byte</span>
27147                 <span class="entry_type_container">x</span>
27148
27149                 <span class="entry_type_array">
27150                   n
27151                 </span>
27152               <span class="entry_type_visibility"> [public as enumList]</span>
27153
27154
27155               <span class="entry_type_hwlevel">[full] </span>
27156
27157
27158                 <div class="entry_type_notes">list of enums</div>
27159
27160
27161             </td> <!-- entry_type -->
27162
27163             <td class="entry_description">
27164               <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
27165 device.<wbr/></p>
27166             </td>
27167
27168             <td class="entry_units">
27169             </td>
27170
27171             <td class="entry_range">
27172               <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
27173             </td>
27174
27175             <td class="entry_hal_version">
27176               <p>3.<wbr/>2</p>
27177             </td>
27178
27179             <td class="entry_tags">
27180             </td>
27181
27182           </tr>
27183           <tr class="entries_header">
27184             <th class="th_details" colspan="6">Details</th>
27185           </tr>
27186           <tr class="entry_cont">
27187             <td class="entry_details" colspan="6">
27188               <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
27189 at least one of below mode combinations:</p>
27190 <ul>
27191 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
27192 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
27193 </ul>
27194 <p>This includes all FULL level devices.<wbr/></p>
27195             </td>
27196           </tr>
27197
27198           <tr class="entries_header">
27199             <th class="th_details" colspan="6">HAL Implementation Details</th>
27200           </tr>
27201           <tr class="entry_cont">
27202             <td class="entry_details" colspan="6">
27203               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
27204 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
27205 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
27206 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
27207             </td>
27208           </tr>
27209
27210           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27211            <!-- end of entry -->
27212         
27213         
27214
27215       <!-- end of kind -->
27216       </tbody>
27217       <tr><td colspan="7" class="kind">dynamic</td></tr>
27218
27219       <thead class="entries_header">
27220         <tr>
27221           <th class="th_name">Property Name</th>
27222           <th class="th_type">Type</th>
27223           <th class="th_description">Description</th>
27224           <th class="th_units">Units</th>
27225           <th class="th_range">Range</th>
27226           <th class="th_hal_version">Initial HIDL HAL version</th>
27227           <th class="th_tags">Tags</th>
27228         </tr>
27229       </thead>
27230
27231       <tbody>
27232
27233         
27234
27235         
27236
27237         
27238
27239         
27240
27241                 
27242           <tr class="entry" id="dynamic_android.tonemap.curveBlue">
27243             <td class="entry_name
27244              " rowspan="3">
27245               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
27246             </td>
27247             <td class="entry_type">
27248                 <span class="entry_type_name">float</span>
27249                 <span class="entry_type_container">x</span>
27250
27251                 <span class="entry_type_array">
27252                   n x 2
27253                 </span>
27254               <span class="entry_type_visibility"> [ndk_public]</span>
27255
27256
27257               <span class="entry_type_hwlevel">[full] </span>
27258
27259
27260                 <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>
27261
27262
27263             </td> <!-- entry_type -->
27264
27265             <td class="entry_description">
27266               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
27267 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27268 CONTRAST_<wbr/>CURVE.<wbr/></p>
27269             </td>
27270
27271             <td class="entry_units">
27272             </td>
27273
27274             <td class="entry_range">
27275             </td>
27276
27277             <td class="entry_hal_version">
27278               <p>3.<wbr/>2</p>
27279             </td>
27280
27281             <td class="entry_tags">
27282             </td>
27283
27284           </tr>
27285           <tr class="entries_header">
27286             <th class="th_details" colspan="6">Details</th>
27287           </tr>
27288           <tr class="entry_cont">
27289             <td class="entry_details" colspan="6">
27290               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27291             </td>
27292           </tr>
27293
27294
27295           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27296            <!-- end of entry -->
27297         
27298                 
27299           <tr class="entry" id="dynamic_android.tonemap.curveGreen">
27300             <td class="entry_name
27301              " rowspan="3">
27302               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
27303             </td>
27304             <td class="entry_type">
27305                 <span class="entry_type_name">float</span>
27306                 <span class="entry_type_container">x</span>
27307
27308                 <span class="entry_type_array">
27309                   n x 2
27310                 </span>
27311               <span class="entry_type_visibility"> [ndk_public]</span>
27312
27313
27314               <span class="entry_type_hwlevel">[full] </span>
27315
27316
27317                 <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>
27318
27319
27320             </td> <!-- entry_type -->
27321
27322             <td class="entry_description">
27323               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
27324 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27325 CONTRAST_<wbr/>CURVE.<wbr/></p>
27326             </td>
27327
27328             <td class="entry_units">
27329             </td>
27330
27331             <td class="entry_range">
27332             </td>
27333
27334             <td class="entry_hal_version">
27335               <p>3.<wbr/>2</p>
27336             </td>
27337
27338             <td class="entry_tags">
27339             </td>
27340
27341           </tr>
27342           <tr class="entries_header">
27343             <th class="th_details" colspan="6">Details</th>
27344           </tr>
27345           <tr class="entry_cont">
27346             <td class="entry_details" colspan="6">
27347               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
27348             </td>
27349           </tr>
27350
27351
27352           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27353            <!-- end of entry -->
27354         
27355                 
27356           <tr class="entry" id="dynamic_android.tonemap.curveRed">
27357             <td class="entry_name
27358              " rowspan="5">
27359               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
27360             </td>
27361             <td class="entry_type">
27362                 <span class="entry_type_name">float</span>
27363                 <span class="entry_type_container">x</span>
27364
27365                 <span class="entry_type_array">
27366                   n x 2
27367                 </span>
27368               <span class="entry_type_visibility"> [ndk_public]</span>
27369
27370
27371               <span class="entry_type_hwlevel">[full] </span>
27372
27373
27374                 <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>
27375
27376
27377             </td> <!-- entry_type -->
27378
27379             <td class="entry_description">
27380               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
27381 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27382 CONTRAST_<wbr/>CURVE.<wbr/></p>
27383             </td>
27384
27385             <td class="entry_units">
27386             </td>
27387
27388             <td class="entry_range">
27389               <p>0-1 on both input and output coordinates,<wbr/> normalized
27390 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
27391             </td>
27392
27393             <td class="entry_hal_version">
27394               <p>3.<wbr/>2</p>
27395             </td>
27396
27397             <td class="entry_tags">
27398             </td>
27399
27400           </tr>
27401           <tr class="entries_header">
27402             <th class="th_details" colspan="6">Details</th>
27403           </tr>
27404           <tr class="entry_cont">
27405             <td class="entry_details" colspan="6">
27406               <p>Each channel's curve is defined by an array of control points:</p>
27407 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
27408   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
27409 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27410 <p>These are sorted in order of increasing <code>Pin</code>; it is
27411 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27412 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27413 the camera device must linearly interpolate between the control
27414 points.<wbr/></p>
27415 <p>Each curve can have an independent number of points,<wbr/> and the number
27416 of points can be less than max (that is,<wbr/> the request doesn't have to
27417 always provide a curve with number of points equivalent to
27418 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27419 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27420 only specify the red channel and the precision is limited to 4
27421 digits,<wbr/> for conciseness.<wbr/></p>
27422 <p>Linear mapping:</p>
27423 <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 ]
27424 </code></pre>
27425 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27426 <p>Invert mapping:</p>
27427 <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 ]
27428 </code></pre>
27429 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27430 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27431 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27432   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/>
27433   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/>
27434   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/>
27435   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 ]
27436 </code></pre>
27437 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27438 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27439 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27440   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/>
27441   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/>
27442   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/>
27443   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 ]
27444 </code></pre>
27445 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27446             </td>
27447           </tr>
27448
27449           <tr class="entries_header">
27450             <th class="th_details" colspan="6">HAL Implementation Details</th>
27451           </tr>
27452           <tr class="entry_cont">
27453             <td class="entry_details" colspan="6">
27454               <p>For good quality of mapping,<wbr/> at least 128 control points are
27455 preferred.<wbr/></p>
27456 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
27457 control points used as are available.<wbr/></p>
27458             </td>
27459           </tr>
27460
27461           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27462            <!-- end of entry -->
27463         
27464                 
27465           <tr class="entry" id="dynamic_android.tonemap.curve">
27466             <td class="entry_name
27467              " rowspan="5">
27468               android.<wbr/>tonemap.<wbr/>curve
27469             </td>
27470             <td class="entry_type">
27471                 <span class="entry_type_name">float</span>
27472
27473               <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
27474
27475               <span class="entry_type_synthetic">[synthetic] </span>
27476
27477               <span class="entry_type_hwlevel">[full] </span>
27478
27479
27480
27481
27482             </td> <!-- entry_type -->
27483
27484             <td class="entry_description">
27485               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
27486 is CONTRAST_<wbr/>CURVE.<wbr/></p>
27487             </td>
27488
27489             <td class="entry_units">
27490             </td>
27491
27492             <td class="entry_range">
27493             </td>
27494
27495             <td class="entry_hal_version">
27496               <p>3.<wbr/>2</p>
27497             </td>
27498
27499             <td class="entry_tags">
27500             </td>
27501
27502           </tr>
27503           <tr class="entries_header">
27504             <th class="th_details" colspan="6">Details</th>
27505           </tr>
27506           <tr class="entry_cont">
27507             <td class="entry_details" colspan="6">
27508               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
27509 channels respectively.<wbr/> The following example uses the red channel as an
27510 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
27511 Each channel's curve is defined by an array of control points:</p>
27512 <pre><code>curveRed =
27513   [ 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) ]
27514 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27515 <p>These are sorted in order of increasing <code>Pin</code>; it is always
27516 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27517 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27518 the camera device must linearly interpolate between the control
27519 points.<wbr/></p>
27520 <p>Each curve can have an independent number of points,<wbr/> and the number
27521 of points can be less than max (that is,<wbr/> the request doesn't have to
27522 always provide a curve with number of points equivalent to
27523 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27524 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27525 only specify the red channel and the precision is limited to 4
27526 digits,<wbr/> for conciseness.<wbr/></p>
27527 <p>Linear mapping:</p>
27528 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
27529 </code></pre>
27530 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27531 <p>Invert mapping:</p>
27532 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
27533 </code></pre>
27534 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27535 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27536 <pre><code>curveRed = [
27537   (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/>
27538   (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/>
27539   (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/>
27540   (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) ]
27541 </code></pre>
27542 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27543 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27544 <pre><code>curveRed = [
27545   (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/>
27546   (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/>
27547   (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/>
27548   (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) ]
27549 </code></pre>
27550 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27551             </td>
27552           </tr>
27553
27554           <tr class="entries_header">
27555             <th class="th_details" colspan="6">HAL Implementation Details</th>
27556           </tr>
27557           <tr class="entry_cont">
27558             <td class="entry_details" colspan="6">
27559               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
27560 curveBlue entries.<wbr/></p>
27561             </td>
27562           </tr>
27563
27564           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27565            <!-- end of entry -->
27566         
27567                 
27568           <tr class="entry" id="dynamic_android.tonemap.mode">
27569             <td class="entry_name
27570              " rowspan="3">
27571               android.<wbr/>tonemap.<wbr/>mode
27572             </td>
27573             <td class="entry_type">
27574                 <span class="entry_type_name entry_type_name_enum">byte</span>
27575
27576               <span class="entry_type_visibility"> [public]</span>
27577
27578
27579               <span class="entry_type_hwlevel">[full] </span>
27580
27581
27582
27583                 <ul class="entry_type_enum">
27584                   <li>
27585                     <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
27586                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
27587 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
27588 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27589 for applying the tonemapping curve specified by
27590 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
27591 <p>Must not slow down frame rate relative to raw
27592 sensor output.<wbr/></p></span>
27593                   </li>
27594                   <li>
27595                     <span class="entry_type_enum_name">FAST (v3.2)</span>
27596                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
27597 reducing frame rate compared to raw sensor output.<wbr/></p></span>
27598                   </li>
27599                   <li>
27600                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
27601                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
27602 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
27603                   </li>
27604                   <li>
27605                     <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
27606                     <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
27607 tonemapping.<wbr/></p>
27608 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27609 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
27610 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27611                   </li>
27612                   <li>
27613                     <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
27614                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
27615 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
27616 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27617 for applying the tonemapping curve specified by
27618 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
27619 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27620                   </li>
27621                 </ul>
27622
27623             </td> <!-- entry_type -->
27624
27625             <td class="entry_description">
27626               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
27627             </td>
27628
27629             <td class="entry_units">
27630             </td>
27631
27632             <td class="entry_range">
27633               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
27634             </td>
27635
27636             <td class="entry_hal_version">
27637               <p>3.<wbr/>2</p>
27638             </td>
27639
27640             <td class="entry_tags">
27641             </td>
27642
27643           </tr>
27644           <tr class="entries_header">
27645             <th class="th_details" colspan="6">Details</th>
27646           </tr>
27647           <tr class="entry_cont">
27648             <td class="entry_details" colspan="6">
27649               <p>When switching to an application-defined contrast curve by setting
27650 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
27651 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
27652 mapping from input high-bit-depth pixel value to the output
27653 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
27654 and output may change depending on the camera pipeline,<wbr/> the values
27655 are specified by normalized floating-point numbers.<wbr/></p>
27656 <p>More-complex color mapping operations such as 3D color look-up
27657 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
27658 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27659 CONTRAST_<wbr/>CURVE.<wbr/></p>
27660 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
27661 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
27662 These values are always available,<wbr/> and as close as possible to the
27663 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
27664 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
27665 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
27666 roughly the same.<wbr/></p>
27667             </td>
27668           </tr>
27669
27670
27671           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27672            <!-- end of entry -->
27673         
27674                 
27675           <tr class="entry" id="dynamic_android.tonemap.gamma">
27676             <td class="entry_name
27677              " rowspan="3">
27678               android.<wbr/>tonemap.<wbr/>gamma
27679             </td>
27680             <td class="entry_type">
27681                 <span class="entry_type_name">float</span>
27682
27683               <span class="entry_type_visibility"> [public]</span>
27684
27685
27686
27687
27688
27689
27690             </td> <!-- entry_type -->
27691
27692             <td class="entry_description">
27693               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27694 GAMMA_<wbr/>VALUE</p>
27695             </td>
27696
27697             <td class="entry_units">
27698             </td>
27699
27700             <td class="entry_range">
27701             </td>
27702
27703             <td class="entry_hal_version">
27704               <p>3.<wbr/>2</p>
27705             </td>
27706
27707             <td class="entry_tags">
27708             </td>
27709
27710           </tr>
27711           <tr class="entries_header">
27712             <th class="th_details" colspan="6">Details</th>
27713           </tr>
27714           <tr class="entry_cont">
27715             <td class="entry_details" colspan="6">
27716               <p>The tonemap curve will be defined the following formula:
27717 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
27718 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
27719 pow is the power function and gamma is the gamma value specified by this
27720 key.<wbr/></p>
27721 <p>The same curve will be applied to all color channels.<wbr/> The camera device
27722 may clip the input gamma value to its supported range.<wbr/> The actual applied
27723 value will be returned in capture result.<wbr/></p>
27724 <p>The valid range of gamma value varies on different devices,<wbr/> but values
27725 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
27726             </td>
27727           </tr>
27728
27729
27730           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27731            <!-- end of entry -->
27732         
27733                 
27734           <tr class="entry" id="dynamic_android.tonemap.presetCurve">
27735             <td class="entry_name
27736              " rowspan="3">
27737               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
27738             </td>
27739             <td class="entry_type">
27740                 <span class="entry_type_name entry_type_name_enum">byte</span>
27741
27742               <span class="entry_type_visibility"> [public]</span>
27743
27744
27745
27746
27747
27748                 <ul class="entry_type_enum">
27749                   <li>
27750                     <span class="entry_type_enum_name">SRGB (v3.2)</span>
27751                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
27752                   </li>
27753                   <li>
27754                     <span class="entry_type_enum_name">REC709 (v3.2)</span>
27755                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
27756                   </li>
27757                 </ul>
27758
27759             </td> <!-- entry_type -->
27760
27761             <td class="entry_description">
27762               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27763 PRESET_<wbr/>CURVE</p>
27764             </td>
27765
27766             <td class="entry_units">
27767             </td>
27768
27769             <td class="entry_range">
27770             </td>
27771
27772             <td class="entry_hal_version">
27773               <p>3.<wbr/>2</p>
27774             </td>
27775
27776             <td class="entry_tags">
27777             </td>
27778
27779           </tr>
27780           <tr class="entries_header">
27781             <th class="th_details" colspan="6">Details</th>
27782           </tr>
27783           <tr class="entry_cont">
27784             <td class="entry_details" colspan="6">
27785               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
27786 <p>sRGB (approximated by 16 control points):</p>
27787 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27788 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
27789 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
27790 <p>Note that above figures show a 16 control points approximation of preset
27791 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
27792             </td>
27793           </tr>
27794
27795
27796           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27797            <!-- end of entry -->
27798         
27799         
27800
27801       <!-- end of kind -->
27802       </tbody>
27803
27804   <!-- end of section -->
27805   <tr><td colspan="7" id="section_led" class="section">led</td></tr>
27806
27807
27808       <tr><td colspan="7" class="kind">controls</td></tr>
27809
27810       <thead class="entries_header">
27811         <tr>
27812           <th class="th_name">Property Name</th>
27813           <th class="th_type">Type</th>
27814           <th class="th_description">Description</th>
27815           <th class="th_units">Units</th>
27816           <th class="th_range">Range</th>
27817           <th class="th_hal_version">Initial HIDL HAL version</th>
27818           <th class="th_tags">Tags</th>
27819         </tr>
27820       </thead>
27821
27822       <tbody>
27823
27824         
27825
27826         
27827
27828         
27829
27830         
27831
27832                 
27833           <tr class="entry" id="controls_android.led.transmit">
27834             <td class="entry_name
27835              " rowspan="1">
27836               android.<wbr/>led.<wbr/>transmit
27837             </td>
27838             <td class="entry_type">
27839                 <span class="entry_type_name entry_type_name_enum">byte</span>
27840
27841               <span class="entry_type_visibility"> [hidden as boolean]</span>
27842
27843
27844
27845
27846
27847                 <ul class="entry_type_enum">
27848                   <li>
27849                     <span class="entry_type_enum_name">OFF (v3.2)</span>
27850                   </li>
27851                   <li>
27852                     <span class="entry_type_enum_name">ON (v3.2)</span>
27853                   </li>
27854                 </ul>
27855
27856             </td> <!-- entry_type -->
27857
27858             <td class="entry_description">
27859               <p>This LED is nominally used to indicate to the user
27860 that the camera is powered on and may be streaming images back to the
27861 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27862 disable this when video is processed locally and not transmitted to
27863 any untrusted applications.<wbr/></p>
27864 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27865 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27866 data is stored locally on the device.<wbr/></p>
27867 <p>The LED <em>may</em> be off if a trusted application is using the data that
27868 doesn't violate the above rules.<wbr/></p>
27869             </td>
27870
27871             <td class="entry_units">
27872             </td>
27873
27874             <td class="entry_range">
27875             </td>
27876
27877             <td class="entry_hal_version">
27878               <p>3.<wbr/>2</p>
27879             </td>
27880
27881             <td class="entry_tags">
27882             </td>
27883
27884           </tr>
27885
27886
27887           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27888            <!-- end of entry -->
27889         
27890         
27891
27892       <!-- end of kind -->
27893       </tbody>
27894       <tr><td colspan="7" class="kind">dynamic</td></tr>
27895
27896       <thead class="entries_header">
27897         <tr>
27898           <th class="th_name">Property Name</th>
27899           <th class="th_type">Type</th>
27900           <th class="th_description">Description</th>
27901           <th class="th_units">Units</th>
27902           <th class="th_range">Range</th>
27903           <th class="th_hal_version">Initial HIDL HAL version</th>
27904           <th class="th_tags">Tags</th>
27905         </tr>
27906       </thead>
27907
27908       <tbody>
27909
27910         
27911
27912         
27913
27914         
27915
27916         
27917
27918                 
27919           <tr class="entry" id="dynamic_android.led.transmit">
27920             <td class="entry_name
27921              " rowspan="1">
27922               android.<wbr/>led.<wbr/>transmit
27923             </td>
27924             <td class="entry_type">
27925                 <span class="entry_type_name entry_type_name_enum">byte</span>
27926
27927               <span class="entry_type_visibility"> [hidden as boolean]</span>
27928
27929
27930
27931
27932
27933                 <ul class="entry_type_enum">
27934                   <li>
27935                     <span class="entry_type_enum_name">OFF (v3.2)</span>
27936                   </li>
27937                   <li>
27938                     <span class="entry_type_enum_name">ON (v3.2)</span>
27939                   </li>
27940                 </ul>
27941
27942             </td> <!-- entry_type -->
27943
27944             <td class="entry_description">
27945               <p>This LED is nominally used to indicate to the user
27946 that the camera is powered on and may be streaming images back to the
27947 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27948 disable this when video is processed locally and not transmitted to
27949 any untrusted applications.<wbr/></p>
27950 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27951 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27952 data is stored locally on the device.<wbr/></p>
27953 <p>The LED <em>may</em> be off if a trusted application is using the data that
27954 doesn't violate the above rules.<wbr/></p>
27955             </td>
27956
27957             <td class="entry_units">
27958             </td>
27959
27960             <td class="entry_range">
27961             </td>
27962
27963             <td class="entry_hal_version">
27964               <p>3.<wbr/>2</p>
27965             </td>
27966
27967             <td class="entry_tags">
27968             </td>
27969
27970           </tr>
27971
27972
27973           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27974            <!-- end of entry -->
27975         
27976         
27977
27978       <!-- end of kind -->
27979       </tbody>
27980       <tr><td colspan="7" class="kind">static</td></tr>
27981
27982       <thead class="entries_header">
27983         <tr>
27984           <th class="th_name">Property Name</th>
27985           <th class="th_type">Type</th>
27986           <th class="th_description">Description</th>
27987           <th class="th_units">Units</th>
27988           <th class="th_range">Range</th>
27989           <th class="th_hal_version">Initial HIDL HAL version</th>
27990           <th class="th_tags">Tags</th>
27991         </tr>
27992       </thead>
27993
27994       <tbody>
27995
27996         
27997
27998         
27999
28000         
28001
28002         
28003
28004                 
28005           <tr class="entry" id="static_android.led.availableLeds">
28006             <td class="entry_name
28007              " rowspan="1">
28008               android.<wbr/>led.<wbr/>available<wbr/>Leds
28009             </td>
28010             <td class="entry_type">
28011                 <span class="entry_type_name entry_type_name_enum">byte</span>
28012                 <span class="entry_type_container">x</span>
28013
28014                 <span class="entry_type_array">
28015                   n
28016                 </span>
28017               <span class="entry_type_visibility"> [hidden]</span>
28018
28019
28020
28021
28022
28023                 <ul class="entry_type_enum">
28024                   <li>
28025                     <span class="entry_type_enum_name">TRANSMIT (v3.2)</span>
28026                     <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>
28027                   </li>
28028                 </ul>
28029
28030             </td> <!-- entry_type -->
28031
28032             <td class="entry_description">
28033               <p>A list of camera LEDs that are available on this system.<wbr/></p>
28034             </td>
28035
28036             <td class="entry_units">
28037             </td>
28038
28039             <td class="entry_range">
28040             </td>
28041
28042             <td class="entry_hal_version">
28043               <p>3.<wbr/>2</p>
28044             </td>
28045
28046             <td class="entry_tags">
28047             </td>
28048
28049           </tr>
28050
28051
28052           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28053            <!-- end of entry -->
28054         
28055         
28056
28057       <!-- end of kind -->
28058       </tbody>
28059
28060   <!-- end of section -->
28061   <tr><td colspan="7" id="section_info" class="section">info</td></tr>
28062
28063
28064       <tr><td colspan="7" class="kind">static</td></tr>
28065
28066       <thead class="entries_header">
28067         <tr>
28068           <th class="th_name">Property Name</th>
28069           <th class="th_type">Type</th>
28070           <th class="th_description">Description</th>
28071           <th class="th_units">Units</th>
28072           <th class="th_range">Range</th>
28073           <th class="th_hal_version">Initial HIDL HAL version</th>
28074           <th class="th_tags">Tags</th>
28075         </tr>
28076       </thead>
28077
28078       <tbody>
28079
28080         
28081
28082         
28083
28084         
28085
28086         
28087
28088                 
28089           <tr class="entry" id="static_android.info.supportedHardwareLevel">
28090             <td class="entry_name
28091              " rowspan="5">
28092               android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
28093             </td>
28094             <td class="entry_type">
28095                 <span class="entry_type_name entry_type_name_enum">byte</span>
28096
28097               <span class="entry_type_visibility"> [public]</span>
28098
28099
28100               <span class="entry_type_hwlevel">[legacy] </span>
28101
28102
28103
28104                 <ul class="entry_type_enum">
28105                   <li>
28106                     <span class="entry_type_enum_name">LIMITED (v3.2)</span>
28107                     <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
28108 better.<wbr/></p>
28109 <p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
28110 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
28111 <p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
28112 support for color image capture.<wbr/> The only exception is that the device may
28113 alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
28114 measurements and not color images.<wbr/></p>
28115 <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>
28116 to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
28117 capturing a high-quality still image.<wbr/></p>
28118 <p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
28119 required to support full-automatic operation and post-processing (<code>OFF</code> is not
28120 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
28121 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
28122 <p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
28123 can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
28124                   </li>
28125                   <li>
28126                     <span class="entry_type_enum_name">FULL (v3.2)</span>
28127                     <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
28128 <p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
28129 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
28130 <p>A <code>FULL</code> device will support below capabilities:</p>
28131 <ul>
28132 <li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28133   <code>BURST_<wbr/>CAPTURE</code>)</li>
28134 <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>
28135 <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>
28136 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28137   <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
28138 <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>
28139 <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>
28140 </ul>
28141 <p>Note:
28142 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
28143 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
28144 23,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
28145                   </li>
28146                   <li>
28147                     <span class="entry_type_enum_name">LEGACY (v3.2)</span>
28148                     <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
28149 <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>
28150 <p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
28151 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
28152 No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
28153 <code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
28154 <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>
28155 devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
28156 as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/>  This may
28157 fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
28158 for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
28159 enable the flash.<wbr/></p></span>
28160                   </li>
28161                   <li>
28162                     <span class="entry_type_enum_name">3 (v3.2)</span>
28163                     <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
28164 FULL-level capabilities.<wbr/></p>
28165 <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
28166 <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>
28167 <p>The following additional capabilities are guaranteed to be supported:</p>
28168 <ul>
28169 <li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28170   <code>YUV_<wbr/>REPROCESSING</code>)</li>
28171 <li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
28172   <code>RAW</code>)</li>
28173 </ul></span>
28174                   </li>
28175                   <li>
28176                     <span class="entry_type_enum_name">EXTERNAL (v3.3)</span>
28177                     <span class="entry_type_enum_notes"><p>This camera device is backed by an external camera connected to this Android device.<wbr/></p>
28178 <p>The device has capability identical to a LIMITED level device,<wbr/> with the following
28179 exceptions:</p>
28180 <ul>
28181 <li>The device may not report lens/<wbr/>sensor related information such as<ul>
28182 <li><a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a></li>
28183 <li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li>
28184 <li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li>
28185 <li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li>
28186 <li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li>
28187 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li>
28188 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a></li>
28189 </ul>
28190 </li>
28191 <li>The device will report 0 for <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a></li>
28192 <li>The device has less guarantee on stable framerate,<wbr/> as the framerate partly depends
28193   on the external camera being used.<wbr/></li>
28194 </ul></span>
28195                   </li>
28196                 </ul>
28197
28198             </td> <!-- entry_type -->
28199
28200             <td class="entry_description">
28201               <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
28202             </td>
28203
28204             <td class="entry_units">
28205             </td>
28206
28207             <td class="entry_range">
28208             </td>
28209
28210             <td class="entry_hal_version">
28211               <p>3.<wbr/>2</p>
28212             </td>
28213
28214             <td class="entry_tags">
28215             </td>
28216
28217           </tr>
28218           <tr class="entries_header">
28219             <th class="th_details" colspan="6">Details</th>
28220           </tr>
28221           <tr class="entry_cont">
28222             <td class="entry_details" colspan="6">
28223               <p>The supported hardware level is a high-level description of the camera device's
28224 capabilities,<wbr/> summarizing several capabilities into one field.<wbr/>  Each level adds additional
28225 features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
28226 The ordering is <code>LEGACY &lt; LIMITED &lt; FULL &lt; LEVEL_<wbr/>3</code>.<wbr/></p>
28227 <p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
28228 numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
28229 the following code snippet can be used:</p>
28230 <pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
28231 boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
28232     int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
28233     if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
28234         return requiredLevel == deviceLevel;
28235     }
28236     //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
28237     return requiredLevel &lt;= deviceLevel;
28238 }
28239 </code></pre>
28240 <p>At a high level,<wbr/> the levels are:</p>
28241 <ul>
28242 <li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
28243   Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
28244 <li><code>LIMITED</code> devices represent the
28245   baseline feature set,<wbr/> and may also include additional capabilities that are
28246   subsets of <code>FULL</code>.<wbr/></li>
28247 <li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
28248   post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
28249 <li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
28250   with additional output stream configurations.<wbr/></li>
28251 </ul>
28252 <p>See the individual level enums for full descriptions of the supported capabilities.<wbr/>  The
28253 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
28254 finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
28255 ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
28256 <p>Some features are not part of any particular hardware level or capability and must be
28257 queried separately.<wbr/> These include:</p>
28258 <ul>
28259 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
28260 <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>
28261 <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>
28262 <li>Optical or electrical image stabilization
28263   (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
28264    <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
28265 </ul>
28266             </td>
28267           </tr>
28268
28269           <tr class="entries_header">
28270             <th class="th_details" colspan="6">HAL Implementation Details</th>
28271           </tr>
28272           <tr class="entry_cont">
28273             <td class="entry_details" colspan="6">
28274               <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
28275 FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
28276 <p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
28277 mode has hardware requirements roughly in line with those for a camera HAL device v1
28278 implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
28279 superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
28280 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
28281 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
28282 the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
28283 implemented by the camera framework code.<wbr/></p>
28284 <p>EXTERNAL level devices have lower peformance bar in CTS since the peformance might depend
28285 on the external camera being used and is not fully controlled by the device manufacturer.<wbr/>
28286 The ITS test suite is exempted for the same reason.<wbr/></p>
28287             </td>
28288           </tr>
28289
28290           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28291            <!-- end of entry -->
28292         
28293                 
28294           <tr class="entry" id="static_android.info.version">
28295             <td class="entry_name
28296              " rowspan="5">
28297               android.<wbr/>info.<wbr/>version
28298             </td>
28299             <td class="entry_type">
28300                 <span class="entry_type_name">byte</span>
28301
28302               <span class="entry_type_visibility"> [public as string]</span>
28303
28304
28305
28306
28307
28308
28309             </td> <!-- entry_type -->
28310
28311             <td class="entry_description">
28312               <p>A short string for manufacturer version information about the camera device,<wbr/> such as
28313 ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p>
28314             </td>
28315
28316             <td class="entry_units">
28317             </td>
28318
28319             <td class="entry_range">
28320             </td>
28321
28322             <td class="entry_hal_version">
28323               <p>3.<wbr/>3</p>
28324             </td>
28325
28326             <td class="entry_tags">
28327             </td>
28328
28329           </tr>
28330           <tr class="entries_header">
28331             <th class="th_details" colspan="6">Details</th>
28332           </tr>
28333           <tr class="entry_cont">
28334             <td class="entry_details" colspan="6">
28335               <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>
28336 in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the
28337 device.<wbr/></p>
28338             </td>
28339           </tr>
28340
28341           <tr class="entries_header">
28342             <th class="th_details" colspan="6">HAL Implementation Details</th>
28343           </tr>
28344           <tr class="entry_cont">
28345             <td class="entry_details" colspan="6">
28346               <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and
28347 whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/>
28348 It must not exceed 256 characters.<wbr/></p>
28349             </td>
28350           </tr>
28351
28352           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28353            <!-- end of entry -->
28354         
28355         
28356
28357       <!-- end of kind -->
28358       </tbody>
28359
28360   <!-- end of section -->
28361   <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
28362
28363
28364       <tr><td colspan="7" class="kind">controls</td></tr>
28365
28366       <thead class="entries_header">
28367         <tr>
28368           <th class="th_name">Property Name</th>
28369           <th class="th_type">Type</th>
28370           <th class="th_description">Description</th>
28371           <th class="th_units">Units</th>
28372           <th class="th_range">Range</th>
28373           <th class="th_hal_version">Initial HIDL HAL version</th>
28374           <th class="th_tags">Tags</th>
28375         </tr>
28376       </thead>
28377
28378       <tbody>
28379
28380         
28381
28382         
28383
28384         
28385
28386         
28387
28388                 
28389           <tr class="entry" id="controls_android.blackLevel.lock">
28390             <td class="entry_name
28391              " rowspan="5">
28392               android.<wbr/>black<wbr/>Level.<wbr/>lock
28393             </td>
28394             <td class="entry_type">
28395                 <span class="entry_type_name entry_type_name_enum">byte</span>
28396
28397               <span class="entry_type_visibility"> [public as boolean]</span>
28398
28399
28400               <span class="entry_type_hwlevel">[full] </span>
28401
28402
28403
28404                 <ul class="entry_type_enum">
28405                   <li>
28406                     <span class="entry_type_enum_name">OFF (v3.2)</span>
28407                   </li>
28408                   <li>
28409                     <span class="entry_type_enum_name">ON (v3.2)</span>
28410                   </li>
28411                 </ul>
28412
28413             </td> <!-- entry_type -->
28414
28415             <td class="entry_description">
28416               <p>Whether black-level compensation is locked
28417 to its current values,<wbr/> or is free to vary.<wbr/></p>
28418             </td>
28419
28420             <td class="entry_units">
28421             </td>
28422
28423             <td class="entry_range">
28424             </td>
28425
28426             <td class="entry_hal_version">
28427               <p>3.<wbr/>2</p>
28428             </td>
28429
28430             <td class="entry_tags">
28431               <ul class="entry_tags">
28432                   <li><a href="#tag_HAL2">HAL2</a></li>
28433               </ul>
28434             </td>
28435
28436           </tr>
28437           <tr class="entries_header">
28438             <th class="th_details" colspan="6">Details</th>
28439           </tr>
28440           <tr class="entry_cont">
28441             <td class="entry_details" colspan="6">
28442               <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
28443 compensation will not change until the lock is set to
28444 <code>false</code> (OFF).<wbr/></p>
28445 <p>Since changes to certain capture parameters (such as
28446 exposure time) may require resetting of black level
28447 compensation,<wbr/> the camera device must report whether setting
28448 the black level lock was successful in the output result
28449 metadata.<wbr/></p>
28450 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
28451 <ul>
28452 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28453 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28454 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28455 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28456 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28457 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28458 </ul>
28459 <p>And the exposure change in Request 4 requires the camera
28460 device to reset the black level offsets,<wbr/> then the output
28461 result metadata is expected to be:</p>
28462 <ul>
28463 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28464 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28465 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28466 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
28467 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28468 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28469 </ul>
28470 <p>This indicates to the application that on frame 4,<wbr/> black
28471 levels were reset due to exposure value changes,<wbr/> and pixel
28472 values may not be consistent across captures.<wbr/></p>
28473 <p>The camera device will maintain the lock to the extent
28474 possible,<wbr/> only overriding the lock to OFF when changes to
28475 other request parameters require a black level recalculation
28476 or reset.<wbr/></p>
28477             </td>
28478           </tr>
28479
28480           <tr class="entries_header">
28481             <th class="th_details" colspan="6">HAL Implementation Details</th>
28482           </tr>
28483           <tr class="entry_cont">
28484             <td class="entry_details" colspan="6">
28485               <p>If for some reason black level locking is no longer possible
28486 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28487 black level offsets to be recalculated),<wbr/> then the HAL must
28488 override this request (and it must report 'OFF' when this
28489 does happen) until the next capture for which locking is
28490 possible again.<wbr/></p>
28491             </td>
28492           </tr>
28493
28494           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28495            <!-- end of entry -->
28496         
28497         
28498
28499       <!-- end of kind -->
28500       </tbody>
28501       <tr><td colspan="7" class="kind">dynamic</td></tr>
28502
28503       <thead class="entries_header">
28504         <tr>
28505           <th class="th_name">Property Name</th>
28506           <th class="th_type">Type</th>
28507           <th class="th_description">Description</th>
28508           <th class="th_units">Units</th>
28509           <th class="th_range">Range</th>
28510           <th class="th_hal_version">Initial HIDL HAL version</th>
28511           <th class="th_tags">Tags</th>
28512         </tr>
28513       </thead>
28514
28515       <tbody>
28516
28517         
28518
28519         
28520
28521         
28522
28523         
28524
28525                 
28526           <tr class="entry" id="dynamic_android.blackLevel.lock">
28527             <td class="entry_name
28528              " rowspan="5">
28529               android.<wbr/>black<wbr/>Level.<wbr/>lock
28530             </td>
28531             <td class="entry_type">
28532                 <span class="entry_type_name entry_type_name_enum">byte</span>
28533
28534               <span class="entry_type_visibility"> [public as boolean]</span>
28535
28536
28537               <span class="entry_type_hwlevel">[full] </span>
28538
28539
28540
28541                 <ul class="entry_type_enum">
28542                   <li>
28543                     <span class="entry_type_enum_name">OFF (v3.2)</span>
28544                   </li>
28545                   <li>
28546                     <span class="entry_type_enum_name">ON (v3.2)</span>
28547                   </li>
28548                 </ul>
28549
28550             </td> <!-- entry_type -->
28551
28552             <td class="entry_description">
28553               <p>Whether black-level compensation is locked
28554 to its current values,<wbr/> or is free to vary.<wbr/></p>
28555             </td>
28556
28557             <td class="entry_units">
28558             </td>
28559
28560             <td class="entry_range">
28561             </td>
28562
28563             <td class="entry_hal_version">
28564               <p>3.<wbr/>2</p>
28565             </td>
28566
28567             <td class="entry_tags">
28568               <ul class="entry_tags">
28569                   <li><a href="#tag_HAL2">HAL2</a></li>
28570               </ul>
28571             </td>
28572
28573           </tr>
28574           <tr class="entries_header">
28575             <th class="th_details" colspan="6">Details</th>
28576           </tr>
28577           <tr class="entry_cont">
28578             <td class="entry_details" colspan="6">
28579               <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
28580 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
28581 a change in other capture settings forced the camera device to
28582 perform a black level reset.<wbr/></p>
28583             </td>
28584           </tr>
28585
28586           <tr class="entries_header">
28587             <th class="th_details" colspan="6">HAL Implementation Details</th>
28588           </tr>
28589           <tr class="entry_cont">
28590             <td class="entry_details" colspan="6">
28591               <p>If for some reason black level locking is no longer possible
28592 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28593 black level offsets to be recalculated),<wbr/> then the HAL must
28594 override this request (and it must report 'OFF' when this
28595 does happen) until the next capture for which locking is
28596 possible again.<wbr/></p>
28597             </td>
28598           </tr>
28599
28600           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28601            <!-- end of entry -->
28602         
28603         
28604
28605       <!-- end of kind -->
28606       </tbody>
28607
28608   <!-- end of section -->
28609   <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
28610
28611
28612       <tr><td colspan="7" class="kind">dynamic</td></tr>
28613
28614       <thead class="entries_header">
28615         <tr>
28616           <th class="th_name">Property Name</th>
28617           <th class="th_type">Type</th>
28618           <th class="th_description">Description</th>
28619           <th class="th_units">Units</th>
28620           <th class="th_range">Range</th>
28621           <th class="th_hal_version">Initial HIDL HAL version</th>
28622           <th class="th_tags">Tags</th>
28623         </tr>
28624       </thead>
28625
28626       <tbody>
28627
28628         
28629
28630         
28631
28632         
28633
28634         
28635
28636                 
28637           <tr class="entry" id="dynamic_android.sync.frameNumber">
28638             <td class="entry_name
28639              " rowspan="5">
28640               android.<wbr/>sync.<wbr/>frame<wbr/>Number
28641             </td>
28642             <td class="entry_type">
28643                 <span class="entry_type_name entry_type_name_enum">int64</span>
28644
28645               <span class="entry_type_visibility"> [ndk_public]</span>
28646
28647
28648               <span class="entry_type_hwlevel">[legacy] </span>
28649
28650
28651
28652                 <ul class="entry_type_enum">
28653                   <li>
28654                     <span class="entry_type_enum_name">CONVERGING (v3.2)</span>
28655                     <span class="entry_type_enum_value">-1</span>
28656                     <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
28657 <p>Synchronization is in progress,<wbr/> and reading metadata from this
28658 result may include a mix of data that have taken effect since the
28659 last synchronization time.<wbr/></p>
28660 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
28661 this value will update to the actual frame number frame number
28662 the result is guaranteed to be synchronized to (as long as the
28663 request settings remain constant).<wbr/></p></span>
28664                   </li>
28665                   <li>
28666                     <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28667                     <span class="entry_type_enum_value">-2</span>
28668                     <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
28669 <p>The result may have already converged,<wbr/> or it may be in
28670 progress.<wbr/>  Reading from this result may include some mix
28671 of settings from past requests.<wbr/></p>
28672 <p>After a settings change,<wbr/> the new settings will eventually all
28673 take effect for the output buffers and results.<wbr/> However,<wbr/> this
28674 value will not change when that happens.<wbr/> Altering settings
28675 rapidly may provide outcomes using mixes of settings from recent
28676 requests.<wbr/></p>
28677 <p>This value is intended primarily for backwards compatibility with
28678 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
28679                   </li>
28680                 </ul>
28681
28682             </td> <!-- entry_type -->
28683
28684             <td class="entry_description">
28685               <p>The frame number corresponding to the last request
28686 with which the output result (metadata + buffers) has been fully
28687 synchronized.<wbr/></p>
28688             </td>
28689
28690             <td class="entry_units">
28691             </td>
28692
28693             <td class="entry_range">
28694               <p>Either a non-negative value corresponding to a
28695 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
28696             </td>
28697
28698             <td class="entry_hal_version">
28699               <p>3.<wbr/>2</p>
28700             </td>
28701
28702             <td class="entry_tags">
28703               <ul class="entry_tags">
28704                   <li><a href="#tag_V1">V1</a></li>
28705               </ul>
28706             </td>
28707
28708           </tr>
28709           <tr class="entries_header">
28710             <th class="th_details" colspan="6">Details</th>
28711           </tr>
28712           <tr class="entry_cont">
28713             <td class="entry_details" colspan="6">
28714               <p>When a request is submitted to the camera device,<wbr/> there is usually a
28715 delay of several frames before the controls get applied.<wbr/> A camera
28716 device may either choose to account for this delay by implementing a
28717 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
28718 it may start streaming control changes that span over several frame
28719 boundaries.<wbr/></p>
28720 <p>In the latter case,<wbr/> whenever a request's settings change relative to
28721 the previous submitted request,<wbr/> the full set of changes may take
28722 multiple frame durations to fully take effect.<wbr/> Some settings may
28723 take effect sooner (in less frame durations) than others.<wbr/></p>
28724 <p>While a set of control changes are being propagated,<wbr/> this value
28725 will be CONVERGING.<wbr/></p>
28726 <p>Once it is fully known that a set of control changes have been
28727 finished propagating,<wbr/> and the resulting updated control settings
28728 have been read back by the camera device,<wbr/> this value will be set
28729 to a non-negative frame number (corresponding to the request to
28730 which the results have synchronized to).<wbr/></p>
28731 <p>Older camera device implementations may not have a way to detect
28732 when all camera controls have been applied,<wbr/> and will always set this
28733 value to UNKNOWN.<wbr/></p>
28734 <p>FULL capability devices will always have this value set to the
28735 frame number of the request corresponding to this result.<wbr/></p>
28736 <p><em>Further details</em>:</p>
28737 <ul>
28738 <li>Whenever a request differs from the last request,<wbr/> any future
28739 results not yet returned may have this value set to CONVERGING (this
28740 could include any in-progress captures not yet returned by the camera
28741 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
28742 <li>Submitting a series of multiple requests that differ from the
28743 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
28744 moves the new synchronization frame to the last non-repeating
28745 request (using the smallest frame number from the contiguous list of
28746 repeating requests).<wbr/></li>
28747 <li>Submitting the same request repeatedly will not change this value
28748 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
28749 <li>When this value changes to non-negative,<wbr/> that means that all of the
28750 metadata controls from the request have been applied,<wbr/> all of the
28751 metadata controls from the camera device have been read to the
28752 updated values (into the result),<wbr/> and all of the graphics buffers
28753 corresponding to this result are also synchronized to the request.<wbr/></li>
28754 </ul>
28755 <p><em>Pipeline considerations</em>:</p>
28756 <p>Submitting a request with updated controls relative to the previously
28757 submitted requests may also invalidate the synchronization state
28758 of all the results corresponding to currently in-flight requests.<wbr/></p>
28759 <p>In other words,<wbr/> results for this current request and up to
28760 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
28761 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
28762             </td>
28763           </tr>
28764
28765           <tr class="entries_header">
28766             <th class="th_details" colspan="6">HAL Implementation Details</th>
28767           </tr>
28768           <tr class="entry_cont">
28769             <td class="entry_details" colspan="6">
28770               <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
28771 is also UNKNOWN.<wbr/></p>
28772 <p>FULL capability devices should simply set this value to the
28773 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
28774             </td>
28775           </tr>
28776
28777           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28778            <!-- end of entry -->
28779         
28780         
28781
28782       <!-- end of kind -->
28783       </tbody>
28784       <tr><td colspan="7" class="kind">static</td></tr>
28785
28786       <thead class="entries_header">
28787         <tr>
28788           <th class="th_name">Property Name</th>
28789           <th class="th_type">Type</th>
28790           <th class="th_description">Description</th>
28791           <th class="th_units">Units</th>
28792           <th class="th_range">Range</th>
28793           <th class="th_hal_version">Initial HIDL HAL version</th>
28794           <th class="th_tags">Tags</th>
28795         </tr>
28796       </thead>
28797
28798       <tbody>
28799
28800         
28801
28802         
28803
28804         
28805
28806         
28807
28808                 
28809           <tr class="entry" id="static_android.sync.maxLatency">
28810             <td class="entry_name
28811              " rowspan="5">
28812               android.<wbr/>sync.<wbr/>max<wbr/>Latency
28813             </td>
28814             <td class="entry_type">
28815                 <span class="entry_type_name entry_type_name_enum">int32</span>
28816
28817               <span class="entry_type_visibility"> [public]</span>
28818
28819
28820               <span class="entry_type_hwlevel">[legacy] </span>
28821
28822
28823
28824                 <ul class="entry_type_enum">
28825                   <li>
28826                     <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span>
28827                     <span class="entry_type_enum_value">0</span>
28828                     <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
28829 <p>Changing controls over multiple requests one after another will
28830 produce results that have those controls applied atomically
28831 each frame.<wbr/></p>
28832 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
28833                   </li>
28834                   <li>
28835                     <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28836                     <span class="entry_type_enum_value">-1</span>
28837                     <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
28838 of the past requests applied to the camera settings.<wbr/></p>
28839 <p>By submitting a series of identical requests,<wbr/> the camera device
28840 will eventually have the camera settings applied,<wbr/> but it is
28841 unknown when that exact point will be.<wbr/></p>
28842 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
28843                   </li>
28844                 </ul>
28845
28846             </td> <!-- entry_type -->
28847
28848             <td class="entry_description">
28849               <p>The maximum number of frames that can occur after a request
28850 (different than the previous) has been submitted,<wbr/> and before the
28851 result's state becomes synchronized.<wbr/></p>
28852             </td>
28853
28854             <td class="entry_units">
28855               Frame counts
28856             </td>
28857
28858             <td class="entry_range">
28859               <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
28860             </td>
28861
28862             <td class="entry_hal_version">
28863               <p>3.<wbr/>2</p>
28864             </td>
28865
28866             <td class="entry_tags">
28867               <ul class="entry_tags">
28868                   <li><a href="#tag_V1">V1</a></li>
28869               </ul>
28870             </td>
28871
28872           </tr>
28873           <tr class="entries_header">
28874             <th class="th_details" colspan="6">Details</th>
28875           </tr>
28876           <tr class="entry_cont">
28877             <td class="entry_details" colspan="6">
28878               <p>This defines the maximum distance (in number of metadata results),<wbr/>
28879 between the frame number of the request that has new controls to apply
28880 and the frame number of the result that has all the controls applied.<wbr/></p>
28881 <p>In other words this acts as an upper boundary for how many frames
28882 must occur before the camera device knows for a fact that the new
28883 submitted camera settings have been applied in outgoing frames.<wbr/></p>
28884             </td>
28885           </tr>
28886
28887           <tr class="entries_header">
28888             <th class="th_details" colspan="6">HAL Implementation Details</th>
28889           </tr>
28890           <tr class="entry_cont">
28891             <td class="entry_details" colspan="6">
28892               <p>For example if maxLatency was 2,<wbr/></p>
28893 <pre><code>initial request = X (repeating)
28894 request1 = X
28895 request2 = Y
28896 request3 = Y
28897 request4 = Y
28898
28899 where requestN has frameNumber N,<wbr/> and the first of the repeating
28900 initial request's has frameNumber F (and F &lt; 1).<wbr/>
28901
28902 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28903 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28904 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28905 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28906 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
28907
28908 where resultN has frameNumber N.<wbr/>
28909 </code></pre>
28910 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
28911 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
28912 <code>4 - 2 = 2</code>.<wbr/></p>
28913 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
28914 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
28915 <code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
28916 <p>LIMITED devices are strongly encouraged to use a non-negative
28917 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
28918 to know when sensor settings have been applied.<wbr/></p>
28919             </td>
28920           </tr>
28921
28922           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28923            <!-- end of entry -->
28924         
28925         
28926
28927       <!-- end of kind -->
28928       </tbody>
28929
28930   <!-- end of section -->
28931   <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
28932
28933
28934       <tr><td colspan="7" class="kind">controls</td></tr>
28935
28936       <thead class="entries_header">
28937         <tr>
28938           <th class="th_name">Property Name</th>
28939           <th class="th_type">Type</th>
28940           <th class="th_description">Description</th>
28941           <th class="th_units">Units</th>
28942           <th class="th_range">Range</th>
28943           <th class="th_hal_version">Initial HIDL HAL version</th>
28944           <th class="th_tags">Tags</th>
28945         </tr>
28946       </thead>
28947
28948       <tbody>
28949
28950         
28951
28952         
28953
28954         
28955
28956         
28957
28958                 
28959           <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
28960             <td class="entry_name
28961              " rowspan="3">
28962               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
28963             </td>
28964             <td class="entry_type">
28965                 <span class="entry_type_name">float</span>
28966
28967               <span class="entry_type_visibility"> [java_public]</span>
28968
28969
28970               <span class="entry_type_hwlevel">[limited] </span>
28971
28972
28973
28974
28975             </td> <!-- entry_type -->
28976
28977             <td class="entry_description">
28978               <p>The amount of exposure time increase factor applied to the original output
28979 frame by the application processing before sending for reprocessing.<wbr/></p>
28980             </td>
28981
28982             <td class="entry_units">
28983               Relative exposure time increase factor.<wbr/>
28984             </td>
28985
28986             <td class="entry_range">
28987               <p>&gt;= 1.<wbr/>0</p>
28988             </td>
28989
28990             <td class="entry_hal_version">
28991               <p>3.<wbr/>2</p>
28992             </td>
28993
28994             <td class="entry_tags">
28995               <ul class="entry_tags">
28996                   <li><a href="#tag_REPROC">REPROC</a></li>
28997               </ul>
28998             </td>
28999
29000           </tr>
29001           <tr class="entries_header">
29002             <th class="th_details" colspan="6">Details</th>
29003           </tr>
29004           <tr class="entry_cont">
29005             <td class="entry_details" colspan="6">
29006               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
29007 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
29008 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
29009 output frames to effectively reduce the noise to the same level as a frame that was
29010 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
29011 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
29012 the camera device is that the amount of noise in the image would be approximately what
29013 would be expected if the original capture parameters had been a sensitivity of
29014 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
29015 than S and T respectively.<wbr/> If the captured images were processed by the application
29016 before being sent for reprocessing,<wbr/> then the application may have used image processing
29017 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
29018 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
29019 control,<wbr/> the application can communicate to the camera device the actual noise level
29020 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
29021 device can select appropriate noise reduction and edge enhancement parameters to avoid
29022 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
29023 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
29024 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
29025 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
29026 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
29027 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
29028 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
29029 produce the best quality images.<wbr/></p>
29030 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
29031 buffer in a way that affects its effective exposure time.<wbr/></p>
29032 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
29033 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/>
29034 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
29035 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
29036             </td>
29037           </tr>
29038
29039
29040           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29041            <!-- end of entry -->
29042         
29043         
29044
29045       <!-- end of kind -->
29046       </tbody>
29047       <tr><td colspan="7" class="kind">dynamic</td></tr>
29048
29049       <thead class="entries_header">
29050         <tr>
29051           <th class="th_name">Property Name</th>
29052           <th class="th_type">Type</th>
29053           <th class="th_description">Description</th>
29054           <th class="th_units">Units</th>
29055           <th class="th_range">Range</th>
29056           <th class="th_hal_version">Initial HIDL HAL version</th>
29057           <th class="th_tags">Tags</th>
29058         </tr>
29059       </thead>
29060
29061       <tbody>
29062
29063         
29064
29065         
29066
29067         
29068
29069         
29070
29071                 
29072           <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
29073             <td class="entry_name
29074              " rowspan="3">
29075               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
29076             </td>
29077             <td class="entry_type">
29078                 <span class="entry_type_name">float</span>
29079
29080               <span class="entry_type_visibility"> [java_public]</span>
29081
29082
29083               <span class="entry_type_hwlevel">[limited] </span>
29084
29085
29086
29087
29088             </td> <!-- entry_type -->
29089
29090             <td class="entry_description">
29091               <p>The amount of exposure time increase factor applied to the original output
29092 frame by the application processing before sending for reprocessing.<wbr/></p>
29093             </td>
29094
29095             <td class="entry_units">
29096               Relative exposure time increase factor.<wbr/>
29097             </td>
29098
29099             <td class="entry_range">
29100               <p>&gt;= 1.<wbr/>0</p>
29101             </td>
29102
29103             <td class="entry_hal_version">
29104               <p>3.<wbr/>2</p>
29105             </td>
29106
29107             <td class="entry_tags">
29108               <ul class="entry_tags">
29109                   <li><a href="#tag_REPROC">REPROC</a></li>
29110               </ul>
29111             </td>
29112
29113           </tr>
29114           <tr class="entries_header">
29115             <th class="th_details" colspan="6">Details</th>
29116           </tr>
29117           <tr class="entry_cont">
29118             <td class="entry_details" colspan="6">
29119               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
29120 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
29121 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
29122 output frames to effectively reduce the noise to the same level as a frame that was
29123 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
29124 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
29125 the camera device is that the amount of noise in the image would be approximately what
29126 would be expected if the original capture parameters had been a sensitivity of
29127 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
29128 than S and T respectively.<wbr/> If the captured images were processed by the application
29129 before being sent for reprocessing,<wbr/> then the application may have used image processing
29130 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
29131 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
29132 control,<wbr/> the application can communicate to the camera device the actual noise level
29133 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
29134 device can select appropriate noise reduction and edge enhancement parameters to avoid
29135 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
29136 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
29137 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
29138 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
29139 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
29140 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
29141 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
29142 produce the best quality images.<wbr/></p>
29143 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
29144 buffer in a way that affects its effective exposure time.<wbr/></p>
29145 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
29146 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/>
29147 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
29148 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
29149             </td>
29150           </tr>
29151
29152
29153           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29154            <!-- end of entry -->
29155         
29156         
29157
29158       <!-- end of kind -->
29159       </tbody>
29160       <tr><td colspan="7" class="kind">static</td></tr>
29161
29162       <thead class="entries_header">
29163         <tr>
29164           <th class="th_name">Property Name</th>
29165           <th class="th_type">Type</th>
29166           <th class="th_description">Description</th>
29167           <th class="th_units">Units</th>
29168           <th class="th_range">Range</th>
29169           <th class="th_hal_version">Initial HIDL HAL version</th>
29170           <th class="th_tags">Tags</th>
29171         </tr>
29172       </thead>
29173
29174       <tbody>
29175
29176         
29177
29178         
29179
29180         
29181
29182         
29183
29184                 
29185           <tr class="entry" id="static_android.reprocess.maxCaptureStall">
29186             <td class="entry_name
29187              " rowspan="3">
29188               android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
29189             </td>
29190             <td class="entry_type">
29191                 <span class="entry_type_name">int32</span>
29192
29193               <span class="entry_type_visibility"> [java_public]</span>
29194
29195
29196               <span class="entry_type_hwlevel">[limited] </span>
29197
29198
29199
29200
29201             </td> <!-- entry_type -->
29202
29203             <td class="entry_description">
29204               <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
29205 reprocess capture request.<wbr/></p>
29206             </td>
29207
29208             <td class="entry_units">
29209               Number of frames.<wbr/>
29210             </td>
29211
29212             <td class="entry_range">
29213               <p>&lt;= 4</p>
29214             </td>
29215
29216             <td class="entry_hal_version">
29217               <p>3.<wbr/>2</p>
29218             </td>
29219
29220             <td class="entry_tags">
29221               <ul class="entry_tags">
29222                   <li><a href="#tag_REPROC">REPROC</a></li>
29223               </ul>
29224             </td>
29225
29226           </tr>
29227           <tr class="entries_header">
29228             <th class="th_details" colspan="6">Details</th>
29229           </tr>
29230           <tr class="entry_cont">
29231             <td class="entry_details" colspan="6">
29232               <p>The key describes the maximal interference that one reprocess (input) request
29233 can introduce to the camera simultaneous streaming of regular (output) capture
29234 requests,<wbr/> including repeating requests.<wbr/></p>
29235 <p>When a reprocessing capture request is submitted while a camera output repeating request
29236 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
29237 pipeline for at least one frame duration so that the camera device is unable to process
29238 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
29239 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
29240 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
29241 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
29242 the worst-case number of frame stall introduced by one reprocess request with any kind of
29243 formats/<wbr/>sizes combination.<wbr/></p>
29244 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
29245 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
29246 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
29247 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
29248 YUV_<wbr/>REPROCESSING).<wbr/></p>
29249             </td>
29250           </tr>
29251
29252
29253           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29254            <!-- end of entry -->
29255         
29256         
29257
29258       <!-- end of kind -->
29259       </tbody>
29260
29261   <!-- end of section -->
29262   <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
29263
29264
29265       <tr><td colspan="7" class="kind">static</td></tr>
29266
29267       <thead class="entries_header">
29268         <tr>
29269           <th class="th_name">Property Name</th>
29270           <th class="th_type">Type</th>
29271           <th class="th_description">Description</th>
29272           <th class="th_units">Units</th>
29273           <th class="th_range">Range</th>
29274           <th class="th_hal_version">Initial HIDL HAL version</th>
29275           <th class="th_tags">Tags</th>
29276         </tr>
29277       </thead>
29278
29279       <tbody>
29280
29281         
29282
29283         
29284
29285         
29286
29287         
29288
29289                 
29290           <tr class="entry" id="static_android.depth.maxDepthSamples">
29291             <td class="entry_name
29292              " rowspan="3">
29293               android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
29294             </td>
29295             <td class="entry_type">
29296                 <span class="entry_type_name">int32</span>
29297
29298               <span class="entry_type_visibility"> [system]</span>
29299
29300
29301               <span class="entry_type_hwlevel">[limited] </span>
29302
29303
29304
29305
29306             </td> <!-- entry_type -->
29307
29308             <td class="entry_description">
29309               <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
29310             </td>
29311
29312             <td class="entry_units">
29313             </td>
29314
29315             <td class="entry_range">
29316             </td>
29317
29318             <td class="entry_hal_version">
29319               <p>3.<wbr/>2</p>
29320             </td>
29321
29322             <td class="entry_tags">
29323               <ul class="entry_tags">
29324                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29325               </ul>
29326             </td>
29327
29328           </tr>
29329           <tr class="entries_header">
29330             <th class="th_details" colspan="6">Details</th>
29331           </tr>
29332           <tr class="entry_cont">
29333             <td class="entry_details" colspan="6">
29334               <p>If a camera device supports outputting depth range data in the form of a depth point
29335 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
29336 number of points an output buffer may contain.<wbr/></p>
29337 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
29338 If output in the depth point cloud format is not supported,<wbr/> this entry will
29339 not be defined.<wbr/></p>
29340             </td>
29341           </tr>
29342
29343
29344           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29345            <!-- end of entry -->
29346         
29347                 
29348           <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
29349             <td class="entry_name
29350              " rowspan="3">
29351               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
29352             </td>
29353             <td class="entry_type">
29354                 <span class="entry_type_name entry_type_name_enum">int32</span>
29355                 <span class="entry_type_container">x</span>
29356
29357                 <span class="entry_type_array">
29358                   n x 4
29359                 </span>
29360               <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
29361
29362
29363               <span class="entry_type_hwlevel">[limited] </span>
29364
29365
29366
29367                 <ul class="entry_type_enum">
29368                   <li>
29369                     <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
29370                   </li>
29371                   <li>
29372                     <span class="entry_type_enum_name">INPUT (v3.2)</span>
29373                   </li>
29374                 </ul>
29375
29376             </td> <!-- entry_type -->
29377
29378             <td class="entry_description">
29379               <p>The available depth dataspace stream
29380 configurations that this camera device supports
29381 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
29382             </td>
29383
29384             <td class="entry_units">
29385             </td>
29386
29387             <td class="entry_range">
29388             </td>
29389
29390             <td class="entry_hal_version">
29391               <p>3.<wbr/>2</p>
29392             </td>
29393
29394             <td class="entry_tags">
29395               <ul class="entry_tags">
29396                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29397               </ul>
29398             </td>
29399
29400           </tr>
29401           <tr class="entries_header">
29402             <th class="th_details" colspan="6">Details</th>
29403           </tr>
29404           <tr class="entry_cont">
29405             <td class="entry_details" colspan="6">
29406               <p>These are output stream configurations for use with
29407 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
29408 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
29409 <p>Only devices that support depth output for at least
29410 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
29411 this entry.<wbr/></p>
29412 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
29413 sparse depth point cloud must report a single entry for
29414 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
29415 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
29416 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
29417             </td>
29418           </tr>
29419
29420
29421           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29422            <!-- end of entry -->
29423         
29424                 
29425           <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
29426             <td class="entry_name
29427              " rowspan="3">
29428               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
29429             </td>
29430             <td class="entry_type">
29431                 <span class="entry_type_name">int64</span>
29432                 <span class="entry_type_container">x</span>
29433
29434                 <span class="entry_type_array">
29435                   4 x n
29436                 </span>
29437               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29438
29439
29440               <span class="entry_type_hwlevel">[limited] </span>
29441
29442
29443
29444
29445             </td> <!-- entry_type -->
29446
29447             <td class="entry_description">
29448               <p>This lists the minimum frame duration for each
29449 format/<wbr/>size combination for depth output formats.<wbr/></p>
29450             </td>
29451
29452             <td class="entry_units">
29453               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29454             </td>
29455
29456             <td class="entry_range">
29457             </td>
29458
29459             <td class="entry_hal_version">
29460               <p>3.<wbr/>2</p>
29461             </td>
29462
29463             <td class="entry_tags">
29464               <ul class="entry_tags">
29465                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29466               </ul>
29467             </td>
29468
29469           </tr>
29470           <tr class="entries_header">
29471             <th class="th_details" colspan="6">Details</th>
29472           </tr>
29473           <tr class="entry_cont">
29474             <td class="entry_details" colspan="6">
29475               <p>This should correspond to the frame duration when only that
29476 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
29477 set to either OFF or FAST.<wbr/></p>
29478 <p>When multiple streams are used in a request,<wbr/> the minimum frame
29479 duration will be max(individual stream min durations).<wbr/></p>
29480 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
29481 is the same regardless of whether the stream is input or output.<wbr/></p>
29482 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
29483 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
29484 calculating the max frame rate.<wbr/></p>
29485             </td>
29486           </tr>
29487
29488
29489           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29490            <!-- end of entry -->
29491         
29492                 
29493           <tr class="entry" id="static_android.depth.availableDepthStallDurations">
29494             <td class="entry_name
29495              " rowspan="3">
29496               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
29497             </td>
29498             <td class="entry_type">
29499                 <span class="entry_type_name">int64</span>
29500                 <span class="entry_type_container">x</span>
29501
29502                 <span class="entry_type_array">
29503                   4 x n
29504                 </span>
29505               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29506
29507
29508               <span class="entry_type_hwlevel">[limited] </span>
29509
29510
29511
29512
29513             </td> <!-- entry_type -->
29514
29515             <td class="entry_description">
29516               <p>This lists the maximum stall duration for each
29517 output format/<wbr/>size combination for depth streams.<wbr/></p>
29518             </td>
29519
29520             <td class="entry_units">
29521               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29522             </td>
29523
29524             <td class="entry_range">
29525             </td>
29526
29527             <td class="entry_hal_version">
29528               <p>3.<wbr/>2</p>
29529             </td>
29530
29531             <td class="entry_tags">
29532               <ul class="entry_tags">
29533                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29534               </ul>
29535             </td>
29536
29537           </tr>
29538           <tr class="entries_header">
29539             <th class="th_details" colspan="6">Details</th>
29540           </tr>
29541           <tr class="entry_cont">
29542             <td class="entry_details" colspan="6">
29543               <p>A stall duration is how much extra time would get added
29544 to the normal minimum frame duration for a repeating request
29545 that has streams with non-zero stall.<wbr/></p>
29546 <p>This functions similarly to
29547 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
29548 streams.<wbr/></p>
29549 <p>All depth output stream formats may have a nonzero stall
29550 duration.<wbr/></p>
29551             </td>
29552           </tr>
29553
29554
29555           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29556            <!-- end of entry -->
29557         
29558                 
29559           <tr class="entry" id="static_android.depth.depthIsExclusive">
29560             <td class="entry_name
29561              " rowspan="3">
29562               android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
29563             </td>
29564             <td class="entry_type">
29565                 <span class="entry_type_name entry_type_name_enum">byte</span>
29566
29567               <span class="entry_type_visibility"> [public as boolean]</span>
29568
29569
29570               <span class="entry_type_hwlevel">[limited] </span>
29571
29572
29573
29574                 <ul class="entry_type_enum">
29575                   <li>
29576                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
29577                   </li>
29578                   <li>
29579                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
29580                   </li>
29581                 </ul>
29582
29583             </td> <!-- entry_type -->
29584
29585             <td class="entry_description">
29586               <p>Indicates whether a capture request may target both a
29587 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
29588 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
29589             </td>
29590
29591             <td class="entry_units">
29592             </td>
29593
29594             <td class="entry_range">
29595             </td>
29596
29597             <td class="entry_hal_version">
29598               <p>3.<wbr/>2</p>
29599             </td>
29600
29601             <td class="entry_tags">
29602             </td>
29603
29604           </tr>
29605           <tr class="entries_header">
29606             <th class="th_details" colspan="6">Details</th>
29607           </tr>
29608           <tr class="entry_cont">
29609             <td class="entry_details" colspan="6">
29610               <p>If TRUE,<wbr/> including both depth and color outputs in a single
29611 capture request is not supported.<wbr/> An application must interleave color
29612 and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
29613 of output.<wbr/></p>
29614 <p>Typically,<wbr/> this restriction exists on camera devices that
29615 need to emit a specific pattern or wavelength of light to
29616 measure depth values,<wbr/> which causes the color image to be
29617 corrupted during depth measurement.<wbr/></p>
29618             </td>
29619           </tr>
29620
29621
29622           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29623            <!-- end of entry -->
29624         
29625         
29626
29627       <!-- end of kind -->
29628       </tbody>
29629
29630   <!-- end of section -->
29631   <tr><td colspan="7" id="section_logicalMultiCamera" class="section">logicalMultiCamera</td></tr>
29632
29633
29634       <tr><td colspan="7" class="kind">static</td></tr>
29635
29636       <thead class="entries_header">
29637         <tr>
29638           <th class="th_name">Property Name</th>
29639           <th class="th_type">Type</th>
29640           <th class="th_description">Description</th>
29641           <th class="th_units">Units</th>
29642           <th class="th_range">Range</th>
29643           <th class="th_hal_version">Initial HIDL HAL version</th>
29644           <th class="th_tags">Tags</th>
29645         </tr>
29646       </thead>
29647
29648       <tbody>
29649
29650         
29651
29652         
29653
29654         
29655
29656         
29657
29658                 
29659           <tr class="entry" id="static_android.logicalMultiCamera.physicalIds">
29660             <td class="entry_name
29661              " rowspan="3">
29662               android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids
29663             </td>
29664             <td class="entry_type">
29665                 <span class="entry_type_name">byte</span>
29666                 <span class="entry_type_container">x</span>
29667
29668                 <span class="entry_type_array">
29669                   n
29670                 </span>
29671               <span class="entry_type_visibility"> [hidden]</span>
29672
29673
29674               <span class="entry_type_hwlevel">[limited] </span>
29675
29676
29677
29678
29679             </td> <!-- entry_type -->
29680
29681             <td class="entry_description">
29682               <p>String containing the ids of the underlying physical cameras.<wbr/></p>
29683             </td>
29684
29685             <td class="entry_units">
29686               UTF-8 null-terminated string
29687             </td>
29688
29689             <td class="entry_range">
29690             </td>
29691
29692             <td class="entry_hal_version">
29693               <p>3.<wbr/>3</p>
29694             </td>
29695
29696             <td class="entry_tags">
29697               <ul class="entry_tags">
29698                   <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
29699               </ul>
29700             </td>
29701
29702           </tr>
29703           <tr class="entries_header">
29704             <th class="th_details" colspan="6">Details</th>
29705           </tr>
29706           <tr class="entry_cont">
29707             <td class="entry_details" colspan="6">
29708               <p>For a logical camera,<wbr/> this is concatenation of all underlying physical camera ids.<wbr/>
29709 The null terminator for physical camera id must be preserved so that the whole string
29710 can be tokenized using '\0' to generate list of physical camera ids.<wbr/></p>
29711 <p>For example,<wbr/> if the physical camera ids of the logical camera are "2" and "3",<wbr/> the
29712 value of this tag will be ['2',<wbr/> '\0',<wbr/> '3',<wbr/> '\0'].<wbr/></p>
29713 <p>The number of physical camera ids must be no less than 2.<wbr/></p>
29714             </td>
29715           </tr>
29716
29717
29718           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29719            <!-- end of entry -->
29720         
29721                 
29722           <tr class="entry" id="static_android.logicalMultiCamera.sensorSyncType">
29723             <td class="entry_name
29724              " rowspan="3">
29725               android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type
29726             </td>
29727             <td class="entry_type">
29728                 <span class="entry_type_name entry_type_name_enum">byte</span>
29729
29730               <span class="entry_type_visibility"> [public]</span>
29731
29732
29733               <span class="entry_type_hwlevel">[limited] </span>
29734
29735
29736
29737                 <ul class="entry_type_enum">
29738                   <li>
29739                     <span class="entry_type_enum_name">APPROXIMATE (v3.3)</span>
29740                     <span class="entry_type_enum_notes"><p>A software mechanism is used to synchronize between the physical cameras.<wbr/> As a result,<wbr/>
29741 the timestamp of an image from a physical stream is only an approximation of the
29742 image sensor start-of-exposure time.<wbr/></p></span>
29743                   </li>
29744                   <li>
29745                     <span class="entry_type_enum_name">CALIBRATED (v3.3)</span>
29746                     <span class="entry_type_enum_notes"><p>The camera device supports frame timestamp synchronization at the hardware level,<wbr/>
29747 and the timestamp of a physical stream image accurately reflects its
29748 start-of-exposure time.<wbr/></p></span>
29749                   </li>
29750                 </ul>
29751
29752             </td> <!-- entry_type -->
29753
29754             <td class="entry_description">
29755               <p>The accuracy of frame timestamp synchronization between physical cameras</p>
29756             </td>
29757
29758             <td class="entry_units">
29759             </td>
29760
29761             <td class="entry_range">
29762             </td>
29763
29764             <td class="entry_hal_version">
29765               <p>3.<wbr/>3</p>
29766             </td>
29767
29768             <td class="entry_tags">
29769               <ul class="entry_tags">
29770                   <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
29771               </ul>
29772             </td>
29773
29774           </tr>
29775           <tr class="entries_header">
29776             <th class="th_details" colspan="6">Details</th>
29777           </tr>
29778           <tr class="entry_cont">
29779             <td class="entry_details" colspan="6">
29780               <p>The accuracy of the frame timestamp synchronization determines the physical cameras'
29781 ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/>
29782 the physical camera sensors usually run in master-slave mode so that their shutter
29783 time is synchronized.<wbr/> For APPROXIMATE sensorSyncType,<wbr/> the camera sensors usually run in
29784 master-master mode,<wbr/> and there could be offset between their start of exposure.<wbr/></p>
29785 <p>In both cases,<wbr/> all images generated for a particular capture request still carry the same
29786 timestamps,<wbr/> so that they can be used to look up the matching frame number and
29787 onCaptureStarted callback.<wbr/></p>
29788             </td>
29789           </tr>
29790
29791
29792           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29793            <!-- end of entry -->
29794         
29795         
29796
29797       <!-- end of kind -->
29798       </tbody>
29799
29800   <!-- end of section -->
29801   <tr><td colspan="7" id="section_distortionCorrection" class="section">distortionCorrection</td></tr>
29802
29803
29804       <tr><td colspan="7" class="kind">controls</td></tr>
29805
29806       <thead class="entries_header">
29807         <tr>
29808           <th class="th_name">Property Name</th>
29809           <th class="th_type">Type</th>
29810           <th class="th_description">Description</th>
29811           <th class="th_units">Units</th>
29812           <th class="th_range">Range</th>
29813           <th class="th_hal_version">Initial HIDL HAL version</th>
29814           <th class="th_tags">Tags</th>
29815         </tr>
29816       </thead>
29817
29818       <tbody>
29819
29820         
29821
29822         
29823
29824         
29825
29826         
29827
29828                 
29829           <tr class="entry" id="controls_android.distortionCorrection.mode">
29830             <td class="entry_name
29831              " rowspan="3">
29832               android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
29833             </td>
29834             <td class="entry_type">
29835                 <span class="entry_type_name entry_type_name_enum">byte</span>
29836
29837               <span class="entry_type_visibility"> [public]</span>
29838
29839
29840
29841
29842
29843                 <ul class="entry_type_enum">
29844                   <li>
29845                     <span class="entry_type_enum_name">OFF (v3.3)</span>
29846                     <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
29847                   </li>
29848                   <li>
29849                     <span class="entry_type_enum_name">FAST (v3.3)</span>
29850                     <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
29851 relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
29852 reduce frame rate relative to sensor.<wbr/></p></span>
29853                   </li>
29854                   <li>
29855                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
29856                     <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
29857 possibly reduced frame rate relative to sensor output.<wbr/></p></span>
29858                   </li>
29859                 </ul>
29860
29861             </td> <!-- entry_type -->
29862
29863             <td class="entry_description">
29864               <p>Mode of operation for the lens distortion correction block.<wbr/></p>
29865             </td>
29866
29867             <td class="entry_units">
29868             </td>
29869
29870             <td class="entry_range">
29871               <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
29872             </td>
29873
29874             <td class="entry_hal_version">
29875               <p>3.<wbr/>3</p>
29876             </td>
29877
29878             <td class="entry_tags">
29879             </td>
29880
29881           </tr>
29882           <tr class="entries_header">
29883             <th class="th_details" colspan="6">Details</th>
29884           </tr>
29885           <tr class="entry_cont">
29886             <td class="entry_details" colspan="6">
29887               <p>The lens distortion correction block attempts to improve image quality by fixing
29888 radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/>  If
29889 available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
29890 <p>OFF means no distortion correction is done.<wbr/></p>
29891 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
29892 applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
29893 correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
29894 will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
29895 any correction at all would slow down capture rate.<wbr/>  Every output stream will have a
29896 similar amount of enhancement applied.<wbr/></p>
29897 <p>The correction only applies to processed outputs such as YUV,<wbr/> JPEG,<wbr/> or DEPTH16; it is not
29898 applied to any RAW output.<wbr/>  Metadata coordinates such as face rectangles or metering
29899 regions are also not affected by correction.<wbr/></p>
29900 <p>Applications enabling distortion correction need to pay extra attention when converting
29901 image coordinates between corrected output buffers and the sensor array.<wbr/> For example,<wbr/> if
29902 the app supports tap-to-focus and enables correction,<wbr/> it then has to apply the distortion
29903 model described in <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> to the image buffer tap coordinates to properly
29904 calculate the tap position on the sensor active array to be used with
29905 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/> The same applies in reverse to detected face rectangles if
29906 they need to be drawn on top of the corrected output buffers.<wbr/></p>
29907             </td>
29908           </tr>
29909
29910
29911           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29912            <!-- end of entry -->
29913         
29914         
29915
29916       <!-- end of kind -->
29917       </tbody>
29918       <tr><td colspan="7" class="kind">static</td></tr>
29919
29920       <thead class="entries_header">
29921         <tr>
29922           <th class="th_name">Property Name</th>
29923           <th class="th_type">Type</th>
29924           <th class="th_description">Description</th>
29925           <th class="th_units">Units</th>
29926           <th class="th_range">Range</th>
29927           <th class="th_hal_version">Initial HIDL HAL version</th>
29928           <th class="th_tags">Tags</th>
29929         </tr>
29930       </thead>
29931
29932       <tbody>
29933
29934         
29935
29936         
29937
29938         
29939
29940         
29941
29942                 
29943           <tr class="entry" id="static_android.distortionCorrection.availableModes">
29944             <td class="entry_name
29945              " rowspan="5">
29946               android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes
29947             </td>
29948             <td class="entry_type">
29949                 <span class="entry_type_name">byte</span>
29950                 <span class="entry_type_container">x</span>
29951
29952                 <span class="entry_type_array">
29953                   n
29954                 </span>
29955               <span class="entry_type_visibility"> [public as enumList]</span>
29956
29957
29958
29959
29960                 <div class="entry_type_notes">list of enums</div>
29961
29962
29963             </td> <!-- entry_type -->
29964
29965             <td class="entry_description">
29966               <p>List of distortion correction modes for <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> that are
29967 supported by this camera device.<wbr/></p>
29968             </td>
29969
29970             <td class="entry_units">
29971             </td>
29972
29973             <td class="entry_range">
29974               <p>Any value listed in <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a></p>
29975             </td>
29976
29977             <td class="entry_hal_version">
29978               <p>3.<wbr/>3</p>
29979             </td>
29980
29981             <td class="entry_tags">
29982               <ul class="entry_tags">
29983                   <li><a href="#tag_V1">V1</a></li>
29984                   <li><a href="#tag_REPROC">REPROC</a></li>
29985               </ul>
29986             </td>
29987
29988           </tr>
29989           <tr class="entries_header">
29990             <th class="th_details" colspan="6">Details</th>
29991           </tr>
29992           <tr class="entry_cont">
29993             <td class="entry_details" colspan="6">
29994               <p>No device is required to support this API; such devices will always list only 'OFF'.<wbr/>
29995 All devices that support this API will list both FAST and HIGH_<wbr/>QUALITY.<wbr/></p>
29996             </td>
29997           </tr>
29998
29999           <tr class="entries_header">
30000             <th class="th_details" colspan="6">HAL Implementation Details</th>
30001           </tr>
30002           <tr class="entry_cont">
30003             <td class="entry_details" colspan="6">
30004               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if distortion correction is available
30005 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
30006 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
30007 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
30008             </td>
30009           </tr>
30010
30011           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30012            <!-- end of entry -->
30013         
30014         
30015
30016       <!-- end of kind -->
30017       </tbody>
30018       <tr><td colspan="7" class="kind">dynamic</td></tr>
30019
30020       <thead class="entries_header">
30021         <tr>
30022           <th class="th_name">Property Name</th>
30023           <th class="th_type">Type</th>
30024           <th class="th_description">Description</th>
30025           <th class="th_units">Units</th>
30026           <th class="th_range">Range</th>
30027           <th class="th_hal_version">Initial HIDL HAL version</th>
30028           <th class="th_tags">Tags</th>
30029         </tr>
30030       </thead>
30031
30032       <tbody>
30033
30034         
30035
30036         
30037
30038         
30039
30040         
30041
30042                 
30043           <tr class="entry" id="dynamic_android.distortionCorrection.mode">
30044             <td class="entry_name
30045              " rowspan="3">
30046               android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
30047             </td>
30048             <td class="entry_type">
30049                 <span class="entry_type_name entry_type_name_enum">byte</span>
30050
30051               <span class="entry_type_visibility"> [public]</span>
30052
30053
30054
30055
30056
30057                 <ul class="entry_type_enum">
30058                   <li>
30059                     <span class="entry_type_enum_name">OFF (v3.3)</span>
30060                     <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
30061                   </li>
30062                   <li>
30063                     <span class="entry_type_enum_name">FAST (v3.3)</span>
30064                     <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
30065 relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
30066 reduce frame rate relative to sensor.<wbr/></p></span>
30067                   </li>
30068                   <li>
30069                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
30070                     <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
30071 possibly reduced frame rate relative to sensor output.<wbr/></p></span>
30072                   </li>
30073                 </ul>
30074
30075             </td> <!-- entry_type -->
30076
30077             <td class="entry_description">
30078               <p>Mode of operation for the lens distortion correction block.<wbr/></p>
30079             </td>
30080
30081             <td class="entry_units">
30082             </td>
30083
30084             <td class="entry_range">
30085               <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
30086             </td>
30087
30088             <td class="entry_hal_version">
30089               <p>3.<wbr/>3</p>
30090             </td>
30091
30092             <td class="entry_tags">
30093             </td>
30094
30095           </tr>
30096           <tr class="entries_header">
30097             <th class="th_details" colspan="6">Details</th>
30098           </tr>
30099           <tr class="entry_cont">
30100             <td class="entry_details" colspan="6">
30101               <p>The lens distortion correction block attempts to improve image quality by fixing
30102 radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/>  If
30103 available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
30104 <p>OFF means no distortion correction is done.<wbr/></p>
30105 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
30106 applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
30107 correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
30108 will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
30109 any correction at all would slow down capture rate.<wbr/>  Every output stream will have a
30110 similar amount of enhancement applied.<wbr/></p>
30111 <p>The correction only applies to processed outputs such as YUV,<wbr/> JPEG,<wbr/> or DEPTH16; it is not
30112 applied to any RAW output.<wbr/>  Metadata coordinates such as face rectangles or metering
30113 regions are also not affected by correction.<wbr/></p>
30114 <p>Applications enabling distortion correction need to pay extra attention when converting
30115 image coordinates between corrected output buffers and the sensor array.<wbr/> For example,<wbr/> if
30116 the app supports tap-to-focus and enables correction,<wbr/> it then has to apply the distortion
30117 model described in <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> to the image buffer tap coordinates to properly
30118 calculate the tap position on the sensor active array to be used with
30119 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/> The same applies in reverse to detected face rectangles if
30120 they need to be drawn on top of the corrected output buffers.<wbr/></p>
30121             </td>
30122           </tr>
30123
30124
30125           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30126            <!-- end of entry -->
30127         
30128         
30129
30130       <!-- end of kind -->
30131       </tbody>
30132
30133   <!-- end of section -->
30134 <!-- </namespace> -->
30135   </table>
30136
30137   <div class="tags" id="tag_index">
30138     <h2>Tags</h2>
30139     <ul>
30140       <li id="tag_BC">BC - 
30141         Needed for backwards compatibility with old Java API
30142     
30143         <ul class="tags_entries">
30144           <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
30145           <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
30146           <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
30147           <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
30148           <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
30149           <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
30150           <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
30151           <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
30152           <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
30153           <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
30154           <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
30155           <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
30156           <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
30157           <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
30158           <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
30159           <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
30160           <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
30161           <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
30162           <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
30163           <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
30164           <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
30165           <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
30166           <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
30167           <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
30168           <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
30169           <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
30170           <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
30171           <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
30172           <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
30173           <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
30174           <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
30175           <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
30176           <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
30177           <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
30178           <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
30179           <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
30180           <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
30181           <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
30182           <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
30183           <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
30184           <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
30185           <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
30186           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
30187           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
30188           <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
30189           <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
30190           <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
30191           <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
30192           <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
30193           <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
30194           <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
30195           <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
30196           <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
30197           <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
30198           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
30199           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
30200           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
30201           <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
30202           <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
30203           <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
30204           <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
30205           <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
30206           <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
30207           <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
30208           <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
30209           <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
30210           <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
30211         </ul>
30212       </li> <!-- tag_BC -->
30213       <li id="tag_V1">V1 - 
30214         New features for first camera 2 release (API1)
30215     
30216         <ul class="tags_entries">
30217           <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
30218           <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
30219           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
30220           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
30221           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
30222           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
30223           <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
30224           <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
30225           <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
30226           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
30227           <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
30228           <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
30229           <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
30230           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
30231           <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
30232           <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
30233           <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
30234           <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
30235           <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
30236           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
30237           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
30238           <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
30239           <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
30240           <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
30241           <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
30242           <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
30243           <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
30244           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
30245           <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
30246           <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
30247           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
30248           <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
30249           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
30250           <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
30251           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
30252           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
30253           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
30254           <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
30255           <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
30256           <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
30257           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
30258           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
30259           <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
30260           <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
30261           <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
30262           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
30263         </ul>
30264       </li> <!-- tag_V1 -->
30265       <li id="tag_RAW">RAW - 
30266         Needed for useful RAW image processing and DNG file support
30267     
30268         <ul class="tags_entries">
30269           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
30270           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
30271           <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
30272           <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
30273           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
30274           <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
30275           <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
30276           <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
30277           <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
30278           <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
30279           <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
30280           <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
30281           <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
30282           <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
30283           <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
30284           <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
30285           <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
30286           <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
30287           <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
30288           <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
30289           <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
30290           <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
30291           <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
30292           <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
30293           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
30294           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
30295           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
30296           <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
30297           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
30298         </ul>
30299       </li> <!-- tag_RAW -->
30300       <li id="tag_HAL2">HAL2 - 
30301         Entry is only used by camera device legacy HAL 2.x
30302     
30303         <ul class="tags_entries">
30304           <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
30305           <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
30306           <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
30307           <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
30308           <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
30309         </ul>
30310       </li> <!-- tag_HAL2 -->
30311       <li id="tag_FULL">FULL - 
30312         Entry is required for full hardware level devices, and optional for other hardware levels
30313     
30314         <ul class="tags_entries">
30315           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
30316         </ul>
30317       </li> <!-- tag_FULL -->
30318       <li id="tag_DEPTH">DEPTH - 
30319         Entry is required for the depth capability.
30320     
30321         <ul class="tags_entries">
30322           <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
30323           <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
30324           <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
30325           <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
30326           <li><a href="#static_android.lens.distortion">android.lens.distortion</a> (static)</li>
30327           <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
30328           <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
30329           <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
30330           <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
30331         </ul>
30332       </li> <!-- tag_DEPTH -->
30333       <li id="tag_REPROC">REPROC - 
30334         Entry is required for the YUV or PRIVATE reprocessing capability.
30335     
30336         <ul class="tags_entries">
30337           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
30338           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
30339           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
30340           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
30341           <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
30342           <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
30343           <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
30344           <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
30345           <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
30346           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
30347           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
30348         </ul>
30349       </li> <!-- tag_REPROC -->
30350       <li id="tag_LOGICALCAMERA">LOGICALCAMERA - 
30351         Entry is required for logical multi-camera capability.
30352     
30353         <ul class="tags_entries">
30354           <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li>
30355           <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li>
30356         </ul>
30357       </li> <!-- tag_LOGICALCAMERA -->
30358       <li id="tag_FUTURE">FUTURE - 
30359         Entry is  under-specified and is not required for now. This is for book-keeping purpose,
30360         do not implement or use it, it may be revised for future.
30361     
30362         <ul class="tags_entries">
30363           <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
30364           <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
30365           <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
30366           <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
30367           <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
30368           <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
30369           <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
30370           <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
30371           <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
30372           <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
30373           <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
30374           <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
30375           <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
30376           <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
30377           <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
30378           <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
30379           <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
30380           <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
30381           <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
30382           <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
30383           <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
30384         </ul>
30385       </li> <!-- tag_FUTURE -->
30386     </ul>
30387   </div>
30388
30389   [ <a href="#">top</a> ]
30390
30391 </body>
30392 </html>